§
    ÂiS  ã                   ól  — d Z ddlmZ ddlmZ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dlmZ dd	lmZ dd
lmZ ddlmZ ddlZ	ddlmZ ddlmZ dZ ej        ¦   «         Z ej        ¦   «         Ze G d„ d¦  «        ¦   «         Z G d„ dej         ¦  «        Z! G d„ dej"        ej#        ¦  «        Z$dS )zAECDSA verifier and signer that use the ``cryptography`` library.
é    )Ú	dataclass)ÚAnyÚDictÚOptionalÚUnionN)Úbackends)Úhashes)Úserialization)Úec)Úpadding)Údecode_dss_signature)Úencode_dss_signature)Ú_helpers)Úbases   -----BEGIN CERTIFICATE-----c                   ó¢   — e Zd ZU dZeed<   ej        ed<   eed<   e	de
ej        ej        f         fd„¦   «         Ze	dej        fd„¦   «         Zd	S )
Ú_ESAttributeszÑA class that models ECDSA attributes.

    Attributes:
        rs_size (int): Size for ASN.1 r and s size.
        sha_algo (hashes.HashAlgorithm): Hash algorithm.
        algorithm (str): Algorithm name.
    Úrs_sizeÚsha_algoÚ	algorithmÚkeyc                 ó6   — |                       |j        ¦  «        S ©N)Ú
from_curveÚcurve)Úclsr   s     ú^/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/google/auth/crypt/es.pyÚfrom_keyz_ESAttributes.from_key6   s   € ð �~Š~˜cœiÑ(Ô(Ð(ó    r   c                 ó®   — t          |t          j        ¦  «        r | dt          j        ¦   «         d¦  «        S  | dt          j        ¦   «         d¦  «        S )Né0   ÚES384é    ÚES256)Ú
isinstancer   Ú	SECP384R1r	   ÚSHA384ÚSHA256)r   r   s     r   r   z_ESAttributes.from_curve<   sN   € õ �e�Rœ\Ñ*Ô*ð 	5Ø�3�r�6œ=™?œ?¨GÑ4Ô4Ð4ð �3�r�6œ=™?œ?¨GÑ4Ô4Ð4r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__r	   ÚHashAlgorithmÚstrÚclassmethodr   r   ÚEllipticCurvePublicKeyÚEllipticCurvePrivateKeyr   ÚEllipticCurver   © r   r   r   r   (   s£   € € € € € € ðð ð €L€L�LØÔ"Ð"Ð"Ñ"Ø€N€N�Nàð)Ø˜Ô1°2Ô3MÐMÔNð)ð )ð )ñ „[ð)ð
 ð	5˜rÔ/ð 	5ð 	5ð 	5ñ „[ð	5ð 	5ð 	5r   r   c                   ó¦   — e Zd ZdZdej        ddfd„Z ej        e	j
        ¦  «        dededefd„¦   «         Zedeeef         dd fd	„¦   «         ZdS )
Ú
EsVerifierzëVerifies ECDSA cryptographic signatures using public keys.

    Args:
        public_key (
                cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey):
            The public key used to verify signatures.
    Ú
public_keyÚreturnNc                 óR   — || _         t                               |¦  «        | _        d S r   )Ú_pubkeyr   r   Ú_attributes)Úselfr7   s     r   Ú__init__zEsVerifier.__init__R   s%   € Ø!ˆŒÝ(×1Ò1°*Ñ=Ô=ˆÔÐÐr   ÚmessageÚ	signaturec                 ó(  — t          j        |¦  «        }t          |¦  «        | j        j        dz  k    rdS t
                               |d | j        j        …         d¬¦  «        }t
                               || j        j        d …         d¬¦  «        }t          ||¦  «        }t          j        |¦  «        }	 | j         	                    ||t          j        | j        j        ¦  «        ¦  «         dS # t          t          j        j        f$ r Y dS w xY w)Né   FÚbig©Ú	byteorderT)r   Úto_bytesÚlenr;   r   r,   Ú
