ó
/<õ\c           @` s@  d  d l  m Z m Z m Z d  d l Z d  d l Z e j e j ƒ d e f d „  ƒ  Yƒ Z	 e j e j ƒ d e f d „  ƒ  Yƒ Z
 e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d	 e f d
 „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z e j e j ƒ d e f d „  ƒ  Yƒ Z d S(   i    (   t   absolute_importt   divisiont   print_functionNt   CipherBackendc           B` s>   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sI   
        Return True if the given cipher and mode are supported.
        N(    (   t   selft   ciphert   mode(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   cipher_supported   t    c         C` s   d S(   sF   
        Get a CipherContext that can be used for encryption.
        N(    (   R   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_symmetric_encryption_ctx   R   c         C` s   d S(   sF   
        Get a CipherContext that can be used for decryption.
        N(    (   R   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_symmetric_decryption_ctx   R   (   t   __name__t
   __module__t   abct   abstractmethodR   R	   R
   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR      s   t   HashBackendc           B` s,   e  Z e j d  „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sQ   
        Return True if the hash algorithm is supported by this backend.
        N(    (   R   t	   algorithm(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   hash_supported#   R   c         C` s   d S(   sH   
        Create a HashContext for calculating a message digest.
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_hash_ctx)   R   (   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR   !   s   t   HMACBackendc           B` s,   e  Z e j d  „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sb   
        Return True if the hash algorithm is supported for HMAC by this
        backend.
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   hmac_supported2   R   c         C` s   d S(   sQ   
        Create a context for calculating a message authentication code.
        N(    (   R   t   keyR   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_hmac_ctx9   R   (   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR   0   s   t   CMACBackendc           B` s,   e  Z e j d  „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sX   
        Returns True if the block cipher is supported for CMAC by this backend
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   cmac_algorithm_supportedB   R   c         C` s   d S(   sQ   
        Create a context for calculating a message authentication code.
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_cmac_ctxH   R   (   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR   @   s   t   PBKDF2HMACBackendc           B` s,   e  Z e j d  „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sd   
        Return True if the hash algorithm is supported for PBKDF2 by this
        backend.
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   pbkdf2_hmac_supportedQ   R   c         C` s   d S(   sN   
        Return length bytes derived from provided PBKDF2 parameters.
        N(    (   R   R   t   lengtht   saltt
   iterationst   key_material(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   derive_pbkdf2_hmacX   R   (   R   R   R   R   R   R    (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR   O   s   t
   RSABackendc           B` sb   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sq   
        Generate an RSAPrivateKey instance with public_exponent and a modulus
        of key_size bits.
        N(    (   R   t   public_exponentt   key_size(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   generate_rsa_private_keyb   R   c         C` s   d S(   sQ   
        Returns True if the backend supports the given padding options.
        N(    (   R   t   padding(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   rsa_padding_supportedi   R   c         C` s   d S(   sg   
        Returns True if the backend supports the given parameters for key
        generation.
        N(    (   R   R"   R#   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt!   generate_rsa_parameters_supportedo   R   c         C` s   d S(   s4   
        Returns an RSAPrivateKey provider.
        N(    (   R   t   numbers(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_rsa_private_numbersv   R   c         C` s   d S(   s3   
        Returns an RSAPublicKey provider.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_rsa_public_numbers|   R   (	   R   R   R   R   R$   R&   R'   R)   R*   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR!   `   s
   t
   DSABackendc           B` s˜   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z	 e j d „  ƒ Z
 e j d „  ƒ Z RS(   c         C` s   d S(   sT   
        Generate a DSAParameters instance with a modulus of key_size bits.
        N(    (   R   R#   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   generate_dsa_parameters…   R   c         C` s   d S(   sf   
        Generate a DSAPrivateKey instance with parameters as a DSAParameters
        object.
        N(    (   R   t
   parameters(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   generate_dsa_private_key‹   R   c         C` s   d S(   sH   
        Generate a DSAPrivateKey instance using key size only.
        N(    (   R   R#   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt'   generate_dsa_private_key_and_parameters’   R   c         C` s   d S(   sX   
        Return True if the hash algorithm is supported by the backend for DSA.
        N(    (   R   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   dsa_hash_supported˜   R   c         C` s   d S(   sU   
        Return True if the parameters are supported by the backend for DSA.
        N(    (   R   t   pt   qt   g(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   dsa_parameters_supportedž   R   c         C` s   d S(   s3   
        Returns a DSAPrivateKey provider.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dsa_private_numbers¤   R   c         C` s   d S(   s2   
        Returns a DSAPublicKey provider.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dsa_public_numbersª   R   c         C` s   d S(   s3   
        Returns a DSAParameters provider.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dsa_parameter_numbers°   R   (   R   R   R   R   R,   R.   R/   R0   R4   R5   R6   R7   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR+   ƒ   s   t   EllipticCurveBackendc           B` s†   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z	 e j d „  ƒ Z
 RS(   c         C` s   d S(   s   
        Returns True if the backend supports the named elliptic curve with the
        specified signature algorithm.
        N(    (   R   t   signature_algorithmt   curve(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt,   elliptic_curve_signature_algorithm_supported¹   R   c         C` s   d S(   sP   
        Returns True if the backend supports the named elliptic curve.
        N(    (   R   R:   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   elliptic_curve_supportedÂ   R   c         C` s   d S(   sW   
        Return an object conforming to the EllipticCurvePrivateKey interface.
        N(    (   R   R:   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt#   generate_elliptic_curve_private_keyÈ   R   c         C` s   d S(   sT   
        Return an EllipticCurvePublicKey provider using the given numbers.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt"   load_elliptic_curve_public_numbersÎ   R   c         C` s   d S(   sU   
        Return an EllipticCurvePrivateKey provider using the given numbers.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt#   load_elliptic_curve_private_numbersÔ   R   c         C` s   d S(   sV   
        Returns whether the exchange algorithm is supported by this backend.
        N(    (   R   R   R:   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt+   elliptic_curve_exchange_algorithm_supportedÚ   R   c         C` s   d S(   sL   
        Compute the private key given the private value and curve.
        N(    (   R   t   private_valueR:   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt!   derive_elliptic_curve_private_keyà   R   (   R   R   R   R   R;   R<   R=   R>   R?   R@   RB   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyR8   ·   s   	t   PEMSerializationBackendc           B` s>   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sz   
        Loads a private key from PEM encoded data, using the provided password
        if the data is encrypted.
        N(    (   R   t   datat   password(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_pem_private_keyé   R   c         C` s   d S(   s;   
        Loads a public key from PEM encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_pem_public_keyð   R   c         C` s   d S(   sC   
        Load encryption parameters from PEM encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_pem_parametersö   R   (   R   R   R   R   RF   RG   RH   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyRC   ç   s   t   DERSerializationBackendc           B` s>   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C` s   d S(   sy   
        Loads a private key from DER encoded data. Uses the provided password
        if the data is encrypted.
        N(    (   R   RD   RE   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_der_private_keyÿ   R   c         C` s   d S(   s;   
        Loads a public key from DER encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_der_public_key  R   c         C` s   d S(   sC   
        Load encryption parameters from DER encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_der_parameters  R   (   R   R   R   R   RJ   RK   RL   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyRI   ý   s   t   X509Backendc           B` sª   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z	 e j d „  ƒ Z
 e j d „  ƒ Z e j d „  ƒ Z RS(	   c         C` s   d S(   sB   
        Load an X.509 certificate from PEM encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_pem_x509_certificate  R   c         C` s   d S(   sB   
        Load an X.509 certificate from DER encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_der_x509_certificate  R   c         C` s   d S(   s:   
        Load an X.509 CSR from DER encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_der_x509_csr!  R   c         C` s   d S(   s:   
        Load an X.509 CSR from PEM encoded data.
        N(    (   R   RD   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_pem_x509_csr'  R   c         C` s   d S(   sI   
        Create and sign an X.509 CSR from a CSR builder object.
        N(    (   R   t   buildert   private_keyR   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_x509_csr-  R   c         C` s   d S(   sX   
        Create and sign an X.509 certificate from a CertificateBuilder object.
        N(    (   R   RR   RS   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_x509_certificate3  R   c         C` s   d S(   s|   
        Create and sign an X.509 CertificateRevocationList from a
        CertificateRevocationListBuilder object.
        N(    (   R   RR   RS   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_x509_crl9  R   c         C` s   d S(   se   
        Create a RevokedCertificate object from a RevokedCertificateBuilder
        object.
        N(    (   R   RR   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   create_x509_revoked_certificate@  R   c         C` s   d S(   sG   
        Compute the DER encoded bytes of an X509 Name object.
        N(    (   R   t   name(    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   x509_name_bytesG  R   (   R   R   R   R   RN   RO   RP   RQ   RT   RU   RV   RW   RY   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyRM     s   t	   DHBackendc           B` s›   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z	 e j d d „ ƒ Z e j d „  ƒ Z RS(	   c         C` s   d S(   s„   
        Generate a DHParameters instance with a modulus of key_size bits.
        Using the given generator. Often 2 or 5.
        N(    (   R   t	   generatorR#   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   generate_dh_parametersP  R   c         C` s   d S(   sd   
        Generate a DHPrivateKey instance with parameters as a DHParameters
        object.
        N(    (   R   R-   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   generate_dh_private_keyW  R   c         C` s   d S(   sx   
        Generate a DHPrivateKey instance using key size only.
        Using the given generator. Often 2 or 5.
        N(    (   R   R[   R#   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt&   generate_dh_private_key_and_parameters^  R   c         C` s   d S(   s;   
        Load a DHPrivateKey from DHPrivateNumbers
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dh_private_numberse  R   c         C` s   d S(   s:   
        Load a DHPublicKey from DHPublicNumbers.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dh_public_numbersk  R   c         C` s   d S(   s<   
        Load DHParameters from DHParameterNumbers.
        N(    (   R   R(   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   load_dh_parameter_numbersq  R   c         C` s   d S(   sV   
        Returns whether the backend supports DH with these parameter values.
        N(    (   R   R1   R3   R2   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   dh_parameters_supportedw  R   c         C` s   d S(   sw   
        Returns True if the backend supports the serialization of DH objects
        with subgroup order (q).
        N(    (   R   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   dh_x942_serialization_supported}  R   N(   R   R   R   R   R\   R]   R^   R_   R`   Ra   t   NoneRb   Rc   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyRZ   N  s   t   ScryptBackendc           B` s   e  Z e j d  „  ƒ Z RS(   c         C` s   d S(   sG   
        Return bytes derived from provided Scrypt parameters.
        N(    (   R   R   R   R   t   nt   rR1   (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   derive_scrypt‡  R   (   R   R   R   R   Rh   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyRe   …  s   (   t
   __future__R    R   R   R   t   sixt   add_metaclasst   ABCMetat   objectR   R   R   R   R   R!   R+   R8   RC   RI   RM   RZ   Re   (    (    (    sF   lib/python2.7/site-packages/cryptography/hazmat/backends/interfaces.pyt   <module>   s8   "3/:6