
    g                     h   S SK r S SKrS SKrS SKrS SKJr  S SKrS SKJr  S SK	J
r
  S SK	Jr  \R                  R                  \R                  R                  \5      SS5      r\" \R                  R                  \S5      S	5       r\R'                  5       r\rSSS5        \" \R                  R                  \S
5      S	5       r\R'                  5       rSSS5        \" \R                  R                  \S5      S	5       r\R'                  5       rSSS5        \R                  R                  \S5      r\" \S	5       r\R2                  " \5      rSSS5         " S S\5      r " S S\5      rg! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NX= f)    N)ec)_helpers)base)es256z..datazes256_privatekey.pemrbzes256_publickey.pemzes256_public_cert.pemzes256_service_account.jsonc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestES256Verifier5   c                     Sn[         R                  R                  [        5      nUR	                  U5      n[         R
                  R                  [        5      nUR                  X5      (       d   eg )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_success%TestES256Verifier.test_verify_success6   Y    ""../@A!;;w/&&223CDw9999    c                     Sn[         R                  R                  [        5      nUR	                  U5      n[         R
                  R                  [        5      nUR                  X5      (       d   eg )Nfoor   r   s        r   test_verify_unicode_success-TestES256Verifier.test_verify_unicode_success>   r   r    c                     [         R                  R                  [        5      nSnUR	                  SU5      (       a   eSnUR	                  SU5      (       a   eg )Nr    r      a)r   r   r   r   r   )r   r   bad_signature1bad_signature2s       r   test_verify_failure%TestES256Verifier.test_verify_failureF   sT    &&223CD??6>::::??6>:::::r    c                     Sn[         R                  " S5      n[        R                  R	                  [
        5      nUR                  X5      (       a   eg )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_signature>TestES256Verifier.test_verify_failure_with_wrong_raw_signatureM   sM     !22g
 &&223CD??7<<<<<r    c                     [         R                  R                  [        5      n[	        U[         R                  5      (       d   e[	        UR
                  [        R                  5      (       d   eg N)r   r   r   r   
isinstance_pubkeyr   EllipticCurvePublicKeyr   r   s     r   test_from_string_pub_key*TestES256Verifier.test_from_string_pub_keyX   sQ    &&223CD(E$7$78888(**B,E,EFFFFr    c                    [         R                  " [        5      n[        R                  R                  U5      n[        U[        R                  5      (       d   e[        UR                  [        R                  5      (       d   eg r2   )
r   
from_bytesr   r   r   r   r3   r4   r   r5   )r   
public_keyr   s      r    test_from_string_pub_key_unicode2TestES256Verifier.test_from_string_pub_key_unicode]   sa    (()9:
&&22:>(E$7$78888(**B,E,EFFFFr    c                     [         R                  R                  [        5      n[	        U[         R                  5      (       d   e[	        UR
                  [        R                  5      (       d   eg r2   )r   r   r   PUBLIC_CERT_BYTESr3   r4   r   r5   r6   s     r   test_from_string_pub_cert+TestES256Verifier.test_from_string_pub_certc   sQ    &&223DE(E$7$78888(**B,E,EFFFFr    c                    [         R                  " [        5      n[        R                  R                  U5      n[        U[        R                  5      (       d   e[        UR                  [        R                  5      (       d   eg r2   )
r   r:   r?   r   r   r   r3   r4   r   r5   )r   public_certr   s      r   !test_from_string_pub_cert_unicode3TestES256Verifier.test_from_string_pub_cert_unicodeh   sa    ))*;<&&22;?(E$7$78888(**B,E,EFFFFr     N)__name__
__module____qualname____firstlineno__r   r#   r)   r/   r7   r<   r@   rD   __static_attributes__rF   r    r   r
   r
   5   s.    ::;	=G
GG
Gr    r
   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestES256Signero   c                     [         R                  R                  [        5      n[	        U[         R                  5      (       d   e[	        UR
                  [        R                  5      (       d   eg r2   )r   r   r   PKCS1_KEY_BYTESr3   _keyr   EllipticCurvePrivateKeyr   r   s     r   test_from_string_pkcs1&TestES256Signer.test_from_string_pkcs1p   sN    ""..?&%"3"34444&++r'A'ABBBBr    c                    [         R                  " [        5      n[        R                  R                  U5      n[        U[        R                  5      (       d   e[        UR                  [        R                  5      (       d   eg r2   )
r   r:   rP   r   r   r   r3   rQ   r   rR   )r   	key_bytesr   s      r   test_from_string_pkcs1_unicode.TestES256Signer.test_from_string_pkcs1_unicodeu   s^    ''8	""..y9&%"3"34444&++r'A'ABBBBr    c                     Sn[         R                  " [        5         [        R                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nz	bogus-key)pytestraises
ValueErrorr   r   r   )r   rW   s     r   test_from_string_bogus_key*TestES256Signer.test_from_string_bogus_key{   s3    	]]:&)))4 '&&s    A
Ac                     [         R                  R                  [        5      nUR                  [        [
        R                     :X  d   e[        UR                  [        R                  5      (       d   eg r2   )r   r   from_service_account_infoSERVICE_ACCOUNT_INFOkey_idr   _JSON_FILE_PRIVATE_KEY_IDr3   rQ   r   rR   rS   s     r   test_from_service_account_info.TestES256Signer.test_from_service_account_info   sT    ""<<=QR}} 4T5S5S TTTT&++r'A'ABBBBr    c                     [         R                  " [        5       n[        R                  R                  0 5        S S S 5        WR                  [        R                  5      (       d   eg ! , (       d  f       N5= fr2   )	r[   r\   r]   r   r   ra   matchr   _JSON_FILE_PRIVATE_KEY)r   excinfos     r   *test_from_service_account_info_missing_key:TestES256Signer.test_from_service_account_info_missing_key   sO    ]]:&'77; ' }}T889999 '&s    A**
A8c                     [         R                  R                  [        5      nUR                  [
        [        R                     :X  d   e[        UR                  [        R                  5      (       d   eg r2   )r   r   from_service_account_fileSERVICE_ACCOUNT_JSON_FILErc   rb   r   rd   r3   rQ   r   rR   rS   s     r   test_from_service_account_file.TestES256Signer.test_from_service_account_file   sT    ""<<=VW}} 4T5S5S TTTT&++r'A'ABBBBr    c                    [         R                  R                  [        5      nUR                  [
        [        R                     :X  d   e[        UR                  [        R                  5      (       d   e[        R                  " U5      n[        R                  " U5      nUR                  [
        [        R                     :X  d   e[        UR                  [        R                  5      (       d   eg r2   )r   r   rn   ro   rc   rb   r   rd   r3   rQ   r   rR   pickledumpsloads)r   r   pickled_signers      r   test_pickleTestES256Signer.test_pickle   s    ""<<=VW}} 4T5S5S TTTT&++r'A'ABBBBf-n-}} 4T5S5S TTTT&++r'A'ABBBBr    rF   N)rG   rH   rI   rJ   rT   rX   r^   re   rk   rp   rw   rK   rF   r    r   rM   rM   o   s*    C
C5
C:C
Cr    rM   )r,   jsonosrs   )cryptography.hazmat.primitives.asymmetricr   r[   google.authr   google.auth.cryptr   r   pathjoindirname__file__DATA_DIRopenfhreadr   rP   r   r?   ro   loadrb   objectr
   rM   rF   r    r   <module>r      sW     	  8    " # 77<<14@ 
"'',,x!7
8$?2	'O @ 
"'',,x!6
7>"wwy ? 
"'',,x!8
94@B	 A GGLL3OP 	
#T*b99R= +7G 7Gt-Cf -CU @? ?> A@
 +*s0   E0F F>F#0
E>
F
F #
F1