
    afs                        d dl Z d dlZd dlZd dlmZ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 er0er.d dlmZ d d	lmZmZ d d
lmZ d dlmZmZ d dlmZ d dlmZ d dlmZ de j        v o ee j        d                   d k    Zej         j!        dk    Z" ee j        #                    dd           d           ee d           eeoe d           G d de                                              Z$ ee j        #                    dd           d           ee d           eeoe d           G d de                                              Z%dS )    N)a2b_hexb2a_hex)skipIf)inlineCallbacks)TestCase)HAS_CRYPTOSIGN)HAS_XBR)CryptosignKey)make_w3EthereumKey)SecurityModuleMemory)"create_eip712_delegate_certificate#create_eip712_authority_certificate)EIP712DelegateCertificate)EIP712AuthorityCertificate)parse_certificate_chainWEB3_INFURA_PROJECT_ID
   USE_TWISTEDFzonly for Twistedz*env var WEB3_INFURA_PROJECT_ID not definedz.package autobahn[encryption,xbr] not installedc                   @    e Zd Zd Zed             Zed             ZdS )TestEip712Certificatec                     dt           j                            dd          dd| _        t	          | j                  | _        d| _        t          j        | j        dd          | _	        d S )	Ninfurar    mainnettypekeynetworkMavocado style uncover thrive same grace crunch want essay reduce current edge   num_eth_keysnum_cs_keys)
osenvironget
_gw_configr   _w3_seedphraser   from_seedphrase_smselfs    S/var/www/html/env/lib/python3.11/site-packages/autobahn/xbr/test/test_xbr_eip712.pysetUpzTestEip712Certificate.setUp<   sp    :>>":B?? 
 

 4?++j)=)MdN^mnZ[*] *] *]    c           	   #     K   | j                                         V  | j         d         }| j         d         }d}t          ddd                    }d}|                    d          }|                    d          }d}d	}	t          |||||||	
          }
