§
    ¬˜ºhk  ã                   ó*  — 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j        ¦  «        Z G d„ dej        ej        ¦  «        ZdS )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dS )Ú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                 ó   — || _         d S ©N)Ú_pubkey)ÚselfÚ
public_keys     ú_/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/google/auth/crypt/es256.pyÚ__init__zES256Verifier.__init__/   s   € Ø!ˆŒˆˆó    c                 ó¸  — t          j        |¦  «        }t          |¦  «        dk    rdS t          j        ¦   «         r$t                               |d d…         d¬¦  «        nt          j        |d d…         d¬¦  «        }t          j        ¦   «         r$t                               |dd …         d¬¦  «        nt          j        |dd …         d¬¦  «        }t          ||¦  «        }t          j        |¦  «        }	 | j	         
                    ||t          j        t          j        ¦   «         ¦  «        ¦  «         dS # t          t           j        j        f$ r Y dS 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   sN  € õ Ô% iÑ0Ô0ˆ	Ýˆy‰>Œ>˜RÒÐØ�5õ Ô#Ñ%Ô%ðG�C�NŠN˜9 S b Sœ>°UˆNÑ;Ô;Ð;åÔ% i°°°¤nÀÐFÑFÔFð 	
õ Ô#Ñ%Ô%ðG�C�NŠN˜9 R S Sœ>°UˆNÑ;Ô;Ð;åÔ% i°°°¤nÀÐFÑFÔFð 	
õ
 (¨¨1Ñ-Ô-ˆåÔ# GÑ,Ô,ˆð	ØŒL×Ò ¨'µ2´8½F¼M¹O¼OÑ3LÔ3LÑMÔMÐMØ�4øÝ�LÔ3ÔDÐEð 	ð 	ð 	Ø�5�5ð	øøøs   Ã9?D: Ä:EÅEc                 óú   — t          j        |¦  «        }t          |v r:t          j                             |t          ¦  «        }|                     ¦   «         }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   sq   € õ #Ô+¨JÑ7Ô7ˆå /Ð1Ð1ÝÔ$×>Ò>Ø¥ñô ˆDð —_’_Ñ&Ô&ˆFˆFõ #Ô6°ÍÑQÔQˆFàˆs�6‰{Œ{Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úcopy_docstringr   ÚVerifierr#   Úclassmethodr:   © r   r   r   r   &   ss   € € € € € ðð ð"ð "ð "ð €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dS )
Ú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                 ó"   — || _         || _        d S 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                             |t	          j        t          j        ¦   «         ¦  «        ¦  «        }t          |¦  «        \  }}t          j	        ¦   «         r/|                     dd¬¦  «        |                     dd¬¦  «        z   n*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Ô1JÑKÔKˆõ & nÑ5Ô5‰ˆˆAõ Ô#Ñ%Ô%ðIˆQ�ZŠZ˜ eˆZÑ,Ô,¨q¯zªz¸"È¨zÑ/NÔ/NÑNÐNåÔ$ Q¨Ñ+Ô+­eÔ.@ÀÀBÑ.GÔ.GÑGð	
r   c                 ó|   — 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Š   sI   € õ$ Ô Ñ$Ô$ˆÝ#Ô8Ø˜$­ð
ñ 
ô 
ˆð ˆ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ES256Signer.__getstate__¢   sZ   € à”×"Ò"Ñ$Ô$ˆØœ	×/Ò/Ý"Ô+Ô/Ý Ô.Ô4Ý!.Ô!;Ñ!=Ô!=ð 0ñ 
ô 
ˆˆf‰ð
 ˆr   c                 óv   — t          j        |d         d¦  «        |d<   | j                             |¦  «         dS )z3Pickle helper that deserializes the _key attribute.rF   N)r   rR   rX   Úupdater`   s     r   Ú__setstate__zES256Signer.__setstate__¬   s8   € å%Ô:¸5À¼=È$ÑOÔ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ðð €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      sw  ððð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 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ÔÑÔ€ð?ð ?ð ?ð ?ð ?�D”Mñ ?ô ?ð ?ðDG$ð G$ð G$ð G$ð G$�$”+˜tÔ;ñ G$ô G$ð G$ð G$ð G$r   