| | |
| | |
| | |
| |
|
| | from __future__ import annotations |
| |
|
| | from cryptography.hazmat.primitives._cipheralgorithm import ( |
| | BlockCipherAlgorithm, |
| | CipherAlgorithm, |
| | _verify_key_size, |
| | ) |
| |
|
| |
|
| | class ARC4(CipherAlgorithm): |
| | name = "RC4" |
| | key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | class TripleDES(BlockCipherAlgorithm): |
| | name = "3DES" |
| | block_size = 64 |
| | key_sizes = frozenset([64, 128, 192]) |
| |
|
| | def __init__(self, key: bytes): |
| | if len(key) == 8: |
| | key += key + key |
| | elif len(key) == 16: |
| | key += key[:8] |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | |
| | class _DES: |
| | key_size = 64 |
| |
|
| |
|
| | class Blowfish(BlockCipherAlgorithm): |
| | name = "Blowfish" |
| | block_size = 64 |
| | key_sizes = frozenset(range(32, 449, 8)) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | class CAST5(BlockCipherAlgorithm): |
| | name = "CAST5" |
| | block_size = 64 |
| | key_sizes = frozenset(range(40, 129, 8)) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | class SEED(BlockCipherAlgorithm): |
| | name = "SEED" |
| | block_size = 128 |
| | key_sizes = frozenset([128]) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | class IDEA(BlockCipherAlgorithm): |
| | name = "IDEA" |
| | block_size = 64 |
| | key_sizes = frozenset([128]) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|
| |
|
| | |
| | |
| | class RC2(BlockCipherAlgorithm): |
| | name = "RC2" |
| | block_size = 64 |
| | key_sizes = frozenset([128]) |
| |
|
| | def __init__(self, key: bytes): |
| | self.key = _verify_key_size(self, key) |
| |
|
| | @property |
| | def key_size(self) -> int: |
| | return len(self.key) * 8 |
| |
|