from_bytesr   r:   Úverifyr   ÚECDSAr   Ú
ValueErrorÚcryptographyÚ
exceptionsÚInvalidSignature)r<   r>   r?   Ú	sig_bytesÚrÚsÚasn1_sigs          r   rH   zEsVerifier.verifyV   s  € õ Ô% iÑ0Ô0ˆ	Ýˆy‰>Œ>˜TÔ-Ô5¸Ñ9Ò9Ð9Ø�5Ý�NŠN˜9Ð%? tÔ'7Ô'?Ð%?Ô@ÈEˆNÑRÔRˆÝ�NŠN˜9 TÔ%5Ô%=Ð%?Ð%?Ô@ÈEˆNÑRÔRˆÝ'¨¨1Ñ-Ô-ˆåÔ# GÑ,Ô,ˆð	ØŒL×Ò ¨'µ2´8¸DÔ<LÔ<UÑ3VÔ3VÑWÔWÐWØ�4øÝ�LÔ3ÔDÐEð 	ð 	ð 	Ø�5�5ð	øøøs   Â88C2 Ã2DÄDc                 óL  — t          j        |¦  «        }t          |v r:t          j                             |t          ¦  «        }|                     ¦   «         }nt          j	        |t          ¦  «        }t          |t          j        ¦  «        st          d¦  «        ‚ | |¦  «        S )aŠ  Construct a Verifier instance from a public key or public
        certificate string.

        Args:
            public_key (Union[str, bytes]): The public key in PEM format or the
                x509 public key certificate.

        Returns:
            google.auth.crypt.Verifier: The constructed verifier.

        Raises:
            ValueError: If the public key can't be parsed.
        z2Expected public key of type EllipticCurvePublicKey)r   rE   Ú_CERTIFICATE_MARKERrK   Úx509Úload_pem_x509_certificateÚ_BACKENDr7   r
   Úload_pem_public_keyr$   r   r1   Ú	TypeError)r   r7   Úpublic_key_dataÚcertÚpubkeys        r   Úfrom_stringzEsVerifier.from_stringg   s–   € õ #Ô+¨JÑ7Ô7ˆå /Ð1Ð1ÝÔ$×>Ò>Ø¥ñô ˆDð —_’_Ñ&Ô&ˆFˆFõ #Ô6°ÍÑQÔQˆFå˜&¥"Ô";Ñ<Ô<ð 	RÝÐPÑQÔQÐQàˆs�6‰{Œ{Ðr   )r(   r)   r*   r+   r   r1   r=   r   Úcopy_docstringr   ÚVerifierÚbytesÚboolrH   r0   r   r/   r\   r4   r   r   r6   r6   I   s¿   € € € € € ðð ð> 2Ô#<ð >Àð >ð >ð >ð >ð €XÔ˜Tœ]Ñ+Ô+ð˜eð °ð ¸$ð ð ð ñ ,Ô+ðð  ð U¨3°¨:Ô%6ð ¸<ð ð ð ñ „[ðð ð r   r6   c                   ó€  — e Zd ZdZ	 ddej        dee         ddfd„Ze	defd„¦   «         Z
