Ë
    U¼Sfk  ã                   óB  — d Z ddl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 G d„ dej2                  «      Z G d„ dej6                  ej8                  «      Zy)zIECDSA (ES256) verifier and signer that use the ``cryptography`` library.
é    )ÚutilsN)Úbackends)Úhashes)Úserialization)Úec)Úpadding)Údecode_dss_signature)Úencode_dss_signature)Ú_helpers)Úbases   -----BEGIN CERTIFICATE-----c                   ój   — e Zd ZdZd„ Z ej                  ej                  «      d„ «       Z	e
d„ «       Zy)ÚES256VerifierzãVerifies ECDSA cryptographic signatures using public keys.

    Args:
        public_key (
                cryptography.hazmat.primitives.asymmetric.ec.ECDSAPublicKey):
            The public key used to verify signatures.
    c                 ó   — || _         y ©N)Ú_pubkey)ÚselfÚ
public_keys     úVC:\Users\user\Documents\project_loop\venv\Lib\site-packages\google/auth/crypt/es256.pyÚ__init__zES256Verifier.__init__/   s	   € Ø!ˆ�ó    c                 ó†  — t        j                  |«      }t        |«      dk7  ryt        j                  «       rt        j                  |d d d¬«      nt        j                  |d d d¬«      }t        j                  «       rt        j                  |dd  d¬«      nt        j                  |dd  d¬«      }t        ||«      }t        j                  |«      }	 | j                  j                  ||t        j                  t        j                  «       «      «       y# t        t         j"                  j$                  f$ r Y yw xY w)Né@   Fé    Úbig©Ú	byteorderT)r   Úto_bytesÚlenÚis_python_3ÚintÚ
from_bytesr   Úint_from_bytesr
   r   Úverifyr   ÚECDSAr   ÚSHA256Ú
ValueErrorÚcryptographyÚ
exceptionsÚInvalidSignature)r   ÚmessageÚ	signatureÚ	sig_bytesÚrÚsÚasn1_sigs          r   r#   zES256Verifier.verify2   s  € ô ×%Ñ% iÓ0ˆ	Üˆy‹>˜RÒØô ×#Ñ#Ô%ô �N‰N˜9 S b˜>°UˆNÔ;ä×%Ñ% i°° nÀÔFð 	
ô ×#Ñ#Ô%ô �N‰N˜9 R S˜>°UˆNÔ;ä×%Ñ% i°° nÀÔFð 	
ô
 (¨¨1Ó-ˆä×#Ñ# GÓ,ˆð	Ø�L‰L×Ñ ¨'´2·8±8¼F¿M¹M»OÓ3LÔMØøÜœL×3Ñ3×DÑDÐEò 	Ùð	ús   ÃAD Ä#E Ä?E c                 óê   — t        j                  |«      }t        |v r5t        j                  j                  |t        «      }|j                  «       }nt        j                  |t        «      } | |«      S )ay  Construct an 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:
            Verifier: The constructed verifier.

        Raises:
            ValueError: If the public key can't be parsed.
        )
r   r   Ú_CERTIFICATE_MARKERr'   Úx509Úload_pem_x509_certificateÚ_BACKENDr   r   Úload_pem_public_key)Úclsr   Úpublic_key_dataÚcertÚpubkeys        r   Úfrom_stringzES256Verifier.from_stringK   sc   € ô #×+Ñ+¨JÓ7ˆä /Ñ1Ü×$Ñ$×>Ñ>Ø¤óˆDð —_‘_Ó&‰Fô #×6Ñ6°ÌÓQˆFá�6‹{Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úcopy_docstringr   ÚVerifierr#   Úclassmethodr:   © r   r   r   r   &   sE   „ ñò"ð €X×Ñ˜TŸ]™]Ó+ñó ,ðð0 ñó ñr   r   c                   óÈ   — e Zd ZdZd	d„Ze ej                  ej                  «      d„ «       «       Z
 ej                  ej                  «      d„ «       Zed	d„«       Zd„ Zd„ Zy)
