home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / M2Crypto / Engine.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  3.9 KB  |  106 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from M2Crypto import m2, EVP, X509, Err
  5.  
  6. class EngineError(Exception):
  7.     pass
  8.  
  9. m2.engine_init(EngineError)
  10.  
  11. class Engine:
  12.     m2_engine_free = m2.engine_free
  13.     
  14.     def __init__(self, id = None, _ptr = None, _pyfree = 1):
  15.         if not _ptr and not id:
  16.             raise ValueError('No engine id specified')
  17.         
  18.         self._ptr = _ptr
  19.         if not self._ptr:
  20.             self._ptr = m2.engine_by_id(id)
  21.             if not self._ptr:
  22.                 raise ValueError('Unknown engine: %s' % id)
  23.             
  24.         
  25.         self._pyfree = _pyfree
  26.  
  27.     
  28.     def __del__(self):
  29.         if getattr(self, '_pyfree', 0):
  30.             self.m2_engine_free(self._ptr)
  31.         
  32.  
  33.     
  34.     def ctrl_cmd_string(self, cmd, arg, optional = 0):
  35.         if not m2.engine_ctrl_cmd_string(self._ptr, cmd, arg, optional):
  36.             raise EngineError(Err.get_error())
  37.         
  38.  
  39.     
  40.     def get_name(self):
  41.         return m2.engine_get_name(self._ptr)
  42.  
  43.     
  44.     def get_id(self):
  45.         return m2.engine_get_id(self._ptr)
  46.  
  47.     
  48.     def set_default(self, methods = m2.ENGINE_METHOD_ALL):
  49.         return m2.engine_set_default(self._ptr, methods)
  50.  
  51.     
  52.     def _engine_load_key(self, func, name, pin = None):
  53.         ui = m2.ui_openssl()
  54.         cbd = m2.engine_pkcs11_data_new(pin)
  55.         
  56.         try:
  57.             kptr = func(self._ptr, name, ui, cbd)
  58.             if not kptr:
  59.                 raise EngineError(Err.get_error())
  60.             
  61.             key = EVP.PKey(kptr, _pyfree = 1)
  62.         finally:
  63.             m2.engine_pkcs11_data_free(cbd)
  64.  
  65.         return key
  66.  
  67.     
  68.     def load_private_key(self, name, pin = None):
  69.         return self._engine_load_key(m2.engine_load_private_key, name, pin)
  70.  
  71.     
  72.     def load_public_key(self, name, pin = None):
  73.         return self._engine_load_key(m2.engine_load_public_key, name, pin)
  74.  
  75.     
  76.     def load_certificate(self, name):
  77.         cptr = m2.engine_load_certificate(self._ptr, name)
  78.         if not cptr:
  79.             raise EngineError('Certificate or card not found')
  80.         
  81.         return X509.X509(cptr, _pyfree = 1)
  82.  
  83.  
  84.  
  85. def load_dynamic_engine(id, sopath):
  86.     m2.engine_load_dynamic()
  87.     e = Engine('dynamic')
  88.     e.ctrl_cmd_string('SO_PATH', sopath)
  89.     e.ctrl_cmd_string('ID', id)
  90.     e.ctrl_cmd_string('LIST_ADD', '1')
  91.     e.ctrl_cmd_string('LOAD', None)
  92.     return e
  93.  
  94.  
  95. def load_dynamic():
  96.     m2.engine_load_dynamic()
  97.  
  98.  
  99. def load_openssl():
  100.     m2.engine_load_openssl()
  101.  
  102.  
  103. def cleanup():
  104.     m2.engine_cleanup()
  105.  
  106.