Index: third_party/tlslite/tlslite/utils/cipherfactory.py |
diff --git a/third_party/tlslite/tlslite/utils/cipherfactory.py b/third_party/tlslite/tlslite/utils/cipherfactory.py |
index 20e20f11003dccc12551a795c37cd0bcc384dd2f..d52564413fccd29fa1a3d0981f7d0167b7fbb357 100644 |
--- a/third_party/tlslite/tlslite/utils/cipherfactory.py |
+++ b/third_party/tlslite/tlslite/utils/cipherfactory.py |
@@ -6,6 +6,7 @@ |
import os |
from tlslite.utils import python_aes |
+from tlslite.utils import python_aesgcm |
from tlslite.utils import python_rc4 |
from tlslite.utils import cryptomath |
@@ -20,6 +21,7 @@ if cryptomath.m2cryptoLoaded: |
if cryptomath.pycryptoLoaded: |
from tlslite.utils import pycrypto_aes |
+ from tlslite.utils import pycrypto_aesgcm |
from tlslite.utils import pycrypto_rc4 |
from tlslite.utils import pycrypto_tripledes |
tripleDESPresent = True |
@@ -52,6 +54,25 @@ def createAES(key, IV, implList=None): |
return python_aes.new(key, 2, IV) |
raise NotImplementedError() |
+def createAESGCM(key, implList=None): |
+ """Create a new AESGCM object. |
+ |
+ @type key: bytearray |
+ @param key: A 16 or 32 byte byte array. |
+ |
+ @rtype: L{tlslite.utils.AESGCM} |
+ @return: An AESGCM object. |
+ """ |
+ if implList == None: |
+ implList = ["pycrypto", "python"] |
+ |
+ for impl in implList: |
+ if impl == "pycrypto" and cryptomath.pycryptoLoaded: |
+ return pycrypto_aesgcm.new(key) |
+ if impl == "python": |
+ return python_aesgcm.new(key) |
+ raise NotImplementedError() |
+ |
def createRC4(key, IV, implList=None): |
"""Create a new RC4 object. |
@@ -99,4 +120,4 @@ def createTripleDES(key, IV, implList=None): |
return openssl_tripledes.new(key, 2, IV) |
elif impl == "pycrypto" and cryptomath.pycryptoLoaded: |
return pycrypto_tripledes.new(key, 2, IV) |
- raise NotImplementedError() |
+ raise NotImplementedError() |