def encrypt(self, plaintext): assert(len(plaintext) % 16 == 0) context = self._createContext(1) ciphertext = m2.cipher_update(context, plaintext) m2.cipher_ctx_free(context) self.IV = ciphertext[-self.block_size:] return bytearray(ciphertext)
def encrypt(self, plaintext): assert(len(plaintext) % 8 == 0) if not plaintext: return '' context = self._createContext(1) ciphertext = m2.cipher_update(context, plaintext) m2.cipher_ctx_free(context) self.IV = ciphertext[-self.block_size:] return ciphertext
def encrypt(self, plaintext): assert (len(plaintext) % 8 == 0) if not plaintext: return '' context = self._createContext(1) ciphertext = m2.cipher_update(context, plaintext) m2.cipher_ctx_free(context) self.IV = ciphertext[-self.block_size:] return ciphertext
def decrypt(self, ciphertext): assert(len(ciphertext) % 16 == 0) context = self._createContext(0) #I think M2Crypto has a bug - it fails to decrypt and return the last block passed in. #To work around this, we append sixteen zeros to the string, below: plaintext = m2.cipher_update(context, ciphertext+('\0'*16)) #If this bug is ever fixed, then plaintext will end up having a garbage #plaintext block on the end. That's okay - the below code will discard it. plaintext = plaintext[:len(ciphertext)] m2.cipher_ctx_free(context) self.IV = ciphertext[-self.block_size:] return bytearray(plaintext)
def update(self, data): # type: (bytes) -> bytes return m2.cipher_update(self.ctx, data)
def update(self, data): return m2.cipher_update(self.ctx, data)