e	 ej        ej        ¦  «        dee         fd„¦   «         ¦   «         Z ej        ej        ¦  «        d	edefd
„¦   «         Ze	 ddeeef         dee         dd fd„¦   «         Zdeeef         fd„Zdeeef         ddfd„ZdS )ÚEsSignera�  Signs messages with an ECDSA private key.

    Args:
        private_key (
                cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey):
            The private key to sign with.
        key_id (str): Optional key ID used to identify this private key. This
            can be useful to associate the private key with its associated
            public key or certificate.
    NÚprivate_keyÚkey_idr8   c                 ó`   — || _         || _        t                               |¦  «        | _        d S r   )Ú_keyÚ_key_idr   r   r;   )r<   rc   rd   s      r   r=   zEsSigner.__init__“   s.   € ð  ˆŒ	ØˆŒÝ(×1Ò1°+Ñ>Ô>ˆÔÐÐr   c                 ó   — | j         j        S )zkName of the algorithm used to sign messages.
        Returns:
            str: The algorithm name.
        )r;   r   ©r<   s    r   r   zEsSigner.algorithmš   s   € ð ÔÔ)Ð)r   c                 ó   — | j         S r   )rg   ri   s    r   rd   zEsSigner.key_id¢   s   € ð Œ|Ðr   r>   c                 óB  — t          j        |¦  «        }| j                             |t	          j        | j        j        ¦  «        ¦  «        }t          |¦  «        \  }}|                     | j        j	        d¬¦  «        |                     | j        j	        d¬¦  «        z   S )NrB   rC   )
r   rE   rf   Úsignr   rI   r;   r   r   r   )r<   r>   Úasn1_signaturerO   rP   s        r   rl   zEsSigner.sign§   s‘   € åÔ# GÑ,Ô,ˆØœŸš¨µ´¸$Ô:JÔ:SÑ1TÔ1TÑUÔUˆõ & nÑ5Ô5‰ˆˆAØ�zŠz˜$Ô*Ô2¸eˆzÑDÔDÀqÇzÂzØÔÔ$°ð HRñ H
ô H
ñ 
ð 	
r   r   c                 óÎ   — t          j        |¦  «        }t          j        |dt          ¬¦  «        }t          |t          j        ¦  «        st          d¦  «        ‚ | ||¬¦  «        S )al  Construct a RSASigner from a private key in PEM format.

        Args:
            key (Union[bytes, str]): Private key in PEM format.
            key_id (str): An optional key id used to identify the private key.

        Returns:
            google.auth.crypt._cryptography_rsa.RSASigner: The
            constructed signer.

        Raises:
            ValueError: If ``key`` is not ``bytes`` or ``str`` (unicode).
            UnicodeDecodeError: If ``key`` is ``bytes`` but cannot be decoded
                into a UTF-8 ``str``.
            ValueError: If ``cryptography`` "Could not deserialize key data."
        N)ÚpasswordÚbackendz4Expected private key of type EllipticCurvePrivateKey)rd   )	r   rE   r
   Úload_pem_private_keyrV   r$   r   r2   rX   )r   r   rd   Ú	key_bytesrc   s        r   r\   zEsSigner.from_string²   sn   € õ( Ô% cÑ*Ô*ˆ	Ý#Ô8Ø ­hð
ñ 
ô 
ˆõ ˜+¥rÔ'AÑBÔBð 	TÝÐRÑSÔSÐSàˆs�; vÐ.Ñ.Ô.Ð.r   c                 óÖ   — | j                              ¦   «         }| j                             t          j        j        t          j        j        t	          j	        ¦   «         ¬¦  «        |d<   |S )z1Pickle helper that serializes the _key attribute.)ÚencodingÚformatÚencryption_algorithmrf   )
Ú__dict__Úcopyrf   Úprivate_bytesr
   ÚEncodingÚPEMÚPrivateFormatÚPKCS8ÚNoEncryption©r<   Ústates     r   Ú__getstate__zEsSigner.__getstate__Ð   sZ   € à”×"Ò"Ñ$Ô$ˆØœ	×/Ò/Ý"Ô+Ô/Ý Ô.Ô4Ý!.Ô!;Ñ!=Ô!=ð 0ñ 
ô 
ˆˆf‰ð
 ˆr   r€   c                 óv   — t          j        |d         d¦  «        |d<   | j                             |¦  «         dS )z3Pickle helper that deserializes the _key attribute.rf   N)r
   rq   rw   Úupdater   s     r   Ú__setstate__zEsSigner.__setstate__Ú   s8   € å%Ô:¸5À¼=È$ÑOÔOˆˆf‰ØŒ×Ò˜UÑ#Ô#Ð#Ð#Ð#r   r   )r(   r)   r*   r+   r   r2   r   r/   r=   Úpropertyr   r   r]   r   ÚSignerrd   r_   rl   r0   r   r\   r   r   r�   r„   r4   r   r   rb   rb   ‡   s¡  € € € € € ð	ð 	ð PTð?ð ?ØÔ5ð?Ø?GÈ¼}ð?à	ð?ð ?ð ?ð ?ð ð*˜3ð *ð *ð *ñ „Xð*ð Ø€XÔ˜Tœ[Ñ)Ô)ð˜ œð ð ð ñ *Ô)ñ „Xðð €XÔ˜Tœ[Ñ)Ô)ð
˜Eð 
 eð 
ð 
ð 
ñ *Ô)ð
ð à=Að/ð /Ø˜˜s˜
Ô#ð/Ø-5°c¬]ð/à	ð/ð /ð /ñ „[ð/ð:˜d 3¨ 8œnð ð ð ð ð$ $ s¨C x¤.ð $°Tð $ð $ð $ð $ð $ð $r   rb   )%r+   Údataclassesr   Útypingr   r   r   r   Úcryptography.exceptionsrK   Úcryptography.hazmatr   Úcryptography.hazmat.primitivesr	   r
   Ú)cryptography.hazmat.primitives.asymmetricr   r   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r   Úcryptography.x509Úgoogle.authr   Úgoogle.auth.cryptr   rS   Údefault_backendrV   ÚPKCS1v15Ú_PADDINGr   r^   r6   r†   ÚFromServiceAccountMixinrb   r4   r   r   ú<module>r•      sÐ  ððð ð "Ð !Ð !Ð !Ð !Ð !Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =Ø PÐ PÐ PÐ PÐ PÐ PØ PÐ PÐ PÐ PÐ PÐ PØ Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "ð 5Ð Ø#ˆ8Ô#Ñ%Ô%€Øˆ7ÔÑÔ€ð ð5ð 5ð 5ð 5ð 5ñ 5ô 5ñ „ð5ð@;ð ;ð ;ð ;ð ;�”ñ ;ô ;ð ;ð|V$ð V$ð V$ð V$ð V$ˆtŒ{˜DÔ8ñ V$ô V$ð V$ð V$ð V$r   