o
    >hs                     @   sx  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rderdd 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 oqee jd d kZej j!dkZ"ee j#dd dee deeoe dG dd deZ$ee j#dd dee deeoe dG d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                   @   s,   e Zd Zdd Zedd Zedd ZdS )TestEip712Certificatec                 C   sB   dt jdddd| _t| j| _d| _tj| jd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self r,   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/xbr/test/test_xbr_eip712.pysetUp<   s   
zTestEip712Certificate.setUpc              	   c   s    | j  V  | j d }| j d }d}tddd  }d}|jdd}|jdd}d}d	}	t|||||||	d
}
|j|
d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_keyr8   r9   r:   r;   r<   r=   r>   	cert_datacert_sigr,   r,   r-    test_eip712_delegate_certificateH   s(   

z6TestEip712Certificate.test_eip712_delegate_certificatec              
   c   s    | j  V  | j d }| j d }d}tddd  }d}|jdd}|jdd}tddd  }d	}	d
}
t|||||||	|
d}|j|ddV }| |d | j  V  d S )Nr   r/   r1   r2   r3   Tr4   *0xA6e693CC4A2b4F1400391a728D26369D9b82ef96   r6   r8   r9   r:   issuersubjectrealmcapabilitiesr>   Fڂ83590d4304cc5f6024d6a85ed2c511a60e804d609e4f498c8af777d5102c6d22657673e7b68876795e3c72f857b68e13cf616ee4c2ea559bceb344021bf977b61c)r)   r@   r   rA   r   rC   rD   rE   )r+   trustroot_eth_keyrF   r8   r9   r:   rN   rO   rP   rQ   r>   rH   rI   r,   r,   r-   !test_eip712_authority_certificated   s*   

z7TestEip712Certificate.test_eip712_authority_certificateN)__name__
__module____qualname__r.   r   rJ   rT   r,   r,   r,   r-   r   7   s    
r   c                   @   sN   e Zd Zdd Zeddedd Zedd Zed	d
 Zedd Z	dS )TestEip712CertificateChainc                 C   s  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!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 r/   @12ae0184b180e9a9c5e45be4a1afbce3c6491320063701cd9c4011a777d04089*0xf5173a6111B2A6B3C20fceD53B2A8405EC142bF6r6    r1   )r=   r8   r<   r;   r>   r:   r9   r   r8   uint256)r[   r   r9   rA   r:   r;   r<   bytes32r=   uint64r>   stringr[   r\   )r   EIP712Domain)domainmessageprimaryTypetypesڂ70726dda677cac8f21366f8023d17203b2f4f9099e954f9bebb2134086e2ac291d80ce038a1342a7748d4b0750f06b8de491561d581c90c99f1c09c91cfa7e191c   .QmNbMM6TMLAgqBKzY69mJKk5VKvpcTtAtwAaLC2FV4zC3GrK   )rQ   r8   rN   r>   rP   rO   r:   r9   r   rN   rO   rP   rQ   )r   re   ڂf031b2625ae7e32e7eec3a8fa09f4db3a43217f282b7695e5b09dd2e13c25dc679c1f3ce27b94a3074786f7f12183a2a275a00aea5a66b83c431281f1069bd841c?   ڂc3bcd7a3c3c45ae45a24cd7745db3b39c4113e6b71a4220f943f0969282246b4083ef61277bd7ba9e92c9a07b79869ce63bc6206986480f9c5daddb27b91bebe1b)r"   r#   r$   r%   r
   r&   r'   r   r(   r)   _certs_expected1r*   r,   r,   r-   r.      s  

