Source code for dfvfs.encryption.des3_decrypter

# -*- coding: utf-8 -*-
"""The triple DES decrypter implementation."""

from cryptography.hazmat.primitives.ciphers import algorithms

from dfvfs.encryption import decrypter
from dfvfs.encryption import manager
from dfvfs.lib import definitions


[docs]class DES3Decrypter(decrypter.CryptographyBlockCipherDecrypter): """Triple DES decrypter using Cryptography.""" ENCRYPTION_METHOD = definitions.ENCRYPTION_METHOD_DES3 _ENCRYPTION_MODES = frozenset([ definitions.ENCRYPTION_MODE_CBC, definitions.ENCRYPTION_MODE_CFB, definitions.ENCRYPTION_MODE_ECB, definitions.ENCRYPTION_MODE_OFB]) def __init__( self, cipher_mode=None, initialization_vector=None, key=None, **kwargs): """Initializes a decrypter. Args: cipher_mode (Optional[str]): cipher mode. initialization_vector (Optional[bytes]): initialization vector. key (Optional[bytes]): key. kwargs (dict): keyword arguments depending on the decrypter. Raises: ValueError: when key is not set or the cipher mode is not supported. """ if not key: raise ValueError('Missing key.') if cipher_mode not in self._ENCRYPTION_MODES: raise ValueError(f'Unsupported cipher mode: {cipher_mode!s}') algorithm = algorithms.TripleDES(key) super(DES3Decrypter, self).__init__( algorithm=algorithm, cipher_mode=cipher_mode, initialization_vector=initialization_vector, **kwargs)
manager.EncryptionManager.RegisterDecrypter(DES3Decrypter)