
    g                     @   d dl Z d dlZd dlZd dl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 ej                  j                  ej                  j                  e      dd      Z eej                  j                  ed      d	      5 Zej'                         ZeZddd        eej                  j                  ed
      d	      5 Zej'                         Zddd        eej                  j                  ed      d	      5 Zej'                         Zddd       ej                  j                  ed      Z eed	      5 Z ej2                  e      Zddd        G d de      Z G d de      Zy# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   DxY w)    N)ec)_helpers)base)es256z..datazes256_privatekey.pemrbzes256_publickey.pemzes256_public_cert.pemzes256_service_account.jsonc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestES256Verifierc                     d}t         j                  j                  t              }|j	                  |      }t         j
                  j                  t              }|j                  ||      sJ y )N   foor   ES256Signerfrom_stringPRIVATE_KEY_BYTESsignES256VerifierPUBLIC_KEY_BYTESverifyselfto_signsigneractual_signatureverifiers        Pplatform/gsutil/third_party/google-auth-library-python/tests/crypt/test_es256.pytest_verify_successz%TestES256Verifier.test_verify_success6   Y    ""../@A!;;w/&&223CDw(8999    c                     d}t         j                  j                  t              }|j	                  |      }t         j
                  j                  t              }|j                  ||      sJ y )Nfoor   r   s        r   test_verify_unicode_successz-TestES256Verifier.test_verify_unicode_success>   r   r   c                     t         j                  j                  t              }d}|j	                  d|      rJ d}|j	                  d|      rJ y )Nr   r      a)r   r   r   r   r   )r   r   bad_signature1bad_signature2s       r   test_verify_failurez%TestES256Verifier.test_verify_failureF   sN    &&223CD??6>:::??6>::::r   c                     d}t        j                  d      }t        j                  j	                  t
              }|j                  ||      rJ y )Nr   sX   m7oaRxUDeYqjZ8qiMwo0PZLTMZWKJLFQREpqce1StMIa_yXQQ-C5WgeIRHW7OqlYSDL0XbUrj_uAw9i-QhfOJQ==)base64urlsafe_b64decoder   r   r   r   r   )r   r   wrong_signaturer   s       r   ,test_verify_failure_with_wrong_raw_signaturez>TestES256Verifier.test_verify_failure_with_wrong_raw_signatureM   sL     !22g
 &&223CD??7O<<<<r   c                     t         j                  j                  t              }t	        |t         j                        sJ t	        |j
                  t        j                        sJ y N)r   r   r   r   
isinstance_pubkeyr   EllipticCurvePublicKeyr   r   s     r   test_from_string_pub_keyz*TestES256Verifier.test_from_string_pub_keyX   sK    &&223CD(E$7$7888(**B,E,EFFFr   c                     t        j                  t              }t        j                  j                  |      }t        |t        j                        sJ t        |j                  t        j                        sJ y r-   )
r   
from_bytesr   r   r   r   r.   r/   r   r0   )r   
public_keyr   s      r    test_from_string_pub_key_unicodez2TestES256Verifier.test_from_string_pub_key_unicode]   s[    (()9:
&&22:>(E$7$7888(**B,E,EFFFr   c                     t         j                  j                  t              }t	        |t         j                        sJ t	        |j
                  t        j                        sJ y r-   )r   r   r   PUBLIC_CERT_BYTESr.   r/   r   r0   r1   s     r   test_from_string_pub_certz+TestES256Verifier.test_from_string_pub_certc   sK    &&223DE(E$7$7888(**B,E,EFFFr   c                     t        j                  t              }t        j                  j                  |      }t        |t        j                        sJ t        |j                  t        j                        sJ y r-   )
r   r4   r8   r   r   r   r.   r/   r   r0   )r   public_certr   s      r   !test_from_string_pub_cert_unicodez3TestES256Verifier.test_from_string_pub_cert_unicodeh   s[    ))*;<&&22;?(E$7$7888(**B,E,EFFFr   N)__name__
__module____qualname__r   r!   r&   r+   r2   r6   r9   r<    r   r   r
   r
   5   s.    ::;	=G
GG
Gr   r
   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestES256Signerc                     t         j                  j                  t              }t	        |t         j                        sJ t	        |j
                  t        j                        sJ y r-   )r   r   r   PKCS1_KEY_BYTESr.   _keyr   EllipticCurvePrivateKeyr   r   s     r   test_from_string_pkcs1z&TestES256Signer.test_from_string_pkcs1p   sH    ""..?&%"3"3444&++r'A'ABBBr   c                     t        j                  t              }t        j                  j                  |      }t        |t        j                        sJ t        |j                  t        j                        sJ y r-   )
