home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / M2Crypto / DSA.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  7.0 KB  |  194 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import sys
  5. import util
  6. import BIO
  7. import m2
  8.  
  9. class DSAError(Exception):
  10.     pass
  11.  
  12. m2.dsa_init(DSAError)
  13.  
  14. class DSA:
  15.     m2_dsa_free = m2.dsa_free
  16.     
  17.     def __init__(self, dsa, _pyfree = 0):
  18.         self.dsa = dsa
  19.         self._pyfree = _pyfree
  20.  
  21.     
  22.     def __del__(self):
  23.         if getattr(self, '_pyfree', 0):
  24.             self.m2_dsa_free(self.dsa)
  25.         
  26.  
  27.     
  28.     def __len__(self):
  29.         return m2.dsa_keylen(self.dsa)
  30.  
  31.     
  32.     def __getattr__(self, name):
  33.         if name in ('p', 'q', 'g', 'pub', 'priv'):
  34.             method = getattr(m2, 'dsa_get_%s' % (name,))
  35.             return method(self.dsa)
  36.         raise AttributeError
  37.  
  38.     
  39.     def __setattr__(self, name, value):
  40.         if name in ('p', 'q', 'g'):
  41.             raise DSAError('set (p, q, g) via set_params()')
  42.         name in ('p', 'q', 'g')
  43.         if name in ('pub', 'priv'):
  44.             raise DSAError('generate (pub, priv) via gen_key()')
  45.         name in ('pub', 'priv')
  46.         self.__dict__[name] = value
  47.  
  48.     
  49.     def set_params(self, p, q, g):
  50.         m2.dsa_set_p(self.dsa, p)
  51.         m2.dsa_set_q(self.dsa, q)
  52.         m2.dsa_set_g(self.dsa, g)
  53.  
  54.     
  55.     def gen_key(self):
  56.         m2.dsa_gen_key(self.dsa)
  57.  
  58.     
  59.     def save_params(self, filename):
  60.         bio = BIO.openfile(filename, 'wb')
  61.         ret = m2.dsa_write_params_bio(self.dsa, bio._ptr())
  62.         bio.close()
  63.         return ret
  64.  
  65.     
  66.     def save_params_bio(self, bio):
  67.         return m2.dsa_write_params_bio(self.dsa, bio._ptr())
  68.  
  69.     
  70.     def save_key(self, filename, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  71.         bio = BIO.openfile(filename, 'wb')
  72.         ret = self.save_key_bio(bio, cipher, callback)
  73.         bio.close()
  74.         return ret
  75.  
  76.     
  77.     def save_key_bio(self, bio, cipher = 'aes_128_cbc', callback = util.passphrase_callback):
  78.         if cipher is None:
  79.             return m2.dsa_write_key_bio_no_cipher(self.dsa, bio._ptr(), callback)
  80.         ciph = getattr(m2, cipher, None)
  81.         if ciph is None:
  82.             raise DSAError('no such cipher: %s' % cipher)
  83.         ciph is None
  84.         ciph = ciph()
  85.         return m2.dsa_write_key_bio(self.dsa, bio._ptr(), ciph, callback)
  86.  
  87.     
  88.     def save_pub_key(self, filename):
  89.         bio = BIO.openfile(filename, 'wb')
  90.         ret = self.save_pub_key_bio(bio)
  91.         bio.close()
  92.         return ret
  93.  
  94.     
  95.     def save_pub_key_bio(self, bio):
  96.         return m2.dsa_write_pub_key_bio(self.dsa, bio._ptr())
  97.  
  98.     
  99.     def sign(self, digest):
  100.         return m2.dsa_sign(self.dsa, digest)
  101.  
  102.     
  103.     def verify(self, digest, r, s):
  104.         return m2.dsa_verify(self.dsa, digest, r, s)
  105.  
  106.     
  107.     def sign_asn1(self, digest):
  108.         return m2.dsa_sign_asn1(self.dsa, digest)
  109.  
  110.     
  111.     def verify_asn1(self, digest, blob):
  112.         return m2.dsa_verify_asn1(self.dsa, digest, blob)
  113.  
  114.     
  115.     def check_key(self):
  116.         return m2.dsa_check_key(self.dsa)
  117.  
  118.  
  119.  
  120. class DSA_pub(DSA):
  121.     
  122.     def sign(self, *argv):
  123.         raise DSAError('DSA_pub object has no private key')
  124.  
  125.     sign_asn1 = sign
  126.     
  127.     def check_key(self):
  128.         return m2.dsa_check_pub_key(self.dsa)
  129.  
  130.     save_key = DSA.save_pub_key
  131.     save_key_bio = DSA.save_pub_key_bio
  132.  
  133.  
  134. def gen_params(bits, callback = util.genparam_callback):
  135.     dsa = m2.dsa_generate_parameters(bits, callback)
  136.     if dsa is None:
  137.         raise DSAError('problem generating DSA parameters')
  138.     dsa is None
  139.     return DSA(dsa, 1)
  140.  
  141.  
  142. def set_params(p, q, g):
  143.     dsa = m2.dsa_new()
  144.     m2.dsa_set_p(dsa, p)
  145.     m2.dsa_set_q(dsa, q)
  146.     m2.dsa_set_g(dsa, g)
  147.     return DSA(dsa, 1)
  148.  
  149.  
  150. def load_params(file, callback = util.passphrase_callback):
  151.     bio = BIO.openfile(file)
  152.     ret = load_params_bio(bio, callback)
  153.     bio.close()
  154.     return ret
  155.  
  156.  
  157. def load_params_bio(bio, callback = util.passphrase_callback):
  158.     dsa = m2.dsa_read_params(bio._ptr(), callback)
  159.     if dsa is None:
  160.         raise DSAError('problem loading DSA parameters')
  161.     dsa is None
  162.     return DSA(dsa, 1)
  163.  
  164.  
  165. def load_key(file, callback = util.passphrase_callback):
  166.     bio = BIO.openfile(file)
  167.     ret = load_key_bio(bio, callback)
  168.     bio.close()
  169.     return ret
  170.  
  171.  
  172. def load_key_bio(bio, callback = util.passphrase_callback):
  173.     dsa = m2.dsa_read_key(bio._ptr(), callback)
  174.     if not dsa:
  175.         raise DSAError('problem loading DSA key pair')
  176.     dsa
  177.     return DSA(dsa, 1)
  178.  
  179.  
  180. def load_pub_key(file, callback = util.passphrase_callback):
  181.     bio = BIO.openfile(file)
  182.     ret = load_pub_key_bio(bio, callback)
  183.     bio.close()
  184.     return ret
  185.  
  186.  
  187. def load_pub_key_bio(bio, callback = util.passphrase_callback):
  188.     dsapub = m2.dsa_read_pub_key(bio._ptr(), callback)
  189.     if not dsapub:
  190.         raise DSAError('problem loading DSA public key')
  191.     dsapub
  192.     return DSA_pub(dsapub, 1)
  193.  
  194.