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

Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.iÿÿÿÿ(   t   genparam_callbackNt   DHErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyR      s    t   DHc           B   st   e  Z d  Z e j Z d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z RS(   sK   
    Object interface to the Diffie-Hellman key exchange
    protocol.
    i    c         C   s+   t  j | ƒ s t ‚ | |  _ | |  _ d  S(   N(   t   m2t   dh_type_checkt   AssertionErrort   dht   _pyfree(   t   selfR   R	   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   __init__   s    	c         C   s)   t  |  d d ƒ r% |  j |  j ƒ n  d  S(   NR	   i    (   t   getattrt
   m2_dh_freeR   (   R
   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   __del__   s    c         C   s.   t  j |  j ƒ s t d ƒ ‚ t  j |  j ƒ S(   Ns   'dh' type error(   R   R   R   R   t   dh_size(   R
   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   __len__   s    c         C   sW   | d k rM t  t d | f ƒ } t j |  j ƒ s@ t d ƒ ‚ | |  j ƒ St ‚ d  S(   Nt   pt   gt   pubt   privs	   dh_get_%ss   'dh' type error(   R   R   R   R   (   R   R   R   R   R   t   AttributeError(   R
   t   namet   method(    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   __getattr__"   s
    c         C   sA   | d k r t  d ‚ n% | d k r0 t  d ‚ n | |  j | <d  S(	   NR   R   s   set (p, g) via set_params()R   R   s"   generate (pub, priv) via gen_key()(   R   R   (   s   pubs   priv(   R   t   __dict__(   R
   R   t   value(    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   __setattr__*   s
    c         C   s   |  j  S(   N(   R   (   R
   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   _ptr2   s    c         C   s.   t  j |  j ƒ s t d ƒ ‚ t  j |  j ƒ S(   Ns   'dh' type error(   R   R   R   R   t   dh_check(   R
   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   check_params5   s    c         C   s2   t  j |  j ƒ s t d ƒ ‚ t  j |  j ƒ d  S(   Ns   'dh' type error(   R   R   R   R   t   dh_generate_key(   R
   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   gen_key9   s    c         C   s1   t  j |  j ƒ s t d ƒ ‚ t  j |  j | ƒ S(   Ns   'dh' type error(   R   R   R   R   t   dh_compute_key(   R
   t   pubkey(    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   compute_key=   s    c         C   s7   t  j |  j ƒ s t d ƒ ‚ t  j | j ƒ  |  j ƒ S(   Ns   'dh' type error(   R   R   R   R   t   dhparams_printR   (   R
   t   bio(    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   print_paramsA   s    (   R   R   t   __doc__R   t   dh_freeR   R   R   R   R   R   R   R   R    R#   R&   (    (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyR      s   									c         C   s   t  t j |  | | ƒ d ƒ S(   Ni   (   R   R   t   dh_generate_parameters(   t   plenR   t   callback(    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt
   gen_paramsF   s    c         C   s   t  j |  ƒ } t | ƒ S(   N(   t   BIOt   openfilet   load_params_bio(   t   fileR%   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   load_paramsJ   s    c         C   s   t  t j |  j ƒ  ƒ d ƒ S(   Ni   (   R   R   t   dh_read_parametersR   (   R%   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyR/   O   s    c         C   s9   t  j ƒ  } t  j | |  ƒ t  j | | ƒ t | d ƒ S(   Ni   (   R   t   dh_newt   dh_set_pt   dh_set_gR   (   R   R   R   (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt
   set_paramsS   s    (    (   R'   t   utilR    R-   t   ErrR   t	   ExceptionR   t   dh_initR   R,   R1   R/   R6   t   DH_GENERATOR_2t   DH_GENERATOR_5(    (    (    s1   /usr/lib64/python2.7/site-packages/M2Crypto/DH.pyt   <module>   s   $:				