ó
/<õ\c           @` s€   d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d „  Z d „  Z d „  Z d	 „  Z d S(
   i    (   t   absolute_importt   divisiont   print_functionN(   t   utils(   t   hashes(   t	   Prehashedc         C` s]  |  j  j | |  j j ƒ } |  j | |  j j k ƒ |  j j | |  j  j ƒ } |  j  j | ƒ } |  j | d k ƒ |  j  j | | j	 ƒ } |  j | d k ƒ |  j j
 d ƒ } |  j  j | |  j j | ƒ } |  j | d k ƒ |  j | d d k ƒ |  j j
 d | d ƒ } |  j  j | | | ƒ } | d k rEt d ƒ ‚ n  |  j j | | d ƒ S(   Ni   s   size_t *i    s   unsigned char[]s1   Null shared key derived from public/private pair.(   t   _libt   EVP_PKEY_CTX_newt   _ffit   NULLt   openssl_assertt   gct   EVP_PKEY_CTX_freet   EVP_PKEY_derive_initt   EVP_PKEY_derive_set_peert	   _evp_pkeyt   newt   EVP_PKEY_derivet
   ValueErrort   buffer(   t   backendt   evp_pkeyt   peer_public_keyt   ctxt   rest   keylent   buf(    (    sI   lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/utils.pyt   _evp_pkey_derive   s$    	c         C` st   t  | t ƒ s= t j | |  ƒ } | j | ƒ | j ƒ  } n	 | j } t | ƒ | j k rj t	 d ƒ ‚ n  | | f S(   NsN   The provided data must be the same length as the hash algorithm's digest size.(
   t
   isinstanceR   R   t   Hasht   updatet   finalizet
   _algorithmt   lent   digest_sizeR   (   R   t   datat	   algorithmt   hash_ctx(    (    sI   lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/utils.pyt   _calculate_digest_and_algorithm&   s    	c         C` s"   t  |  t ƒ r t d ƒ ‚ n  d  S(   Nsf   Prehashed is only supported in the sign and verify methods. It cannot be used with signer or verifier.(   R   R   t	   TypeError(   t   signature_algorithm(    (    sI   lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/utils.pyt   _check_not_prehashed7   s    c           C` s   t  j d t j d d ƒd  S(   NsM   signer and verifier have been deprecated. Please use sign and verify instead.t
   stackleveli   (   t   warningst   warnR   t   PersistentlyDeprecated2017(    (    (    sI   lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/utils.pyt   _warn_sign_verify_deprecated?   s    	(   t
   __future__R    R   R   R+   t   cryptographyR   t   cryptography.hazmat.primitivesR   t/   cryptography.hazmat.primitives.asymmetric.utilsR   R   R&   R)   R.   (    (    (    sI   lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/utils.pyt   <module>   s   			