r   r4   rD   r   r   r   r.   rE   r   rF   )r   	key_bytesr   s      r   test_from_string_pkcs1_unicodez.TestES256Signer.test_from_string_pkcs1_unicodeu   sX    ''8	""..y9&%"3"3444&++r'A'ABBBr   c                     d}t        j                  t              5  t        j                  j                  |       d d d        y # 1 sw Y   y xY w)Nz	bogus-key)pytestraises
ValueErrorr   r   r   )r   rJ   s     r   test_from_string_bogus_keyz*TestES256Signer.test_from_string_bogus_key{   s3    	]]:&)))4 '&&s    AAc                     t         j                  j                  t              }|j                  t        t
        j                     k(  sJ t        |j                  t        j                        sJ y r-   )r   r   from_service_account_infoSERVICE_ACCOUNT_INFOkey_idr   _JSON_FILE_PRIVATE_KEY_IDr.   rE   r   rF   rG   s     r   test_from_service_account_infoz.TestES256Signer.test_from_service_account_info   sQ    ""<<=QR}} 4T5S5S TTTT&++r'A'ABBBr   c                     t        j                  t              5 }t        j                  j                  i        d d d        j                  t        j                        sJ y # 1 sw Y   +xY wr-   )	rM   rN   rO   r   r   rR   matchr   _JSON_FILE_PRIVATE_KEY)r   excinfos     r   *test_from_service_account_info_missing_keyz:TestES256Signer.test_from_service_account_info_missing_key   sL    ]]:&'77; ' }}T88999 '&s    A$$A-c                     t         j                  j                  t              }|j                  t
        t        j                     k(  sJ t        |j                  t        j                        sJ y r-   )r   r   from_service_account_fileSERVICE_ACCOUNT_JSON_FILErT   rS   r   rU   r.   rE   r   rF   rG   s     r   test_from_service_account_filez.TestES256Signer.test_from_service_account_file   sQ    ""<<=VW}} 4T5S5S TTTT&++r'A'ABBBr   c                    t         j                  j                  t              }|j                  t
        t        j                     k(  sJ t        |j                  t        j                        sJ t        j                  |      }t        j                  |      }|j                  t
        t        j                     k(  sJ t        |j                  t        j                        sJ y r-   )r   r   r]   r^   rT   rS   r   rU   r.   rE   r   rF   pickledumpsloads)r   r   pickled_signers      r   test_picklezTestES256Signer.test_pickle   s    ""<<=VW}} 4T5S5S TTTT&++r'A'ABBBf-n-}} 4T5S5S TTTT&++r'A'ABBBr   N)
r=   r>   r?   rH   rK   rP   rV   r[   r_   re   r@   r   r   rB   rB   o   s*    C
C5
C:C
Cr   rB   )r(   jsonosra   )cryptography.hazmat.primitives.asymmetricr   rM   google.authr   google.auth.cryptr   r   pathjoindirname__file__DATA_DIRopenfhreadr   rD   r   r8   r^   loadrS   objectr
   rB   r@   r   r   <module>ru      sY     	  8    " # 77<<14@ 
"'',,x!7
8$?2	'O @ 
"'',,x!6
7>"wwy ? 
"'',,x!8
94@B	 A GGLL3OP 	
#T*b$499R= +7G 7Gt-Cf -CU @? ?> A@
 +*s0   E0E< F>F0E9<FFF