Ë
    £…jm  ã                   ól   — d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ  G d„ d	«      Zy)
é    N)ÚOptional)Úx509)ÚhashesÚserialization)Úpadding)ÚRSAPrivateKey)Údefault_backendc                   óx   — e Zd ZdZddedee   ddfd„Zedefd„«       Z	edefd„«       Z
d	edefd
„Zd	edefd„Zy)ÚAadClientCertificatea  Wraps 'cryptography' to provide the crypto operations AadClient requires for certificate authentication.

    :param bytes pem_bytes: bytes of a a PEM-encoded certificate including the (RSA) private key
    :param bytes password: (optional) the certificate's password
    NÚ	pem_bytesÚpasswordÚreturnc                 óô  — t        j                  ||t        «       ¬«      }t        |t        «      st        d«      ‚|| _        t        j                  |t        «       «      }|j                  t        j                  «       «      }|j                  t        j                  «       «      }t        j                  |«      j                  d«      | _        t        j                  |«      j                  d«      | _        y )N)r   ÚbackendzNThe certificate must have an RSA private key because RS256 is used for signingzutf-8)r   Úload_pem_private_keyr	   Ú
isinstancer   Ú
ValueErrorÚ_private_keyr   Úload_pem_x509_certificateÚfingerprintr   ÚSHA1ÚSHA256Úbase64Úurlsafe_b64encodeÚdecodeÚ_thumbprintÚ_sha256_thumbprint)Úselfr   r   Úprivate_keyÚcertr   Úsha256_fingerprints          úo/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/azure/identity/_internal/aadclient_certificate.pyÚ__init__zAadClientCertificate.__init__   s¸   € Ü#×8Ñ8¸ÈXÔ_nÓ_pÔqˆÜ˜+¤}Ô5ÜÐmÓnÐnØ'ˆÔä×-Ñ-¨i¼Ó9JÓKˆØ×&Ñ&¤v§{¡{£}Ó5ˆØ!×-Ñ-¬f¯m©m«oÓ>ÐÜ!×3Ñ3°KÓ@×GÑGÈÓPˆÔÜ"(×":Ñ":Ð;MÓ"N×"UÑ"UÐV]Ó"^ˆÕó    c                 ó   — | j                   S )z^The certificate's SHA1 thumbprint as a base64url-encoded string.

        :rtype: str
        )r   ©r   s    r"   Ú
thumbprintzAadClientCertificate.thumbprint!   s   € ð ×ÑÐr$   c                 ó   — | j                   S )z`The certificate's SHA256 thumbprint as a base64url-encoded string.

        :rtype: str
        )r   r&   s    r"   Úsha256_thumbprintz&AadClientCertificate.sha256_thumbprint)   s   € ð ×&Ñ&Ð&r$   Ú	plaintextc                 ó„   — | j                   j                  |t        j                  «       t	        j
                  «       «      S )z†Sign bytes using RS256.

        :param bytes plaintext: Bytes to sign.
        :return: The signature.
        :rtype: bytes
        )r   Úsignr   ÚPKCS1v15r   r   )r   r*   s     r"   Ú
sign_rs256zAadClientCertificate.sign_rs2561   s3   € ð × Ñ ×%Ñ%Ø”w×'Ñ'Ó)¬6¯=©=«?ó
ð 	
r$   c                 óÈ   — t        j                  «       }| j                  j                  |t	        j
                  t	        j                  |«      |j                  ¬«      |«      S )z†Sign bytes using PS256.

        :param bytes plaintext: Bytes to sign.
        :return: The signature.
        :rtype: bytes
        )ÚmgfÚsalt_length)r   r   r   r,   r   ÚPSSÚMGF1Údigest_size)r   r*   Úhash_algs      r"   Ú
sign_ps256zAadClientCertificate.sign_ps256<   sM   € ô —=‘=“?ˆð × Ñ ×%Ñ%ØÜ�K‰KœGŸL™L¨Ó2À×@TÑ@TÔUØó
ð 	
r$   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úbytesr   r#   ÚpropertyÚstrr'   r)   r.   r6   © r$   r"   r   r      s…   „ ññ
_ %ð 
_°8¸E±?ð 
_Èdó 
_ð ð ˜Cò  ó ð ð ð' 3ò 'ó ð'ð	
 Eð 	
¨eó 	
ð
 Eð 
¨eô 
r$   r   )r   Útypingr   Úcryptographyr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   Ú-cryptography.hazmat.primitives.asymmetric.rsar   Úcryptography.hazmat.backendsr	   r   r>   r$   r"   ú<module>rE      s&   ðó
 Ý Ý ß @Ý =Ý GÝ 8÷=
ò =
r$   