o
    Ç `*  ã                   @   s”  d dl mZmZmZ d dlZd dlZe ej¡G dd„ deƒƒZ	e ej¡G dd„ deƒƒZ
e ej¡G dd„ deƒƒZe ej¡G d	d
„ d
eƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ deƒƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionNc                   @   ó6   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZdS )ÚCipherBackendc                 C   ó   dS )zI
        Return True if the given cipher and mode are supported.
        N© ©ÚselfZcipherÚmoder   r   ú}home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/backends/interfaces.pyÚcipher_supported   ó    zCipherBackend.cipher_supportedc                 C   r   )zF
        Get a CipherContext that can be used for encryption.
        Nr   r	   r   r   r   Úcreate_symmetric_encryption_ctx   r   z-CipherBackend.create_symmetric_encryption_ctxc                 C   r   )zF
        Get a CipherContext that can be used for decryption.
        Nr   r	   r   r   r   Úcreate_symmetric_decryption_ctx   r   z-CipherBackend.create_symmetric_decryption_ctxN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r   r   r   r   r   r      s    

r   c                   @   ó(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚHashBackendc                 C   r   )zQ
        Return True if the hash algorithm is supported by this backend.
        Nr   ©r
   Ú	algorithmr   r   r   Úhash_supported#   r   zHashBackend.hash_supportedc                 C   r   )zH
        Create a HashContext for calculating a message digest.
        Nr   r   r   r   r   Úcreate_hash_ctx)   r   zHashBackend.create_hash_ctxN)r   r   r   r   r   r   r   r   r   r   r   r   !   ó
    
r   c                   @   r   )ÚHMACBackendc                 C   r   )zb
        Return True if the hash algorithm is supported for HMAC by this
        backend.
        Nr   r   r   r   r   Úhmac_supported2   r   zHMACBackend.hmac_supportedc                 C   r   ©zQ
        Create a context for calculating a message authentication code.
        Nr   )r
   Úkeyr   r   r   r   Úcreate_hmac_ctx9   r   zHMACBackend.create_hmac_ctxN)r   r   r   r   r   r   r!   r   r   r   r   r   0   ó
    
r   c                   @   r   )ÚCMACBackendc                 C   r   )zX
        Returns True if the block cipher is supported for CMAC by this backend
        Nr   r   r   r   r   Úcmac_algorithm_supportedB   r   z$CMACBackend.cmac_algorithm_supportedc                 C   r   r   r   r   r   r   r   Úcreate_cmac_ctxH   r   zCMACBackend.create_cmac_ctxN)r   r   r   r   r   r$   r%   r   r   r   r   r#   @   r   r#   c                   @   r   )ÚPBKDF2HMACBackendc                 C   r   )zd
        Return True if the hash algorithm is supported for PBKDF2 by this
        backend.
        Nr   r   r   r   r   Úpbkdf2_hmac_supportedQ   r   z'PBKDF2HMACBackend.pbkdf2_hmac_supportedc                 C   r   )zN
        Return length bytes derived from provided PBKDF2 parameters.
        Nr   )r
   r   ÚlengthÚsaltZ
iterationsÚkey_materialr   r   r   Úderive_pbkdf2_hmacX   r   z$PBKDF2HMACBackend.derive_pbkdf2_hmacN)r   r   r   r   r   r'   r+   r   r   r   r   r&   O   r"   r&   c                   @   sR   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	dS )Ú
RSABackendc                 C   r   )zq
        Generate an RSAPrivateKey instance with public_exponent and a modulus
        of key_size bits.
        Nr   ©r
   Zpublic_exponentÚkey_sizer   r   r   Úgenerate_rsa_private_keyc   r   z#RSABackend.generate_rsa_private_keyc                 C   r   )zQ
        Returns True if the backend supports the given padding options.
        Nr   )r
   Úpaddingr   r   r   Úrsa_padding_supportedj   r   z RSABackend.rsa_padding_supportedc                 C   r   )zg
        Returns True if the backend supports the given parameters for key
        generation.
        Nr   r-   r   r   r   Ú!generate_rsa_parameters_supportedp   r   z,RSABackend.generate_rsa_parameters_supportedc                 C   r   )z4
        Returns an RSAPrivateKey provider.
        Nr   ©r
   Únumbersr   r   r   Úload_rsa_private_numbersw   r   z#RSABackend.load_rsa_private_numbersc                 C   r   )z3
        Returns an RSAPublicKey provider.
        Nr   r3   r   r   r   Úload_rsa_public_numbers}   r   z"RSABackend.load_rsa_public_numbersN)
r   r   r   r   r   r/   r1   r2   r5   r6   r   r   r   r   r,   a   s    



r,   c                   @   s|   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	ejdd„ ƒZ
ejdd„ ƒZejdd„ ƒZdS )Ú
DSABackendc                 C   r   )zT
        Generate a DSAParameters instance with a modulus of key_size bits.
        Nr   ©r
   r.   r   r   r   Úgenerate_dsa_parameters†   r   z"DSABackend.generate_dsa_parametersc                 C   r   )zf
        Generate a DSAPrivateKey instance with parameters as a DSAParameters
        object.
        Nr   ©r
   Ú
parametersr   r   r   Úgenerate_dsa_private_keyŒ   r   z#DSABackend.generate_dsa_private_keyc                 C   r   )zH
        Generate a DSAPrivateKey instance using key size only.
        Nr   r8   r   r   r   Ú'generate_dsa_private_key_and_parameters“   r   z2DSABackend.generate_dsa_private_key_and_parametersc                 C   r   )zX
        Return True if the hash algorithm is supported by the backend for DSA.
        Nr   r   r   r   r   Údsa_hash_supported™   r   zDSABackend.dsa_hash_supportedc                 C   r   )zU
        Return True if the parameters are supported by the backend for DSA.
        Nr   )r
   ÚpÚqÚgr   r   r   Údsa_parameters_supportedŸ   r   z#DSABackend.dsa_parameters_supportedc                 C   r   )z3
        Returns a DSAPrivateKey provider.
        Nr   r3   r   r   r   Úload_dsa_private_numbers¥   r   z#DSABackend.load_dsa_private_numbersc                 C   r   )z2
        Returns a DSAPublicKey provider.
        Nr   r3   r   r   r   Úload_dsa_public_numbers«   r   z"DSABackend.load_dsa_public_numbersc                 C   r   )z3
        Returns a DSAParameters provider.
        Nr   r3   r   r   r   Úload_dsa_parameter_numbers±   r   z%DSABackend.load_dsa_parameter_numbersN)r   r   r   r   r   r9   r<   r=   r>   rB   rC   rD   rE   r   r   r   r   r7   „   s"    






r7   c                   @   sn   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	ejdd„ ƒZ
ejdd„ ƒZdS )ÚEllipticCurveBackendc                 C   r   )z
        Returns True if the backend supports the named elliptic curve with the
        specified signature algorithm.
        Nr   )r
   Zsignature_algorithmÚcurver   r   r   Ú,elliptic_curve_signature_algorithm_supportedº   r   zAEllipticCurveBackend.elliptic_curve_signature_algorithm_supportedc                 C   r   )zP
        Returns True if the backend supports the named elliptic curve.
        Nr   ©r
   rG   r   r   r   Úelliptic_curve_supportedÃ   r   z-EllipticCurveBackend.elliptic_curve_supportedc                 C   r   )zW
        Return an object conforming to the EllipticCurvePrivateKey interface.
        Nr   rI   r   r   r   Ú#generate_elliptic_curve_private_keyÉ   r   z8EllipticCurveBackend.generate_elliptic_curve_private_keyc                 C   r   )zT
        Return an EllipticCurvePublicKey provider using the given numbers.
        Nr   r3   r   r   r   Ú"load_elliptic_curve_public_numbersÏ   r   z7EllipticCurveBackend.load_elliptic_curve_public_numbersc                 C   r   )zU
        Return an EllipticCurvePrivateKey provider using the given numbers.
        Nr   r3   r   r   r   Ú#load_elliptic_curve_private_numbersÕ   r   z8EllipticCurveBackend.load_elliptic_curve_private_numbersc                 C   r   )zV
        Returns whether the exchange algorithm is supported by this backend.
        Nr   )r
   r   rG   r   r   r   Ú+elliptic_curve_exchange_algorithm_supportedÛ   r   z@EllipticCurveBackend.elliptic_curve_exchange_algorithm_supportedc                 C   r   )zL
        Compute the private key given the private value and curve.
        Nr   )r
   Zprivate_valuerG   r   r   r   Ú!derive_elliptic_curve_private_keyá   r   z6EllipticCurveBackend.derive_elliptic_curve_private_keyN)r   r   r   r   r   rH   rJ   rK   rL   rM   rN   rO   r   r   r   r   rF   ¸   s    





rF   c                   @   r   )ÚPEMSerializationBackendc                 C   r   )zz
        Loads a private key from PEM encoded data, using the provided password
        if the data is encrypted.
        Nr   ©r
   ÚdataÚpasswordr   r   r   Úload_pem_private_keyê   r   z,PEMSerializationBackend.load_pem_private_keyc                 C   r   )z;
        Loads a public key from PEM encoded data.
        Nr   ©r
   rR   r   r   r   Úload_pem_public_keyñ   r   z+PEMSerializationBackend.load_pem_public_keyc                 C   r   )zC
        Load encryption parameters from PEM encoded data.
        Nr   rU   r   r   r   Úload_pem_parameters÷   r   z+PEMSerializationBackend.load_pem_parametersN)r   r   r   r   r   rT   rV   rW   r   r   r   r   rP   è   ó    

rP   c                   @   r   )ÚDERSerializationBackendc                 C   r   )zy
        Loads a private key from DER encoded data. Uses the provided password
        if the data is encrypted.
        Nr   rQ   r   r   r   Úload_der_private_key   r   z,DERSerializationBackend.load_der_private_keyc                 C   r   )z;
        Loads a public key from DER encoded data.
        Nr   rU   r   r   r   Úload_der_public_key  r   z+DERSerializationBackend.load_der_public_keyc                 C   r   )zC
        Load encryption parameters from DER encoded data.
        Nr   rU   r   r   r   Úload_der_parameters  r   z+DERSerializationBackend.load_der_parametersN)r   r   r   r   r   rZ   r[   r\   r   r   r   r   rY   þ   rX   rY   c                   @   sŠ   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	ejdd„ ƒZ
ejdd„ ƒZejdd„ ƒZejdd„ ƒZdS )ÚX509Backendc                 C   r   )zB
        Load an X.509 certificate from PEM encoded data.
        Nr   rU   r   r   r   Úload_pem_x509_certificate  r   z%X509Backend.load_pem_x509_certificatec                 C   r   )zB
        Load an X.509 certificate from DER encoded data.
        Nr   rU   r   r   r   Úload_der_x509_certificate  r   z%X509Backend.load_der_x509_certificatec                 C   r   )z:
        Load an X.509 CSR from DER encoded data.
        Nr   rU   r   r   r   Úload_der_x509_csr"  r   zX509Backend.load_der_x509_csrc                 C   r   )z:
        Load an X.509 CSR from PEM encoded data.
        Nr   rU   r   r   r   Úload_pem_x509_csr(  r   zX509Backend.load_pem_x509_csrc                 C   r   )zI
        Create and sign an X.509 CSR from a CSR builder object.
        Nr   ©r
   ÚbuilderZprivate_keyr   r   r   r   Úcreate_x509_csr.  r   zX509Backend.create_x509_csrc                 C   r   )zX
        Create and sign an X.509 certificate from a CertificateBuilder object.
        Nr   rb   r   r   r   Úcreate_x509_certificate4  r   z#X509Backend.create_x509_certificatec                 C   r   )z|
        Create and sign an X.509 CertificateRevocationList from a
        CertificateRevocationListBuilder object.
        Nr   rb   r   r   r   Úcreate_x509_crl:  r   zX509Backend.create_x509_crlc                 C   r   )ze
        Create a RevokedCertificate object from a RevokedCertificateBuilder
        object.
        Nr   )r
   rc   r   r   r   Úcreate_x509_revoked_certificateA  r   z+X509Backend.create_x509_revoked_certificatec                 C   r   )zG
        Compute the DER encoded bytes of an X509 Name object.
        Nr   )r
   Únamer   r   r   Úx509_name_bytesH  r   zX509Backend.x509_name_bytesN)r   r   r   r   r   r^   r_   r`   ra   rd   re   rf   rg   ri   r   r   r   r   r]     s&    