|                    |
d          V }|                     |d           | j                                         V  d S )N      *0xf766Dc789CF04CD18aE75af2c5fAf2DA6650Ff57    Tbinaryl   6ulB8 .Qme7ss3ARVgxv6rXqVPiikMJ8u2NLgmgszg13pYrDKEoiuchainIdverifyingContract	validFromdelegatecsPubKeybootedAtmetaFڂ2bd697b2bdb9bc2c2494e53e9440ddb3e8a596eedaad717f8ecdb732d091a7de48d72d9a26d7e092ec55c074979ab039f8e003acf80224819ff396c9529eb1d11b)	r,   openr   address
public_keyr   sign_typed_dataassertEqualclose)r.   delegate_eth_keydelegate_cs_keyr<   r=   r>   r?   r@   rA   rB   	cert_datacert_sigs               r/    test_eip712_delegate_certificatez6TestEip712Certificate.test_eip712_delegate_certificateH   s     hmmoo(,)-!#$PQRQSQS$TUU	#++4+88"--T-::&?6wZkAJU]hp@HtU U U	 *99)E9RRRR ^	_ 	_ 	_ hnnr1   c           
   #     K   | j                                         V  | j         d         }| j         d         }d}t          ddd                    }d}|                    d          }|                    d          }t          ddd                    }d	}	d
}
t	          |||||||	|
          }|                    |d          V }|                     |d           | j                                         V  d S )Nr   r3   r5   r6   r7   Tr8   *0xA6e693CC4A2b4F1400391a728D26369D9b82ef96   r:   r<   r=   r>   issuersubjectrealmcapabilitiesrB   Fڂ83590d4304cc5f6024d6a85ed2c511a60e804d609e4f498c8af777d5102c6d22657673e7b68876795e3c72f857b68e13cf616ee4c2ea559bceb344021bf977b61c)r,   rD   r   rE   r   rG   rH   rI   )r.   trustroot_eth_keyrJ   r<   r=   r>   rS   rT   rU   rV   rB   rL   rM   s                r/   !test_eip712_authority_certificatez7TestEip712Certificate.test_eip712_authority_certificated   s7     hmmoo)-!(,#$PQRQSQS$TUU	"**$*77"**$*77DQRRHII?7[lBKTZdk>CR^eik k k	 +::9U:SSSS ^	_ 	_ 	_ hnnr1   N)__name__
__module____qualname__r0   r   rN   rY    r1   r/   r   r   7   s\        

] 
] 
]   _6   _  r1   r   c                       e Zd Zd Z edd          ed                         Zed             Zed             Zed             Z	dS )	TestEip712CertificateChainc                 ^   dt           j                            dd          dd| _        t	          | j                  | _        d| _        t          j        | j        dd          | _	        d d	d
ddddddddddddddddddddddddddddd d!dgd"d!dd#d!dgd$d%d&fd d	d
dd'ddd(d)dddd*d+dddddddddd,ddd-ddd.ddd/ddd d!dgd"d!dd#d!dgd0d%d1fd d	d
dd2ddd(d)dddd*d+dddddddddd,ddd-ddd.ddd/ddd d!dgd"d!dd#d!dgd0d%d3fg| _
        d S )4Nr   r   r   r   r   r    r!   r"   WMP1)nameversion   ])E8 r3   @12ae0184b180e9a9c5e45be4a1afbce3c6491320063701cd9c4011a777d04089*0xf5173a6111B2A6B3C20fceD53B2A8405EC142bF6r:    r5   )rA   r<   r@   r?   rB   r>   r=   r   r<   uint256)rc   r   r=   rE   r>   r?   r@   bytes32rA   uint64rB   stringrc   rd   )r   EIP712Domain)domainmessageprimaryTypetypesڂ70726dda677cac8f21366f8023d17203b2f4f9099e954f9bebb2134086e2ac291d80ce038a1342a7748d4b0750f06b8de491561d581c90c99f1c09c91cfa7e191c   .QmNbMM6TMLAgqBKzY69mJKk5VKvpcTtAtwAaLC2FV4zC3GrP   )rV   r<   rS   rB   rU   rT   r>   r=   r   rS   rT   rU   rV   )r   rm   ڂf031b2625ae7e32e7eec3a8fa09f4db3a43217f282b7695e5b09dd2e13c25dc679c1f3ce27b94a3074786f7f12183a2a275a00aea5a66b83c431281f1069bd841c?   ڂc3bcd7a3c3c45ae45a24cd7745db3b39c4113e6b71a4220f943f0969282246b4083ef61277bd7ba9e92c9a07b79869ce63bc6206986480f9c5daddb27b91bebe1b)r%   r&   r'   r(   r   r)   r*   r   r+   r,   _certs_expected1r-   s    r/   r0   z TestEip712CertificateChain.setUp   s   :>>":B?? 
 

 4?++j)=)MdN^mnZ[*] *] *]
 #'6;-L-L;N:;;};g7g<DDp/r /r 3NT]T]L_ L_TgT]L_ L_T_T]L_ L_T^T]L_ L_T^T]L_ L_T^T\L^ L^TZdlKmKmKo HNW_>`>`GPZb>c>c>e-f -f#g #g0 #g3"h4 #'6;-L-L?A:;9e7g8d:f<DDp/r /r 3OU^U^M` M`UhU^M` M`U`U^M` M`U]U^M` M`U^U^M` M`U\U^M` M`UcU]M_ M_U[emLnLnLp HNW_>`>`GPZb>c>c>e-f -f#g #g6 #g9"h: #'6;-L-L?A:;9e7g8d:f<DDp/r /r 3OU^U^M` M`UhU^M` M`U`U^M` M`U]U^M` M`U^U^M` M`U\U^M` M`UcU]M_ M_U[emLnLnLp HNW_>`>`GPZb>c>c>e-f -f#g #g6 #g9"hoS!ir1   Tz]FIXME: builtins.TypeError: to_checksum_address() takes 1 positional argument but 2 were givenc           
   #   t  K   | j                                         V  | j         d         }| j         d         }| j         d         }d}t          ddd                    }d}|                    d          }|                    d          }d	}	d
}
|                    d          }|}t          ddd                    }t
          j        t
          j        z  }d}|                    d          }|}t          ddd                    }t
          j        t
          j	        z  t
          j        z  t
          j        z  t
          j
        z  t
          j        z  }d}t          ||||||	|
          }|                    |d          V }t          |d         d                                                   |d         d<   | j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   t%          ||||||||          }|                    |d          V }| j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   t%          ||||||||          }|                    |d          V }| j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   | j                            |d         d                   |d         d<   d ||fd ||fd ||fg}	 |                     || j                   | j                                         V  d S )Nr   r3   r4   r5   r6   rh   Tr8   re   r:   rP   rt   r;   Fro   r@   r?   r=   rR   rS   rT   rU   )r,   rD   r   rE   rF   r   CAPABILITY_PUBLIC_RELAYCAPABILITY_PRIVATE_RELAYCAPABILITY_ROOT_CACAPABILITY_INTERMEDIATE_CACAPABILITY_PROVIDERCAPABILITY_CONSUMERr   rG   r   decoder)   toChecksumAddressr   pprintprintrH   rx   rI   )r.   rX   rJ   rK   r<   r=   r>   r?   r@   rA   delegateMetaissuer_cert2subject_cert2realm_cert2capabilities_cert2
