Package tlslite :: Package utils :: Module cipherfactory
[hide private]
[frames] | no frames]

Source Code for Module tlslite.utils.cipherfactory

  1  # Author: Trevor Perrin 
  2  # See the LICENSE file for legal information regarding use of this file. 
  3   
  4  """Factory functions for symmetric cryptography.""" 
  5   
  6  import os 
  7   
  8  from tlslite.utils import python_aes 
  9  from tlslite.utils import python_rc4 
 10   
 11  from tlslite.utils import cryptomath 
 12   
 13  tripleDESPresent = False 
 14   
 15  if cryptomath.m2cryptoLoaded: 
 16      from tlslite.utils import openssl_aes 
 17      from tlslite.utils import openssl_rc4 
 18      from tlslite.utils import openssl_tripledes 
 19      tripleDESPresent = True 
 20   
 21  if cryptomath.pycryptoLoaded: 
 22      from tlslite.utils import pycrypto_aes 
 23      from tlslite.utils import pycrypto_rc4 
 24      from tlslite.utils import pycrypto_tripledes 
 25      tripleDESPresent = True 
 26   
 27  # ************************************************************************** 
 28  # Factory Functions for AES 
 29  # ************************************************************************** 
 30   
31 -def createAES(key, IV, implList=None):
32 """Create a new AES object. 33 34 @type key: str 35 @param key: A 16, 24, or 32 byte string. 36 37 @type IV: str 38 @param IV: A 16 byte string 39 40 @rtype: L{tlslite.utils.AES} 41 @return: An AES object. 42 """ 43 if implList == None: 44 implList = ["openssl", "pycrypto", "python"] 45 46 for impl in implList: 47 if impl == "openssl" and cryptomath.m2cryptoLoaded: 48 return openssl_aes.new(key, 2, IV) 49 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: 50 return pycrypto_aes.new(key, 2, IV) 51 elif impl == "python": 52 return python_aes.new(key, 2, IV) 53 raise NotImplementedError()
54
55 -def createRC4(key, IV, implList=None):
56 """Create a new RC4 object. 57 58 @type key: str 59 @param key: A 16 to 32 byte string. 60 61 @type IV: object 62 @param IV: Ignored, whatever it is. 63 64 @rtype: L{tlslite.utils.RC4} 65 @return: An RC4 object. 66 """ 67 if implList == None: 68 implList = ["openssl", "pycrypto", "python"] 69 70 if len(IV) != 0: 71 raise AssertionError() 72 for impl in implList: 73 if impl == "openssl" and cryptomath.m2cryptoLoaded: 74 return openssl_rc4.new(key) 75 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: 76 return pycrypto_rc4.new(key) 77 elif impl == "python": 78 return python_rc4.new(key) 79 raise NotImplementedError()
80 81 #Create a new TripleDES instance
82 -def createTripleDES(key, IV, implList=None):
83 """Create a new 3DES object. 84 85 @type key: str 86 @param key: A 24 byte string. 87 88 @type IV: str 89 @param IV: An 8 byte string 90 91 @rtype: L{tlslite.utils.TripleDES} 92 @return: A 3DES object. 93 """ 94 if implList == None: 95 implList = ["openssl", "pycrypto"] 96 97 for impl in implList: 98 if impl == "openssl" and cryptomath.m2cryptoLoaded: 99 return openssl_tripledes.new(key, 2, IV) 100 elif impl == "pycrypto" and cryptomath.pycryptoLoaded: 101 return pycrypto_tripledes.new(key, 2, IV) 102 raise NotImplementedError()
103