| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # This file is dual licensed under the terms of the Apache License, Version
- # 2.0, and the BSD License. See the LICENSE file in the root of this repository
- # for complete details.
- 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 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
- # This class only allows RC2 with a 128-bit key. No support for
- # effective key bits or other key sizes is provided.
- 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
|