Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py: 74%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

68 statements  

1# This file is dual licensed under the terms of the Apache License, Version 

2# 2.0, and the BSD License. See the LICENSE file in the root of this repository 

3# for complete details. 

4 

5from __future__ import annotations 

6 

7from cryptography.hazmat.primitives._cipheralgorithm import ( 

8 BlockCipherAlgorithm, 

9 CipherAlgorithm, 

10 _verify_key_size, 

11) 

12 

13 

14class ARC4(CipherAlgorithm): 

15 name = "RC4" 

16 key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) 

17 

18 def __init__(self, key: bytes): 

19 self.key = _verify_key_size(self, key) 

20 

21 @property 

22 def key_size(self) -> int: 

23 return len(self.key) * 8 

24 

25 

26class TripleDES(BlockCipherAlgorithm): 

27 name = "3DES" 

28 block_size = 64 

29 key_sizes = frozenset([64, 128, 192]) 

30 

31 def __init__(self, key: bytes): 

32 if len(key) == 8: 

33 key += key + key 

34 elif len(key) == 16: 

35 key += key[:8] 

36 self.key = _verify_key_size(self, key) 

37 

38 @property 

39 def key_size(self) -> int: 

40 return len(self.key) * 8 

41 

42 

43class Blowfish(BlockCipherAlgorithm): 

44 name = "Blowfish" 

45 block_size = 64 

46 key_sizes = frozenset(range(32, 449, 8)) 

47 

48 def __init__(self, key: bytes): 

49 self.key = _verify_key_size(self, key) 

50 

51 @property 

52 def key_size(self) -> int: 

53 return len(self.key) * 8 

54 

55 

56class CAST5(BlockCipherAlgorithm): 

57 name = "CAST5" 

58 block_size = 64 

59 key_sizes = frozenset(range(40, 129, 8)) 

60 

61 def __init__(self, key: bytes): 

62 self.key = _verify_key_size(self, key) 

63 

64 @property 

65 def key_size(self) -> int: 

66 return len(self.key) * 8 

67 

68 

69class SEED(BlockCipherAlgorithm): 

70 name = "SEED" 

71 block_size = 128 

72 key_sizes = frozenset([128]) 

73 

74 def __init__(self, key: bytes): 

75 self.key = _verify_key_size(self, key) 

76 

77 @property 

78 def key_size(self) -> int: 

79 return len(self.key) * 8 

80 

81 

82class IDEA(BlockCipherAlgorithm): 

83 name = "IDEA" 

84 block_size = 64 

85 key_sizes = frozenset([128]) 

86 

87 def __init__(self, key: bytes): 

88 self.key = _verify_key_size(self, key) 

89 

90 @property 

91 def key_size(self) -> int: 

92 return len(self.key) * 8 

93 

94 

95# This class only allows RC2 with a 128-bit key. No support for 

96# effective key bits or other key sizes is provided. 

97class RC2(BlockCipherAlgorithm): 

98 name = "RC2" 

99 block_size = 64 

100 key_sizes = frozenset([128]) 

101 

102 def __init__(self, key: bytes): 

103 self.key = _verify_key_size(self, key) 

104 

105 @property 

106 def key_size(self) -> int: 

107 return len(self.key) * 8