home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / M2Crypto / EC.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  7.6 KB  |  207 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import util
  5. import BIO
  6. import m2
  7.  
  8. class ECError(Exception):
  9.     pass
  10.  
  11. m2.ec_init(ECError)
  12. NID_secp112r1 = m2.NID_secp112r1
  13. NID_secp112r2 = m2.NID_secp112r2
  14. NID_secp128r1 = m2.NID_secp128r1
  15. NID_secp128r2 = m2.NID_secp128r2
  16. NID_secp160k1 = m2.NID_secp160k1
  17. NID_secp160r1 = m2.NID_secp160r1
  18. NID_secp160r2 = m2.NID_secp160r2
  19. NID_secp192k1 = m2.NID_secp192k1
  20. NID_secp224k1 = m2.NID_secp224k1
  21. NID_secp224r1 = m2.NID_secp224r1
  22. NID_secp256k1 = m2.NID_secp256k1
  23. NID_secp384r1 = m2.NID_secp384r1
  24. NID_secp521r1 = m2.NID_secp521r1
  25. NID_sect113r1 = m2.NID_sect113r1
  26. NID_sect113r2 = m2.NID_sect113r2
  27. NID_sect131r1 = m2.NID_sect131r1
  28. NID_sect131r2 = m2.NID_sect131r2
  29. NID_sect163k1 = m2.NID_sect163k1
  30. NID_sect163r1 = m2.NID_sect163r1
  31. NID_sect163r2 = m2.NID_sect163r2
  32. NID_sect193r1 = m2.NID_sect193r1
  33. NID_sect193r2 = m2.NID_sect193r2
  34. NID_sect233k1 = m2.NID_sect233k1
  35. NID_sect233r1 = m2.NID_sect233r1
  36. NID_sect239k1 = m2.NID_sect239k1
  37. NID_sect283k1 = m2.NID_sect283k1
  38. NID_sect283r1 = m2.NID_sect283r1
  39. NID_sect409k1 = m2.NID_sect409k1
  40. NID_sect409r1 = m2.NID_sect409r1
  41. NID_sect571k1 = m2.NID_sect571k1
  42. NID_sect571r1 = m2.NID_sect571r1
  43. NID_X9_62_prime192v1 = m2.NID_X9_62_prime192v1
  44. NID_X9_62_prime192v2 = m2.NID_X9_62_prime192v2
  45. NID_X9_62_prime192v3 = m2.NID_X9_62_prime192v3
  46. NID_X9_62_prime239v1 = m2.NID_X9_62_prime239v1
  47. NID_X9_62_prime239v2 = m2.NID_X9_62_prime239v2
  48. NID_X9_62_prime239v3 = m2.NID_X9_62_prime239v3
  49. NID_X9_62_prime256v1 = m2.NID_X9_62_prime256v1
  50. NID_X9_62_c2pnb163v1 = m2.NID_X9_62_c2pnb163v1
  51. NID_X9_62_c2pnb163v2 = m2.NID_X9_62_c2pnb163v2
  52. NID_X9_62_c2pnb163v3 = m2.NID_X9_62_c2pnb163v3
  53. NID_X9_62_c2pnb176v1 = m2.NID_X9_62_c2pnb176v1
  54. NID_X9_62_c2tnb191v1 = m2.NID_X9_62_c2tnb191v1
  55. NID_X9_62_c2tnb191v2 = m2.NID_X9_62_c2tnb191v2
  56. NID_X9_62_c2tnb191v3 = m2.NID_X9_62_c2tnb191v3
  57. NID_X9_62_c2pnb208w1 = m2.NID_X9_62_c2pnb208w1
  58. NID_X9_62_c2tnb239v1 = m2.NID_X9_62_c2tnb239v1
  59. NID_X9_62_c2tnb239v2 = m2.NID_X9_62_c2tnb239v2
  60. NID_X9_62_c2tnb239v3 = m2.NID_X9_62_c2tnb239v3
  61. NID_X9_62_c2pnb272w1 = m2.NID_X9_62_c2pnb272w1
  62. NID_X9_62_c2pnb304w1 = m2.NID_X9_62_c2pnb304w1
  63. NID_X9_62_c2tnb359v1 = m2.NID_X9_62_c2tnb359v1
  64. NID_X9_62_c2pnb368w1 = m2.NID_X9_62_c2pnb368w1
  65. NID_X9_62_c2tnb431r1 = m2.NID_X9_62_c2tnb431r1
  66. NID_wap_wsg_idm_ecid_wtls1 = m2.NID_wap_wsg_idm_ecid_wtls1
  67. NID_wap_wsg_idm_ecid_wtls3 = m2.NID_wap_wsg_idm_ecid_wtls3
  68. NID_wap_wsg_idm_ecid_wtls4 = m2.NID_wap_wsg_idm_ecid_wtls4
  69. NID_wap_wsg_idm_ecid_wtls5 = m2.NID_wap_wsg_idm_ecid_wtls5
  70. NID_wap_wsg_idm_ecid_wtls6 = m2.NID_wap_wsg_idm_ecid_wtls6
  71. NID_wap_wsg_idm_ecid_wtls7 = m2.NID_wap_wsg_idm_ecid_wtls7
  72. NID_wap_wsg_idm_ecid_wtls8 = m2.NID_wap_wsg_idm_ecid_wtls8
  73. NID_wap_wsg_idm_ecid_wtls9 = m2.NID_wap_wsg_idm_ecid_wtls9
  74. NID_wap_wsg_idm_ecid_wtls10 = m2.NID_wap_wsg_idm_ecid_wtls10
  75. NID_wap_wsg_idm_ecid_wtls11 = m2.NID_wap_wsg_idm_ecid_wtls11
  76. NID_wap_wsg_idm_ecid_wtls12 = m2.NID_wap_wsg_idm_ecid_wtls12
  77.  
  78. class EC:
  79.     m2_ec_key_free = m2.ec_key_free
  80.     
  81.     def __init__(self, ec, _pyfree = 0):
  82.         self.ec = ec
  83.         self._pyfree = _pyfree
  84.  
  85.     
  86.     def __del__(self):
  87.         if getattr(self, '_pyfree', 0):
  88.             self.m2_ec_key_free(self.ec)
  89.         
  90.  
  91.     
  92.     def __len__(self):
  93.         return m2.ec_key_keylen(self.ec)
  94.  
  95.     
  96.     def gen_key(self):
  97.         m2.ec_key_gen_key(self.ec)
  98.  
  99.     
  100.     def pub(self):
  101.         return EC_pub(self.ec, 0)
  102.  
  103.     
  104.     def sign_dsa(self, digest):
  105.         return m2.ecdsa_sign(self.ec, digest)
  106.  
  107.     
  108.     def verify_dsa(self, digest, r, s):
  109.         return m2.ecdsa_verify(self.ec, digest, r, s)
  110.  
  111.     
  112.     def sign_dsa_asn1(self, digest):
  113.         return m2.ecdsa_sign_asn1(self.ec, digest)
  114.  
  115.     
  116.     def verify_dsa_asn1(self, digest, blob):
  117.         return m2.ecdsa_verify_asn1(self.ec, digest, blob)
  118.  
  119.     
  120.     def compute_dh_key(self, pub_key):
  121.         return m2.ecdh_compute_key(self.ec, pub_key.ec)
  122.  
  123.     
  124.     def save_key_bio(self, bio, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  125.         if cipher is None:
  126.             return m2.ec_key_write_bio_no_cipher(self.ec, bio._ptr(), callback)
  127.         ciph = getattr(m2, cipher, None)
  128.         if ciph is None:
  129.             raise ValueError('not such cipher %s' % cipher)
  130.         ciph is None
  131.         return m2.ec_key_write_bio(self.ec, bio._ptr(), ciph(), callback)
  132.  
  133.     
  134.     def save_key(self, file, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  135.         bio = BIO.openfile(file, 'wb')
  136.         return self.save_key_bio(bio, cipher, callback)
  137.  
  138.     
  139.     def save_pub_key_bio(self, bio):
  140.         return m2.ec_key_write_pubkey(self.ec, bio._ptr())
  141.  
  142.     
  143.     def save_pub_key(self, file):
  144.         bio = BIO.openfile(file, 'wb')
  145.         return m2.ec_key_write_pubkey(self.ec, bio._ptr())
  146.  
  147.     
  148.     def _check_key_type(self):
  149.         return m2.ec_key_type_check(self.ec)
  150.  
  151.     
  152.     def check_key(self):
  153.         return m2.ec_key_check_key(self.ec)
  154.  
  155.  
  156.  
  157. class EC_pub(EC):
  158.     
  159.     def __init__(self, ec, _pyfree = 0):
  160.         EC.__init__(self, ec, _pyfree)
  161.         self.der = None
  162.  
  163.     
  164.     def get_der(self):
  165.         if self.der is None:
  166.             self.der = m2.ec_key_get_public_der(self.ec)
  167.         
  168.         return self.der
  169.  
  170.     save_key = EC.save_pub_key
  171.     save_key_bio = EC.save_pub_key_bio
  172.  
  173.  
  174. def gen_params(curve):
  175.     return EC(m2.ec_key_new_by_curve_name(curve), 1)
  176.  
  177.  
  178. def load_key(file, callback = util.passphrase_callback):
  179.     bio = BIO.openfile(file)
  180.     return load_key_bio(bio, callback)
  181.  
  182.  
  183. def load_key_bio(bio, callback = util.passphrase_callback):
  184.     return EC(m2.ec_key_read_bio(bio._ptr(), callback), 1)
  185.  
  186.  
  187. def load_pub_key(file):
  188.     bio = BIO.openfile(file)
  189.     return load_pub_key_bio(bio)
  190.  
  191.  
  192. def load_pub_key_bio(bio):
  193.     ec = m2.ec_key_read_pubkey(bio._ptr())
  194.     if ec is None:
  195.         ec_error()
  196.     
  197.     return EC_pub(ec, 1)
  198.  
  199.  
  200. def ec_error():
  201.     raise ECError, m2.err_reason_error_string(m2.err_get_error())
  202.  
  203.  
  204. def pub_key_from_der(der):
  205.     return EC_pub(m2.ec_key_from_pubkey_der(der), 1)
  206.  
  207.