OLD | NEW |
---|---|
1 # Author: Trevor Perrin | 1 # Author: Trevor Perrin |
2 # See the LICENSE file for legal information regarding use of this file. | 2 # See the LICENSE file for legal information regarding use of this file. |
3 | 3 |
4 """Factory functions for symmetric cryptography.""" | 4 """Factory functions for symmetric cryptography.""" |
5 | 5 |
6 import os | 6 import os |
7 | 7 |
8 from tlslite.utils import python_aes | 8 from tlslite.utils import python_aes |
9 from tlslite.utils import python_aesgcm | |
9 from tlslite.utils import python_rc4 | 10 from tlslite.utils import python_rc4 |
10 | 11 |
11 from tlslite.utils import cryptomath | 12 from tlslite.utils import cryptomath |
12 | 13 |
13 tripleDESPresent = False | 14 tripleDESPresent = False |
14 | 15 |
15 if cryptomath.m2cryptoLoaded: | 16 if cryptomath.m2cryptoLoaded: |
16 from tlslite.utils import openssl_aes | 17 from tlslite.utils import openssl_aes |
17 from tlslite.utils import openssl_rc4 | 18 from tlslite.utils import openssl_rc4 |
18 from tlslite.utils import openssl_tripledes | 19 from tlslite.utils import openssl_tripledes |
19 tripleDESPresent = True | 20 tripleDESPresent = True |
20 | 21 |
21 if cryptomath.pycryptoLoaded: | 22 if cryptomath.pycryptoLoaded: |
22 from tlslite.utils import pycrypto_aes | 23 from tlslite.utils import pycrypto_aes |
24 from tlslite.utils import pycrypto_aesgcm | |
23 from tlslite.utils import pycrypto_rc4 | 25 from tlslite.utils import pycrypto_rc4 |
24 from tlslite.utils import pycrypto_tripledes | 26 from tlslite.utils import pycrypto_tripledes |
25 tripleDESPresent = True | 27 tripleDESPresent = True |
26 | 28 |
27 # ************************************************************************** | 29 # ************************************************************************** |
28 # Factory Functions for AES | 30 # Factory Functions for AES |
29 # ************************************************************************** | 31 # ************************************************************************** |
30 | 32 |
31 def createAES(key, IV, implList=None): | 33 def createAES(key, IV, implList=None): |
32 """Create a new AES object. | 34 """Create a new AES object. |
(...skipping 12 matching lines...) Expand all Loading... | |
45 | 47 |
46 for impl in implList: | 48 for impl in implList: |
47 if impl == "openssl" and cryptomath.m2cryptoLoaded: | 49 if impl == "openssl" and cryptomath.m2cryptoLoaded: |
48 return openssl_aes.new(key, 2, IV) | 50 return openssl_aes.new(key, 2, IV) |
49 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: | 51 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: |
50 return pycrypto_aes.new(key, 2, IV) | 52 return pycrypto_aes.new(key, 2, IV) |
51 elif impl == "python": | 53 elif impl == "python": |
52 return python_aes.new(key, 2, IV) | 54 return python_aes.new(key, 2, IV) |
53 raise NotImplementedError() | 55 raise NotImplementedError() |
54 | 56 |
57 def createAESGCM(key, implList=None): | |
58 """Create a new AESGCM object. | |
59 | |
60 @type key: bytearray | |
61 @param key: A 16 or 32 byte byte array. | |
62 | |
63 @rtype: L{tlslite.utils.AESGCM} | |
64 @return: An AESGCM object. | |
65 """ | |
66 if implList == None: | |
67 implList = ["pycrypto", "python"] | |
davidben
2015/01/25 02:43:41
"openssl", or rather, M2Crypto is intentionally om
| |
68 | |
69 for impl in implList: | |
70 if impl == "pycrypto" and cryptomath.pycryptoLoaded: | |
71 return pycrypto_aesgcm.new(key) | |
72 if impl == "python": | |
73 return python_aesgcm.new(key) | |
74 raise NotImplementedError() | |
75 | |
55 def createRC4(key, IV, implList=None): | 76 def createRC4(key, IV, implList=None): |
56 """Create a new RC4 object. | 77 """Create a new RC4 object. |
57 | 78 |
58 @type key: str | 79 @type key: str |
59 @param key: A 16 to 32 byte string. | 80 @param key: A 16 to 32 byte string. |
60 | 81 |
61 @type IV: object | 82 @type IV: object |
62 @param IV: Ignored, whatever it is. | 83 @param IV: Ignored, whatever it is. |
63 | 84 |
64 @rtype: L{tlslite.utils.RC4} | 85 @rtype: L{tlslite.utils.RC4} |
(...skipping 27 matching lines...) Expand all Loading... | |
92 @return: A 3DES object. | 113 @return: A 3DES object. |
93 """ | 114 """ |
94 if implList == None: | 115 if implList == None: |
95 implList = ["openssl", "pycrypto"] | 116 implList = ["openssl", "pycrypto"] |
96 | 117 |
97 for impl in implList: | 118 for impl in implList: |
98 if impl == "openssl" and cryptomath.m2cryptoLoaded: | 119 if impl == "openssl" and cryptomath.m2cryptoLoaded: |
99 return openssl_tripledes.new(key, 2, IV) | 120 return openssl_tripledes.new(key, 2, IV) |
100 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: | 121 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: |
101 return pycrypto_tripledes.new(key, 2, IV) | 122 return pycrypto_tripledes.new(key, 2, IV) |
102 raise NotImplementedError() | 123 raise NotImplementedError() |
OLD | NEW |