def __init__(self, fd, mep_key=None, gpg_pass=None, md5sum=None, cipher=None, name=None, long_running=False): self.expected_outer_md5sum = md5sum self.expected_inner_md5sum = None self.name = name self.outer_md5 = hashlib.md5() self.inner_md5 = hashlib.md5() self.cipher = self.DEFAULT_CIPHER self.state = self.STATE_BEGIN self.buffered = '' self.mep_key = mep_key self.gpg_pass = gpg_pass # Start reading our data... self.startup_lock = CryptoLock() self.startup_lock.acquire() self.data_filter = self._mk_data_filter(fd, self._read_data, self.startup_lock.release) self.read_fd = self.data_filter.reader() try: # Once the header has been processed (_read_data() will release # the lock), fork out our coprocess. self.startup_lock.acquire() InputCoprocess.__init__(self, self._mk_command(), self.read_fd, name=name, long_running=long_running) self.startup_lock = None except: try: self.data_filter.join(aborting=True) self.data_filter.close() except (IOError, OSError): pass raise
def __init__(self, fd, mep_key=None, gpg_pass=None, sha256=None, cipher=None, name=None, long_running=False, gpgi=None, md_alg=None): self.expected_outer_sha256 = sha256 self.expected_inner_sha256 = None self.expected_inner_md5sum = None self.name = name self.outer_sha = hashlib.sha256() self.inner_sha = hashlib.sha256() self.inner_md5 = hashlib.md5() self.cipher = self.PREFERRED_CIPHER or PREFERRED_CIPHER self.md_alg = md_alg or OPENSSL_MD_ALG self.state = self.STATE_BEGIN self.buffered = '' self.mep_version = None self.mep_mutated = None self.mep_key = mep_key self.gpg_pass = gpg_pass self.gpgi = gpgi self.decryptor = None self.decoder = None self.decoder_data_bytes = 0 # Not counting white-space # Start reading our data... self.startup_lock = CryptoLock() self.startup_lock.acquire() self.data_filter = self._mk_data_filter(fd, self._read_data, self.startup_lock.release) self.read_fd = self.data_filter.reader() try: # Once the header has been processed (_read_data() will release # the lock), fork out our coprocess. self.startup_lock.acquire() InputCoprocess.__init__(self, self._mk_command(), self.read_fd, name=name, long_running=long_running) except: try: self.data_filter.join(aborting=True) self.data_filter.close() except (IOError, OSError): pass raise finally: self.startup_lock.release() self.startup_lock = None