Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/google/auth/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/google/auth/__pycache__/iam.cpython-38.pyc
U

O��gB�@s�dZddlZddlmZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZejej
ejejhZdgZd	Zd
ZdZdZGd
d�de
j�ZdS)z�Tools for using the Google `Cloud Identity and Access Management (IAM)
API`_'s auth-related functionality.

.. _Cloud Identity and Access Management (IAM) API:
    https://cloud.google.com/iam/docs/
�N)�_exponential_backoff)�_helpers)�credentials)�crypt)�
exceptionsz#https://www.googleapis.com/auth/iamzZhttps://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/{}:generateAccessTokenzOhttps://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/{}:signBlobzNhttps://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/{}:signJwtzVhttps://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/{}:generateIdTokenc@s@eZdZdZdd�Zdd�Zedd��Ze�	e
j�dd	��Zd
S)�SigneraSigns messages using the IAM `signBlob API`_.

    This is useful when you need to sign bytes but do not have access to the
    credential's private key file.

    .. _signBlob API:
        https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts
        /signBlob
    cCs||_||_||_dS)a�
        Args:
            request (google.auth.transport.Request): The object used to make
                HTTP requests.
            credentials (google.auth.credentials.Credentials): The credentials
                that will be used to authenticate the request to the IAM API.
                The credentials must have of one the following scopes:

                - https://www.googleapis.com/auth/iam
                - https://www.googleapis.com/auth/cloud-platform
            service_account_email (str): The service account email identifying
                which service account to use to sign bytes. Often, this can
                be the same as the service account email in the given
                credentials.
        N)�_request�_credentials�_service_account_email)�self�requestrZservice_account_email�r
�</opt/cppython/lib/python3.8/site-packages/google/auth/iam.py�__init__IszSigner.__init__c	Cs�t�|�}d}t�tj|jj��|j	�}ddi}t
�dt�
|��d�i��d�}t��}|D]h}|j�|j|||�|j||||d�}|jtkr�q\|jtjkr�t�d�|j���t
�|j�d��St�d��d	S)
z(Makes a request to the API signBlob API.�POSTzContent-Typezapplication/json�payloadzutf-8)�url�method�body�headersz&Error calling the IAM signBlob API: {}z#exhausted signBlob endpoint retriesN)r�to_bytes�_IAM_SIGN_ENDPOINT�replacerZDEFAULT_UNIVERSE_DOMAINr	Zuniverse_domain�formatr
�json�dumps�base64�	b64encode�decode�encoderZExponentialBackoffZbefore_requestr�status�IAM_RETRY_CODES�http_client�OKrZTransportError�data�loads)	r�messagerrrr�retries�_�responser
r
r�_make_signing_request]s4
����

�zSigner._make_signing_requestcCsdS)z�Optional[str]: The key ID used to identify this private key.

        .. warning::
           This is always ``None``. The key ID used by IAM can not
           be reliably determined ahead of time.
        Nr
)rr
r
r�key_id{sz
Signer.key_idcCs|�|�}t�|d�S)NZ
signedBlob)r*r�	b64decode)rr&r)r
r
r�sign�s
zSigner.signN)
�__name__�
__module__�__qualname__�__doc__rr*�propertyr+rZcopy_docstringrrr-r
r
r
rr>s

	
r)r1r�http.client�clientr"rZgoogle.authrrrrr�INTERNAL_SERVER_ERROR�BAD_GATEWAY�SERVICE_UNAVAILABLE�GATEWAY_TIMEOUTr!Z
_IAM_SCOPEZ
_IAM_ENDPOINTrZ_IAM_SIGNJWT_ENDPOINTZ_IAM_IDTOKEN_ENDPOINTrr
r
r
r�<module>s.�����

F1le Man4ger