
    Lfs                        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 xr  ee j:                  d         d kD  Zej@                  jB                  dk(  Z" ee j:                  jG                  dd       d       ee d       eexr e d       G d de                           Z$ ee j:                  jG                  dd       d       ee d       eexr e d       G d de                           Z%y)    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                   2    e Zd Zd Zed        Zed        Zy)TestEip712Certificatec                     dt         j                  j                  dd      dd| _        t	        | j                        | _        d| _        t        j                  | j                  dd      | _	        y )	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    \/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/autobahn/xbr/test/test_xbr_eip712.pysetUpzTestEip712Certificate.setUp<   s_    ::>>":B? 

 4??+j)=)M)MdN^N^mnZ[*]    c           	   #     K   | j                   j                          | j                   d   }| j                   d   }d}t        ddd        }d}|j                  d      }|j	                  d      }d}d	}	t        |||||||	
      }
|j                  |
d      }| j                  |d       | j                   j                          y w)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     hhmmo(,)-!#$PQRQS$TU	#++4+8"--T-:&?6wZkAJU]hp@HtU	 *99)E9RR ^	_ hhnns   CCc           
   #     K   | j                   j                          | j                   d   }| j                   d   }d}t        ddd        }d}|j                  d      }|j                  d      }t        ddd        }d	}	d
}
t	        |||||||	|
      }|j                  |d      }| j                  |d       | j                   j                          y w)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   s     hhmmo)-!(,#$PQRQS$TU	"**$*7"**$*7DQRHI?7[lBKTZdk>CR^eik	 +::9U:SS ^	_ hhnns   CCN)__name__
__module____qualname__r0   r   rN   rY    r1   r/   r   r   7   s0    

]  6  r1   r   c                   j    e Zd Zd Z edd      ed               Zed        Zed        Zed        Z	y)	TestEip712CertificateChainc                 j   dt         j                  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| _
        y )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)=)M)MdN^N^mnZ[*]
 #'6;-L;N:;;};g7g<DDp/r 3NT]T]L_TgT]L_T_T]L_T^T]L_T^T]L_T^T\L^TZdlKmKo HNW_>`GPZb>c>e-f#g0 #g3"h4 #'6;-L?A:;9e7g8d:f<DDp/r 3OU^U^M`UhU^M`U`U^M`U]U^M`U^U^M`U\U^M`UcU]M_U[emLnLp HNW_>`GPZb>c>e-f#g6 #g9"h: #'6;-L?A:;9e7g8d:f<DDp/r 3OU^U^M`UhU^M`U`U^M`U]U^M`U^U^M`U\U^M`UcU]M_U[emLnLp HNW_>`GPZb>c>e-f#g6 #g9"hoS!ir1   Tz]FIXME: builtins.TypeError: to_checksum_address() takes 1 positional argument but 2 were givenc           
   #     K   | j                   j                          | j                   d   }| j                   d   }| j                   d   }d}t        ddd        }d}|j                  d      }|j	                  d      }d	}	d
}
|j                  d      }|}t        ddd        }t
        j                  t
        j                  z  }d}|j                  d      }|}t        ddd        }t
        j                  t
        j                  z  t
        j                  z  t
        j                  z  t
        j                  z  t
        j                  z  }d}t        ||||||	|
      }|j                  |d      }t        |d   d         j                         |d   d<   | j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   t%        ||||||||      }|j                  |d      }| j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   t%        ||||||||      }|j                  |d      }| j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   | j                   j#                  |d   d         |d   d<   d ||fd ||fd ||fg}	 | j+                  || j,                         | j                   j/                          y w)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     hhmmo *.!(,)-! #$PQRQS$TU	#++4+8"--T-:&G )000= J12NO7OORl  SF  SF  FE
 )000=$J12NO7JJMg  NC  NC  C  F`  Fx  Fx  x  {U  {n  {n  n  qK  q_  q_  _  b|  bP  bP  PE
 8[lBKV^iqAIP\^
 +:::e:TT	,3Jy4I*4U,V,],],_
9j),0HH,F,FzR[G\]gGh,i
9j)59XX5O5Oy!"5668
912
 9\mCLUaAN?JYk>H	J
 ,;;Ju;UU	59XX5O5Oy!"5668
912*.((*D*DZPYEZ[cEd*e
9h'+/88+E+EjQZF[\eFf+g
9i()-)C)CJyDYZaDb)c
9g& 9\mCLUaAN?JYk>H	J
 ,;;Ju;UU	59XX5O5Oy!"5668
912*.((*D*DZPYEZ[cEd*e
9h'+/88+E+EjQZF[\eFf+g
9i()-)C)CJyDYZaDb)c
9g& z95j)7TW[]girVst 	t'<'<=hhnns   N<N>c           
   #   T  K   | j                   j                          | j                   d   }d}t        ddd        }d}|j                  d      }|}t        ddd        }t        j
                  t        j                  z  t        j                  z  t        j                  z  t        j                  z  t        j                  z  }d	}	t        ||||||||	
      }
|j                  |
d      }t	        ||||||||	
      }|j                  |      }t	        j                  |j                               }|j                  |      }| j!                  ||       | j!                  ||       | j!                  |d       t#        j$                         5 }|j'                  |j(                         t	        j*                  |j(                        }|j                  |      }| j!                  ||       d d d        | j                   j-                          y # 1 sw Y   &xY ww)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\    hhmmo #hhqk $+,XYZY[,\$]!"t4( LQR PQ9LLOi  PE  PE   E  Hb  Hz  Hz   z  }W  }p  }p   p  sM  sa  sa   a  d~  dR  dR   R ;?MfEV_mCRZgH\co	q
 #22<2NN -_?X7H4B5D3@:N2>@ %\\&11 .33GOO4EF%]]622 	l3l3 	 '\ 	] ((* 		8bLL! 266rww?H "*v!66L[,7		8 hhnn		8 		8s   FH(A H7%H(H%!H(c              #   	  K   | j                   j                          | j                   d   }| j                   d   }| j                   d   }g }g }| j                  D ]  \  }}}| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  |d   |d          | j                  |d   dd	g       |d   dk(  rt	        j
                  |      }	n%|d   d	k(  rt        j
                  |      }	nJ d
       |j                  |	       |j                  |        | j                  t        |      d       | j                  |d   j                  |j                  d             | j                  |d   j                  |j                  d             | j                  |d   j                  |j                  d             | j                  |d   j                  |j                  d             | j                  |d   t               dt        |      dz
  fD ]  }
| j                  ||
   t                |d   j                   }|d   j"                  }|D ]:  }	| j                  |	j                   |       | j                  |	j"                  |       < |d   j$                  }|dd  D ]  }	| j                  |	j$                  |         | j                  |d   j&                  |d   j                         | j                  |d   j                  |d   j&                         | j)                  |d   j*                  |d   j*                         | j-                  |d   j.                  |d   j.                  |d   j.                  z  k(         | j                  |d   j&                  |d   j                         | j)                  |d   j*                  |d   j*                         |d   j1                  t3        |d               }| j                  ||j                  d             |d   j1                  t3        |d               }| j                  ||j                  d             |d   j1                  t3        |d               }| j                  ||j                  d             | j                   j5                          y w)Nr   r3   r4   rn   ro   rp   rq   r   r   z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  s    hhmmo *.!(,)-! 
	.2.C.C 	'*Iy(MM(I.MM)Y/MM-3MM'9-MM)M2Ig4FGMM)M25PRn4op'+FF066yA=)-II177	B666ud#X&	'" 	Z!,A//1A1I1IQU1I1VWA//1K1KSW1K1XYA--/@/H/HPT/H/UVA--/@/H/HPT/H/UV$ 	jm-FGS_q() 	MA!!*Q-1KL	M Q-''&qM;; 	HDT\\73T335FG	H
 1##qrN 	0DTZZ/	0 	A..
10D0DE 	A--z!}/D/DE 	Z]44jm6M6MN 	
122jm6P6PS]^_S`SmSm6mmn 	A..
10F0FG 	Z]44jm6M6MN Q-''	!(=>"3";";4";"HI Q-''	!(=>"3";";4";"HI Q-''	!(=>"2":":$":"GHhhnns   S,S.c              #     K   | j                   j                          | j                   d   }| j                   d   }| j                   d   }t        | j                        }| j	                  |d   j
                  |j                  d             | j	                  |d   j                  |j                  d             | j	                  |d   j                  |j                  d             | j                   j                          y w)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     hhmmo *.!(,)-!.t/D/DEa//1B1J1JRV1J1WXa113C3K3KSW3K3XYa11?3M3MUY3M3Z[hhnns   D	DN)
rZ   r[   r\   r0   r   r   r   r   r   r   r]   r1   r/   r_   r_      sr    
aiF Dqr`  s`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      sI  6 
 
  %  2 + 3  
~619dSUN &3eBJJG_<`8ade8e
 ##r)
 BJJNN=%002DEJDEW'(*Z[EH E \ F FEP BJJNN=%002DEJDEW'(*Z[z z \ F Fzr1   