meta_cert2issuer_cert3subject_cert3realm_cert3capabilities_cert3
meta_cert3
cert1_data	cert1_sig
cert2_data	cert2_sig
cert3_data	cert3_sigcertificatesr   s                                r/   +test_eip712_create_certificate_chain_manualzFTestEip712CertificateChain.test_eip712_create_certificate_chain_manual   s      hmmoo *.!(,)-! #$PQRQSQS$TUU	#++4+88"--T-::&G )000== J122NOO7ORl  SF  FE
 )000==$J122NOO7JMg  NC  C  F`  Fx  x  {U  {n  n  qK  q_  _  b|  bP  PE
 8[lBKV^iqAIP\^ ^ ^
 +:::e:TTTT	,3Jy4I*4U,V,V,],],_,_
9j),0H,F,FzR[G\]gGh,i,i
9j)59X5O5Oy!"5668 68
912
 9\mCLUaAN?JYk>H	J J J
 ,;;Ju;UUUU	59X5O5Oy!"5668 68
912*.(*D*DZPYEZ[cEd*e*e
9h'+/8+E+EjQZF[\eFf+g+g
9i()-)C)CJyDYZaDb)c)c
9g& 9\mCLUaAN?JYk>H	J J J
 ,;;Ju;UUUU	59X5O5Oy!"5668 68
912*.(*D*DZPYEZ[cEd*e*e
9h'+/8+E+EjQZF[\eFf+g+g
9i()-)C)CJyDYZaDb)c)c
9g& z95j)7TW[]girVst	 	t'<===hnnr1   c           
   #     K   | j                                         V  | j         d         }d}t          ddd                    }d}|                    d          }|}t          ddd                    }t          j        t          j        z  t          j        z  t          j        z  t          j	        z  t          j
        z  }d	}	t          ||||||||	
          }
|                    |
d          V }t	          ||||||||	
          }|                    |          V }t	          j        |                                          }|                    |          V }|                     ||           |                     ||           |                     |d           t#          j                    5 }|                    |j                   t	          j        |j                  }|                    |          V }|                     ||           d d d            n# 1 swxY w Y   | j                                         V  d S )Nr   r3   r5   r6   i*,
 Tr8   rP   r   rR   Fڂd9e679753e1120a8ba8edea4895d2e056ba98eaa1acbe11bf6210f3a48a56de830aa6a566cc4920c74a284ffcd9f7d1af5fe229268a44030522db19d5a75f4131c)r,   rD   r   rE   r   r|   r}   rz   r{   r~   r   r   rG   signparsemarshalrH   tempfileNamedTemporaryFilesaverc   loadrI   )r.   ca_keyca_cert_chainIdca_cert_verifyingContractca_cert_validFromca_cert_issuerca_cert_subjectca_cert_realmca_cert_capabilitiesca_cert_metaca_cert_dataca_cert_sigca_certca_cert_sig2ca_cert2ca_cert_sig3fdca_cert3ca_cert_sig4s                      r/   .test_eip712_create_certificate_chain_highlevelzITestEip712CertificateChain.test_eip712_create_certificate_chain_highlevelN  s     hmmoo #hqk $+,XYZY[Y[,\$]$]!"t44( LQRR PQQ9LOi  PE   E  Hb  Hz   z  }W  }p   p  sM  sa   a  d~  dR   R ;?MfEV_mCRZgH\co	q q q
 #22<2NNNN -_?X7H4B5D3@:N2>@ @ @ %\\&1111 .3GOO4E4EFF%]]62222 	l333l333 	 '\ 	] 	] 	] (** 		8bLL!!! 26rw??H "*v!6!666L[,777		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 hnns   4A!H!!H%(H%c              #   
  K   | j                                         V  | j         d         }| j         d         }| j         d         }g }g }| j        D ]\  }}}|                     d|           |                     d|           |                     d|           |                     d|           |                     |d         |d                    |                     |d         dd	g           |d         dk    rt	          j        |          }	n+|d         d	k    rt          j        |          }	n
J d            |                    |	           |                    |           |                     t          |          d           |                     |d         j
        |                    d                     |                     |d         j        |                    d                     |                     |d         j        |                    d                     |                     |d         j        |                    d                     |                     |d         t                     dt          |          dz
  fD ]#}
|                     ||
         t                     $|d         j        }|d         j        }|D ]8}	|                     |	j        |           |                     |	j        |           9|d         j        }|dd          D ]}	|                     |	j        |           |                     |d         j        |d         j                   |                     |d         j        |d         j                   |                     |d         j        |d         j                   |                     |d         j        |d         j        |d         j        z  k               |                     |d         j        |d         j
                   |                     |d         j        |d         j                   |d                             t3          |d                             }|                     ||                    d                     |d                             t3          |d                             }|                     ||                    d                     |d                             t3          |d                             }|                     ||                    d                     | j                                         V  d S )Nr   r3   r4   rn   ro   rp   rq   r   r   Fzshould not arrive hererQ   Tr8   r6   )r,   rD   rx   assertInr   r   r   appendrH   lenr?   rE   r@   rF   rS   assertIsInstancer<   r=   rU   rT   assertLessEqualr>   
assertTruerV   recoverr   rI   )r.   rX   rJ   rK   
cert_chain	cert_sigs	cert_hashrL   rM   certir<   r=   rU   _issuers                  r/   +test_eip712_verify_certificate_chain_manualzFTestEip712CertificateChain.test_eip712_verify_certificate_chain_manual  sF     hmmoo *.!(,)-! 
	.2.C 	' 	'*Iy(MM(I...MM)Y///MM-333MM'9---MM)M2Ig4FGGGMM)M25PRn4oppp'+FFF06yAA=)-III17	BB6666ud###X&&&& 	Z!,,,A/1A1I1IQU1I1V1VWWWA/1K1KSW1K1X1XYYYA-/@/H/HPT/H/U/UVVVA-/@/H/HPT/H/U/UVVV$ 	jm-FGGGS__q() 	M 	MA!!*Q-1KLLLL Q-'&qM; 	H 	HDT\7333T35FGGGG 1#qrrN 	0 	0DTZ//// 	A.
10DEEE 	A-z!}/DEEE 	Z]4jm6MNNN 	
12jm6PS]^_S`Sm6mmnnn 	A.
10FGGG 	Z]4jm6MNNN Q-''	!(=(=>>"3";";4";"H"HIII Q-''	!(=(=>>"3";";4";"H"HIII Q-''	!(=(=>>"2":":$":"G"GHHHhnnr1   c              #   *  K   | j                                         V  | j         d         }| j         d         }| j         d         }t          | j                  }|                     |d         j        |                    d                     |                     |d         j        |                    d                     |                     |d         j        |	                    d                     | j         
                                V  d S )Nr   r3   r4   r6   Tr8   )r,   rD   r   rx   rH   rS   rE   r?   r@   rF   rI   )r.   rX   rJ   rK   r   s        r/   .test_eip712_verify_certificate_chain_highlevelzITestEip712CertificateChain.test_eip712_verify_certificate_chain_highlevel  s      hmmoo *.!(,)-!.t/DEEa/1B1J1JRV1J1W1WXXXa13C3K3KSW3K3X3XYYYa1?3M3MUY3M3Z3Z[[[hnnr1   N)
rZ   r[   r\   r0   r   r   r   r   r   r   r]   r1   r/   r_   r_      s        
ai ai aiF VDqrr` ` _ sr`D ; ; _;z ` ` _`D   _  r1   r_   )&r%   sysr   binasciir   r   unittestr   twisted.internet.deferr   twisted.trial.unittestr   autobahn.wamp.cryptosignr   autobahn.xbrr	   r
   r   r   autobahn.xbr._secmodr   r   r   )autobahn.xbr._eip712_delegate_certificater   *autobahn.xbr._eip712_authority_certificater   &autobahn.xbr._eip712_certificate_chainr   r&   r   
HAS_INFURAversion_infominor
IS_CPY_310r'   r   r_   r]   r1   r/   <module>r      s  6 
			 



  % % % % % % % %       2 2 2 2 2 2 + + + + + + 3 3 3 3 3 3            
 O~ O66666611111111999999ddddddddSSSSSSUUUUUUNNNNNN &3eBJG_<`8a8ade8e
 #r)
 BJNN=%0002DEEJDEEW'(*Z[[E E E E EH E E \[ FE FEEP BJNN=%0002DEEJDEEW'(*Z[[z z z z z z z \[ FE FEz z zr1   