z TestEip712CertificateChain.setUpTz]FIXME: builtins.TypeError: to_checksum_address() takes 1 positional argument but 2 were givenc              
   c   s   | j  V  | j d }| j d }| j d }d}tddd  }d}|jdd}|jdd}d	}	d
}
|jdd}|}tddd  }tjtjB }d}|jdd}|}tddd  }tjtj	B tjB tjB tj
B tjB }d}t||||||	|
d}|j|ddV }t|d d  |d d< | j|d d |d d< | j|d d |d d< t||||||||d}|j|ddV }| j|d d |d d< | j|d d |d d< | j|d d |d d< | j|d d |d d< t||||||||d}|j|d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   r/   r0   r1   r2   r`   Tr4   r]   r6   rK   rl   r7   Frg   r<   r;   r9   rM   rN   rO   rP   )r)   r@   r   rA   rB   r   CAPABILITY_PUBLIC_RELAYCAPABILITY_PRIVATE_RELAYCAPABILITY_ROOT_CACAPABILITY_INTERMEDIATE_CACAPABILITY_PROVIDERCAPABILITY_CONSUMERr   rC   r   decoder&   toChecksumAddressr   pprintprintrD   rp   rE   )r+   rS   rF   rG   r8   r9   r:   r;   r<   r=   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certificatesry   r,   r,   r-   +test_eip712_create_certificate_chain_manual   s|   


$


zFTestEip712CertificateChain.test_eip712_create_certificate_chain_manualc              
   c   sj   | j  V  | j d }d}tddd  }d}|jdd}|}tddd  }tjtjB tjB tjB tj	B tj
B }d	}	t||||||||	d
}
|j|
ddV }t||||||||	d
}||V }t| }||V }| || | || | |d t  }||j t|j}||V }| || W d    n1 sw   Y  | j  V  d S )Nr   r/   r1   r2   i*,
 Tr4   rK   r   rM   Fڂd9e679753e1120a8ba8edea4895d2e056ba98eaa1acbe11bf6210f3a48a56de830aa6a566cc4920c74a284ffcd9f7d1af5fe229268a44030522db19d5a75f4131c)r)   r@   r   rA   r   rs   rt   rq   rr   ru   rv   r   rC   signparsemarshalrD   tempfileNamedTemporaryFilesaver[   loadrE   )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_sig4r,   r,   r-   .test_eip712_create_certificate_chain_highlevelN  sP   
$
zITestEip712CertificateChain.test_eip712_create_certificate_chain_highlevelc                 c   s&   | j  V  | j d }| j d }| j d }g }g }| jD ]W\}}}| d| | d| | d| | d| | |d |d  | |d dd	g |d dkrZt|}	n|d d	krft|}	nJ d||	 || q| t	|d | |d j
|jdd | |d j|jdd | |d j|jdd | |d j|jdd | |d t dt	|d fD ]
}
| ||
 t q|d j}|d j}|D ]}	| |	j| | |	j| q|d j}|dd  D ]	}	| |	j| q| |d j|d j | |d j|d j | |d j|d j | |d j|d j|d jB k | |d j|d j
 | |d j|d j |d t|d }| ||jdd |d t|d }| ||jdd |d t|d }| ||jdd | j  V  d S )Nr   r/   r0   rf   rg   rh   ri   r   r   Fzshould not arrive hererL   Tr4   r2   )r)   r@   rp   assertInr   r   r   appendrD   lenr;   rA   r<   rB   rN   assertIsInstancer8   r9   rP   rO   assertLessEqualr:   
assertTruerQ   recoverr   rE   )r+   rS   rF   rG   
cert_chain	cert_sigs	cert_hashrH   rI   certir8   r9   rP   _issuerr,   r,   r-   +test_eip712_verify_certificate_chain_manual  sd   






$zFTestEip712CertificateChain.test_eip712_verify_certificate_chain_manualc                 c   s    | j  V  | j d }| j d }| j d }t| j}| |d j|jdd | |d j|jdd | |d j|j	dd | j 
 V  d S )Nr   r/   r0   r2   Tr4   )r)   r@   r   rp   rD   rN   rA   r;   r<   rB   rE   )r+   rS   rF   rG   r   r,   r,   r-   .test_eip712_verify_certificate_chain_highlevel  s   



zITestEip712CertificateChain.test_eip712_verify_certificate_chain_highlevelN)
rU   rV   rW   r.   r   r   r   r   r   r   r,   r,   r,   r-   rX      s    cb
=
brX   )&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   rX   r,   r,   r,   r-   <module>   s6   
H
