in src/dynamodb_encryption_sdk/internal/crypto/jce_bridge/primitives.py [0:0]
def decrypt(self, key, data, mode, padding):
# this can be disabled by _disable_encryption, so pylint: disable=method-hidden
"""Decrypt data using the supplied values.
:param bytes key: Loaded decryption key
:param bytes data: IV prepended to encrypted data
:param JavaMode mode: Decryption mode to use
:param JavaPadding padding: Padding mode to use
:returns: Decrypted data
:rtype: bytes
"""
try:
block_size = self.cipher.block_size
iv_len = block_size // 8
iv = data[:iv_len]
data = data[iv_len:]
decryptor = Cipher(self.cipher(key), mode.build(iv), backend=default_backend()).decryptor()
decrypted_data = decryptor.update(data) + decryptor.finalize()
unpadder = padding.build(block_size).unpadder()
return unpadder.update(decrypted_data) + unpadder.finalize()
except Exception:
error_message = "Decryption failed"
_LOGGER.exception(error_message)
raise DecryptionError(error_message)