ÚES256Signeraˆ  Signs messages with an ECDSA private key.

    Args:
        private_key (
                cryptography.hazmat.primitives.asymmetric.ec.ECDSAPrivateKey):
            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.
    Nc                 ó    — || _         || _        y r   )Ú_keyÚ_key_id)r   Úprivate_keyÚkey_ids      r   r   zES256Signer.__init__t   s   € ØˆŒ	Øˆ�r   c                 ó   — | j                   S r   )rG   )r   s    r   rI   zES256Signer.key_idx   s   € ð �|‰|Ðr   c                 óš  — t        j                  |«      }| j                  j                  |t	        j
                  t        j                  «       «      «      }t        |«      \  }}t        j                  «       r'|j                  dd¬«      |j                  dd¬«      z   S t        j                  |d«      t        j                  |d«      z   S )Nr   r   r   )r   r   rF   Úsignr   r$   r   r%   r	   r   r   Úint_to_bytes)r   r*   Úasn1_signaturer-   r.   s        r   rL   zES256Signer.sign}   s¥   € ä×#Ñ# GÓ,ˆØŸ™Ÿ™¨´·±¼&¿-¹-»/Ó1JÓKˆô & nÓ5‰ˆˆAô ×#Ñ#Ô%ð �Z‰Z˜ eˆZÓ,¨q¯z©z¸"È¨zÓ/NÑNð	
ô ×$Ñ$ Q¨Ó+¬e×.@Ñ.@ÀÀBÓ.GÑGð	
r   c                 óx   — t        j                  |«      }t        j                  |dt        ¬«      } | ||¬«      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Úbackend)rI   )r   r   r   Úload_pem_private_keyr4   )r6   ÚkeyrI   rH   s       r   r:   zES256Signer.from_stringŠ   s:   € ô$ ×Ñ Ó$ˆÜ#×8Ñ8Ø˜$¬ô
ˆñ �; vÔ.Ð.r   c                 ó   — | j                   j                  «       }| 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ES256Signer.__getstate__¢   sb   € à—‘×"Ñ"Ó$ˆØŸ	™	×/Ñ/Ü"×+Ñ+×/Ñ/Ü ×.Ñ.×4Ñ4Ü!.×!;Ñ!;Ó!=ð 0ó 
ˆˆf‰ð
 ˆr   c                 ór   — t        j                  |d   d«      |d<   | j                  j                  |«       y)z3Pickle helper that deserializes the _key attribute.rF   N)r   rR   rX   Úupdater`   s     r   Ú__setstate__zES256Signer.__setstate__¬   s.   € ä%×:Ñ:¸5À¹=È$ÓOˆˆf‰Ø�‰×Ñ˜UÕ#r   r   )r;   r<   r=   r>   r   Úpropertyr   r?   r   ÚSignerrI   rL   rA   r:   rb   re   rB   r   r   rD   rD   h   s|   „ ñ	óð Ø€X×Ñ˜TŸ[™[Ó)ñó *ó ðð €X×Ñ˜TŸ[™[Ó)ñ

ó *ð

ð ò/ó ð/ò.ó$r   rD   )r>   r'   r   Úcryptography.exceptionsÚcryptography.hazmatr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   r   Ú/cryptography.hazmat.primitives.asymmetric.utilsr	   r
   Úcryptography.x509Úgoogle.authr   Úgoogle.auth.cryptr   r1   Údefault_backendr4   ÚPKCS1v15Ú_PADDINGr@   r   rg   ÚFromServiceAccountMixinrD   rB   r   r   ú<module>rt      sƒ   ðñõ Û Ý (Ý 1Ý 8Ý 8Ý =Ý PÝ PÛ å  Ý "ð 5Ð Ø#ˆ8×#Ñ#Ó%€Øˆ7×ÑÓ€ô?�D—M‘Mô ?ôDG$�$—+‘+˜t×;Ñ;õ G$r   