r]   c                   @   s~   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	ejdd„ ƒZ
ejddd„ƒZejdd„ ƒZdS )Ú	DHBackendc                 C   r   )z„
        Generate a DHParameters instance with a modulus of key_size bits.
        Using the given generator. Often 2 or 5.
        Nr   ©r
   Ú	generatorr.   r   r   r   Úgenerate_dh_parametersQ  r   z DHBackend.generate_dh_parametersc                 C   r   )zd
        Generate a DHPrivateKey instance with parameters as a DHParameters
        object.
        Nr   r:   r   r   r   Úgenerate_dh_private_keyX  r   z!DHBackend.generate_dh_private_keyc                 C   r   )zx
        Generate a DHPrivateKey instance using key size only.
        Using the given generator. Often 2 or 5.
        Nr   rk   r   r   r   Ú&generate_dh_private_key_and_parameters_  r   z0DHBackend.generate_dh_private_key_and_parametersc                 C   r   )z;
        Load a DHPrivateKey from DHPrivateNumbers
        Nr   r3   r   r   r   Úload_dh_private_numbersf  r   z!DHBackend.load_dh_private_numbersc                 C   r   )z:
        Load a DHPublicKey from DHPublicNumbers.
        Nr   r3   r   r   r   Úload_dh_public_numbersl  r   z DHBackend.load_dh_public_numbersc                 C   r   )z<
        Load DHParameters from DHParameterNumbers.
        Nr   r3   r   r   r   Úload_dh_parameter_numbersr  r   z#DHBackend.load_dh_parameter_numbersNc                 C   r   )zV
        Returns whether the backend supports DH with these parameter values.
        Nr   )r
   r?   rA   r@   r   r   r   Údh_parameters_supportedx  r   z!DHBackend.dh_parameters_supportedc                 C   r   )zw
        Returns True if the backend supports the serialization of DH objects
        with subgroup order (q).
        Nr   )r
   r   r   r   Údh_x942_serialization_supported~  r   z)DHBackend.dh_x942_serialization_supported)N)r   r   r   r   r   rm   rn   ro   rp   rq   rr   rs   rt   r   r   r   r   rj   O  s"    





rj   c                   @   s   e Zd Zejdd„ ƒZdS )ÚScryptBackendc                 C   r   )zG
        Return bytes derived from provided Scrypt parameters.
        Nr   )r
   r*   r)   r(   ÚnÚrr?   r   r   r   Úderive_scryptˆ  r   zScryptBackend.derive_scryptN)r   r   r   r   r   rx   r   r   r   r   ru   †  s    ru   )Ú
__future__r   r   r   r   ZsixZadd_metaclassÚABCMetaÚobjectr   r   r   r#   r&   r,   r7   rF   rP   rY   r]   rj   ru   r   r   r   r   Ú<module>   s:   






"
3
/


:
6