def decrypt_and_parse_lines(fd, parser, config, newlines=False, decode='utf-8', passphrase=None, gpgi=None, _raise=IOError, error_cb=None): import mailpile.crypto.streamer as cstrm symmetric_key = config and config.get_master_key() or 'missing' passphrase_reader = (passphrase.get_reader() if (passphrase is not None) else (config.passphrases['DEFAULT'].get_reader() if (config is not None) else None)) if not newlines: if decode: _parser = lambda ll: parser((l.rstrip('\r\n').decode(decode) for l in ll)) else: _parser = lambda ll: parser((l.rstrip('\r\n') for l in ll)) elif decode: _parser = lambda ll: parser((l.decode(decode) for l in ll)) else: _parser = parser for line in fd: if cstrm.PartialDecryptingStreamer.StartEncrypted(line): with cstrm.PartialDecryptingStreamer( [line], fd, name='decrypt_and_parse', mep_key=symmetric_key, gpg_pass=passphrase_reader, gpgi=gpgi) as pdsfd: _parser(pdsfd) if not pdsfd.verify(_raise=_raise) and error_cb: error_cb(fd.tell()) else: _parser([line])
def decrypt_and_parse_lines(fd, parser, config, newlines=False, decode='utf-8', _raise=IOError): import mailpile.crypto.streamer as cstrm symmetric_key = config and config.master_key or 'missing' if not newlines: if decode: _parser = lambda ll: parser( (l.rstrip('\r\n').decode(decode) for l in ll)) else: _parser = lambda ll: parser((l.rstrip('\r\n') for l in ll)) elif decode: _parser = lambda ll: parser((l.decode(decode) for l in ll)) else: _parser = parser for line in fd: if cstrm.PartialDecryptingStreamer.StartEncrypted(line): with cstrm.PartialDecryptingStreamer( [line], fd, name='decrypt_and_parse', mep_key=symmetric_key, gpg_pass=(config.gnupg_passphrase.get_reader() if config else None)) as pdsfd: _parser(pdsfd) pdsfd.verify(_raise=_raise) else: _parser([line])
def decrypt_and_parse_lines(fd, parser, config, newlines=False, decode='utf-8'): import mailpile.crypto.streamer as cstrm begin_sym = cstrm.PartialDecryptingStreamer.BEGIN_MED[:-1] begin_pgp = cstrm.PartialDecryptingStreamer.BEGIN_PGP[:-1] symmetric_key = config and config.prefs.obfuscate_index or 'missing' if not newlines: if decode: _parser = lambda ll: parser( (l.rstrip('\r\n').decode(decode) for l in ll)) else: _parser = lambda ll: parser((l.rstrip('\r\n') for l in ll)) elif decode: _parser = lambda ll: parser((l.decode(decode) for l in ll)) else: _parser = parser for line in fd: if cstrm.PartialDecryptingStreamer.StartEncrypted(line): with cstrm.PartialDecryptingStreamer([line], symmetric_key, fd) as pdsfd: _parser(pdsfd) else: _parser([line])