ó
ñ1Mc           @   s†   d  Z  d d l m Z m Z m Z m Z d e f d „  ƒ  YZ e j e ƒ d d d „  ƒ  YZ	 d „  Z
 d „  Z d	 „  Z d
 „  Z d S(   sB   
M2Crypto wrapper for OpenSSL ENGINE API.

Pavel Shramov
IMEC MSU
iÿÿÿÿ(   t   m2t   EVPt   X509t   Errt   EngineErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyR      s    t   Enginec           B   sž   e  Z d  Z e j Z d d d d „ Z d „  Z d „  Z	 d „  Z
 d d „ Z d „  Z d	 „  Z e j d
 „ Z d d „ Z d d „ Z d d „ Z d „  Z RS(   s   Wrapper for ENGINE object.i   c         C   sm   | r | r t  d ƒ ‚ n  | |  _ |  j s` t j | ƒ |  _ |  j s` t  d | ƒ ‚ q` n  | |  _ d S(   s5   Create new Engine from ENGINE pointer or obtain by ids   No engine id specifieds   Unknown engine: %sN(   t
   ValueErrort   _ptrR    t   engine_by_idt   _pyfree(   t   selft   idR	   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   __init__   s    			c         C   s)   t  |  d d ƒ r% |  j |  j ƒ n  d  S(   NR   i    (   t   getattrt   m2_engine_freeR	   (   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   __del__   s    c         C   s   t  j |  j ƒ S(   sg   Obtain a functional reference to the engine.
        
        @return: 0 on error, non-zero on success.(   R    t   engine_initR	   (   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   init#   s    c         C   s   t  j |  j ƒ S(   s<   Release a functional and structural reference to the engine.(   R    t   engine_finishR	   (   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   finish)   s    i    c         C   s4   t  j |  j | | | ƒ s0 t t j ƒ  ƒ ‚ n  d S(   s   Call ENGINE_ctrl_cmd_stringN(   R    t   engine_ctrl_cmd_stringR	   R   R   t	   get_error(   R   t   cmdt   argt   optional(    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   ctrl_cmd_string-   s    c         C   s   t  j |  j ƒ S(   s   Return engine name(   R    t   engine_get_nameR	   (   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   get_name2   s    c         C   s   t  j |  j ƒ S(   s   Return engine id(   R    t   engine_get_idR	   (   R   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   get_id6   s    c         C   s   t  j |  j | ƒ S(   sy   Use this engine as default for methods specified in argument
        Possible values are bitwise OR of m2.ENGINE_METHOD_*(   R    t   engine_set_defaultR	   (   R   t   methods(    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   set_default:   s    c         C   s|   t  j ƒ  } t  j | ƒ } zL | |  j | | | ƒ } | sQ t t j ƒ  ƒ ‚ n  t j | d d ƒ} Wd t  j	 | ƒ X| S(   s    Helper function for loading keysR   i   N(
   R    t
   ui_opensslt   engine_pkcs11_data_newR	   R   R   R   R   t   PKeyt   engine_pkcs11_data_free(   R   t   funct   namet   pint   uit   cbdt   kptrt   key(    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   _engine_load_key?   s    c         C   s   |  j  t j | | ƒ S(   sr   Load private key with engine methods (e.g from smartcard).
            If pin is not set it will be asked
        (   R.   R    t   engine_load_private_key(   R   R(   R)   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_private_keyL   s    c         C   s   |  j  t j | | ƒ S(   s9   Load public key with engine methods (e.g from smartcard).(   R.   R    t   engine_load_public_key(   R   R(   R)   (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_public_keyR   s    c         C   s=   t  j |  j | ƒ } | s* t d ƒ ‚ n  t j | d d ƒS(   sp   Load certificate from engine (e.g from smartcard).
        NOTE: This function may be not implemented by engine!s   Certificate or card not foundR   i   (   R    t   engine_load_certificateR	   R   R   (   R   R(   t   cptr(    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_certificateV   s    N(   R   R   t   __doc__R    t   engine_freeR   t   NoneR   R   R   R   R   R   R   t   ENGINE_METHOD_ALLR"   R.   R0   R2   R5   (    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyR      s   						c         C   sZ   t  j ƒ  t d ƒ } | j d | ƒ | j d |  ƒ | j d d ƒ | j d d ƒ | S(   s>   Load and return dymanic engine from sopath and assign id to itt   dynamict   SO_PATHt   IDt   LIST_ADDt   1t   LOADN(   R    t   engine_load_dynamicR   R   R8   (   R   t   sopatht   e(    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_dynamic_engine_   s    
c           C   s   t  j ƒ  d S(   s   Load dynamic engineN(   R    R@   (    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_dynamicj   s    c           C   s   t  j ƒ  d S(   s   Load openssl engineN(   R    t   engine_load_openssl(    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   load_opensslo   s    c           C   s   t  j ƒ  d S(   sf   If you load any engines, you need to clean up after your application
    is finished with the engines.N(   R    t   engine_cleanup(    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   cleanupt   s    N(    (   R6   t   M2CryptoR    R   R   R   t	   ExceptionR   t   engine_init_errorR   RC   RD   RF   RH   (    (    (    s5   /usr/lib64/python2.7/site-packages/M2Crypto/Engine.pyt   <module>   s   "P			