File: //opt/cppython/lib/python3.8/site-packages/oauth2client/__pycache__/_pycrypto_crypt.cpython-38.pyc
U
KD�g � @ sd d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl m
Z
G dd� de�ZG d d
� d
e�Z
dS )z2pyCrypto Crypto-related routines for oauth2client.� )�SHA256)�RSA)�
PKCS1_v1_5)�DerSequence)�_helpersc @ s, e Zd ZdZdd� Zdd� Zedd� �ZdS ) �PyCryptoVerifierz$Verifies the signature on a message.c C s
|| _ dS )z�Constructor.
Args:
pubkey: OpenSSL.crypto.PKey (or equiv), The public key to verify
with.
N)�_pubkey)�self�pubkey� r �I/opt/cppython/lib/python3.8/site-packages/oauth2client/_pycrypto_crypt.py�__init__ s zPyCryptoVerifier.__init__c C s( t j|dd�}t�| j��t�|�|�S )a� Verifies a message against a signature.
Args:
message: string or bytes, The message to verify. If string, will be
encoded to bytes as utf-8.
signature: string or bytes, The signature on the message.
Returns:
True if message was signed by the private key associated with the
public key that this object was constructed with.
�utf-8��encoding)r � _to_bytesr �newr �verifyr )r �message� signaturer r r r $ s
�zPyCryptoVerifier.verifyc C s| |rjt �| �} | �dd��� }t �d�|dd� ��}t� }|�|� t� }|�|d � t� |d �}n
t� | �}t
|�S )a@ Construct a Verified instance from a string.
Args:
key_pem: string, public key in PEM format.
is_x509_cert: bool, True if key_pem is an X509 cert, otherwise it
is expected to be an RSA key in PEM format.
Returns:
Verifier instance.
� � � ���r � )r r �replace�splitZ_urlsafe_b64decode�joinr �decoder � importKeyr )Zkey_pemZis_x509_certZpemLinesZcertDerZcertSeqZtbsSeqr
r r r �from_string4 s
zPyCryptoVerifier.from_stringN)�__name__�
__module__�__qualname__�__doc__r
r �staticmethodr r r r r r s
r c @ s. e Zd ZdZdd� Zdd� Zed
dd��Zd S )�PyCryptoSignerz"Signs messages with a private key.c C s
|| _ dS )ztConstructor.
Args:
pkey, OpenSSL.crypto.PKey (or equiv), The private key to sign with.
N)�_key)r �pkeyr r r r
Q s zPyCryptoSigner.__init__c C s&