o
    >hzJ                     @   sz  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 d dlmZ d d	lmZ ererd d
lmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZ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e j)v oe*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Z0dS )    N)randintrandom)a2b_hex)List)skipIf)inlineCallbacks)TestCase)HAS_CRYPTOSIGN)HAS_XBR)encode_typed_data)ecsignecrecover_to_pubchecksum_encodesha3)v_r_s_to_signaturesignature_to_v_r_s)sign_typed_datarecover_typed_data)make_w3EthereumKeymnemonic_to_private_key)_create_eip712_member_register)_create_eip712_market_create)SecurityModuleMemory)CryptosignKey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dd Zdd Zdd Zd	d
 Zedd Z	dd Z
dd Zedd Zedd Zedd Zedd Zedd Zdd Zedd Zedd  Zed!d" Zd#S )$TestSecurityModulec           
      C   s2  dt jdddd| _t| j| _d| _g d| _g d| _t	| jd	 d
d  }t	| jd d
d  }t	| jd
 d
d  }t	| jd d
d  }d}d}d}d}t	d}	t
d||d||dt
dt	| jd	 d
d  t	| jd d
d  d||dtd||d|	||||ddddg| _g d| _g d| _d S )Ninfurar    mainnet)typekeynetworkzMavocado style uncover thrive same grace crunch want essay reduce current edge)*0xf766Dc789CF04CD18aE75af2c5fAf2DA6650Ff57*0xf5173a6111B2A6B3C20fceD53B2A8405EC142bF6*0xecdb40C2B34f3bA162C413CC53BA3ca99ff8A047*0x2F070c2f49a59159A0346396f1139203355ACA43*0x66290fA8ADcD901Fd994e4f64Cfb53F4c359a326)B0x805f84af7e182359db0610ffb07c801012b699b5610646937704aa5cfc28b15eB0x991c8f7609f3236ad5ef6d498b2ec0c9793c2865dd337ddc3033067c1da0e735B0x75848ddb1155cd1cdf6d74a6e7fbed06aeaa21ef2d8a05df7af2d95cdc127672B0x5be599a34927a1110922d7704ba316144b31699d8e7f229e2684d5575a84214eB0xc1bb7ce3481e95b28bb8c026667b6009c504c79a98e6c7237ba0788c37b473c9r            .QmU7Gizbre17x6V2VR1Q2GJEjz6m8S1bXmBtVxS2vmvb81.QmcNsPV7QZFHKb2DNn8GWsU5dtd8zH5DNRa31geC63ceb4.QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4.Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD 5b7ee23c9353479ca49a2461c0a1deb2i  )chainIdverifyingContractmember
registeredeulaprofile   i'  i@B d   )r7   r8   r9   createdmarketIdcointermsmetamakerproviderSecurityconsumerSecurity	marketFee)@8abee87b2cf457841d173083d5f205183f3e78c6cee30ca77776344e11f612b3@6a4f10dc41080c445a86acaae652ce80878fe768f6b459af08d14465c5310138@f1b80df26ec6cc7dafeb8a5c69de77e8ec5a2c0e93f5d6e475124f18cf4c595f)ڂ17ed35d8fd41fcb507ae11a3745d9775f37ff1c155257074fe2245cfb186f4336151fd018bf83a5e9902d825b645213a111630f78bbbc3c96f68d60b7e65dafd1cڂ1c0fa4d8e2b2d0d0391c4b7c5cf2f494eab5c7074aa46cfd11a2d8a6b8c087030db7a5b74128d9bb04f6baa12abaa45457e0cfe790e9ebbd62721c075d79335e1cڂ236660f4cc04df21289538bf15e83d5bd2858b9dad27022d6b83fc3374ce887d5789e1d40126823abf7ccef04d06e4a1717e6b6a00cbfacf5cc2e7b2e4cb384e1c)osenvironget
_gw_configr   _w3_seedphrase
_addresses_keysr   r   r   _eip_data_objects_eip_data_obj_hashes_eip_data_obj_signatures)
selfverifying_contractr9   rD   rA   r;   r<   rB   rC   	market_id r\   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/xbr/test/test_xbr_secmod.pysetUpB   s>   






zTestSecurityModule.setUpc                 C   s@   t t| jD ]}t| j|}| |jdd| j|  qdS )z7
        Create key from seedphrase and index.
        FbinaryN)	rangelenrU   r   from_seedphraserS   assertEqualaddressrT   )rY   ir#   r\   r\   r]   !test_ethereum_key_from_seedphrase}   s   z4TestSecurityModule.test_ethereum_key_from_seedphrasec                 C   sb   t t| jD ]'}t| j| dd }t|}| |jdd| j|  | |j	j
| qdS )z,
        Create key from raw bytes.
        r/   NFr_   )ra   rb   rU   r   r   
from_bytesrd   re   rT   _keyr#   )rY   rf   key_rawr#   r\   r\   r]   test_ethereum_key_from_bytes   s   
z/TestSecurityModule.test_ethereum_key_from_bytesc                 C   s   t | jd dd }tt| jD ]2}| j| }t|}| |t | j|  t||}t	| }| t|d | |t | j
|  qdS )S
        Test using py_eth_sig_utils by doing individual steps / manually.
        r   r/   NA   )r   rU   ra   rb   rV   r   rd   rW   r   r   rX   )rY   rj   rf   datamsg_hashsignature_vrs	signaturer\   r\   r]   )test_ethereum_sign_typed_data_pesu_manual   s   

z<TestSecurityModule.test_ethereum_sign_typed_data_pesu_manualc                 C   sp   t | jd dd }tt| jD ]#}| j| }t||}t| }| t|d | |t | j|  qdS )H
        Test using py_eth_sig_utils with high level functions.
        r   r/   Nrm   )	r   rU   ra   rb   rV   r   r   rd   rX   )rY   rj   rf   rn   rp   rq   r\   r\   r]   ,test_ethereum_sign_typed_data_pesu_highlevel   s   

z?TestSecurityModule.test_ethereum_sign_typed_data_pesu_highlevelc                 c   sf    t | jd dd }t|}tt| jD ]}| j| }||V }| |t | j	|  qdS );
        Test using autobahn with async functions.
        r   r/   N)
r   rU   r   rh   ra   rb   rV   r   rd   rX   )rY   rj   r#   rf   rn   rq   r\   r\   r]   &test_ethereum_sign_typed_data_ab_async   s   

z9TestSecurityModule.test_ethereum_sign_typed_data_ab_asyncc           	      C   sz   t t| jD ]3}| j| }t|}t| j| }t|}t|g|R  }t|dd }t	|}| 
|| jd  qdS )rl   iNr   )ra   rb   rV   r   r   rX   r   r   r   r   rd   rT   )	rY   rf   rn   ro   rq   rp   
public_keyaddress_bytesre   r\   r\   r]   +test_ethereum_verify_typed_data_pesu_manual   s   
z>TestSecurityModule.test_ethereum_verify_typed_data_pesu_manualc                 C   sZ   t t| jD ]#}| j| }t| j| }t|}t|g|R  }| || jd  qdS )rs   r   N)	ra   rb   rV   r   rX   r   r   rd   rT   )rY   rf   rn   rq   rp   re   r\   r\   r]   .test_ethereum_verify_typed_data_pesu_highlevel   s   
zATestSecurityModule.test_ethereum_verify_typed_data_pesu_highlevelc                 c   sZ    t | jd }tt| jD ]}| j| }t| j| }|||V }| 	| qdS )ru   r   N)
r   from_addressrT   ra   rb   rV   r   rX   verify_typed_data
assertTrue)rY   r#   rf   rn   rq   	sig_validr\   r\   r]   (test_ethereum_verify_typed_data_ab_async   s   
z;TestSecurityModule.test_ethereum_verify_typed_data_ab_asyncc                 c   s|    t | jdd}| V  | t|d | D ]!\}}| t|t	p)t|t
dt| || }| || qdS )z
        This tests:

        * :meth:`SecurityModuleMemory.from_seedphrase`
        * :meth:`SecurityModuleMemory.__len__`
        * :meth:`SecurityModuleMemory.__iter__`
        * :meth:`SecurityModuleMemory.__getitem__`
           r   z.unexpected type {} returned in security moduleN)r   rc   rS   openrd   rb   itemsr}   
isinstancer   r   formatr"   )rY   smrf   r#   key_r\   r\   r]   test_secmod_iterable   s   

z'TestSecurityModule.test_secmod_iterablec                 c   s\   t  }| V  | t|d tdD ]}|dV }| ||d  | t||d d  || }| t|t | |j	| | |j
|d  | |jd | |jd |dV }| ||d d  | t||d d  || }| t|t | |j	| | |j
|d d  | |jd | |jd q| t|d d	S )
zP
        This tests:

        * :meth:`SecurityModuleMemory.create_key`
        r   r1   ethereumr/   r0   T
cryptosign   N)r   r   rd   rb   ra   
create_keyr}   r   r   security_modulekey_nokey_typecan_signr   )rY   r   rf   idxr#   r\   r\   r]   test_secmod_create_key	  s0   
z)TestSecurityModule.test_secmod_create_keyc                 c   s    t  }| V  | t|d d}g }t|D ]}t dkr'|dV  n|dV  || }|| q| t|d t|D ]"}| ||v  |	|V  | 
||v  | t||| d  qCdS )z
        This tests:

        * :meth:`SecurityModuleMemory.create_key`
        * :meth:`SecurityModuleMemory.delete_key`
        r   r   g      ?r   r   r0   N)r   r   rd   rb   ra   r   r   appendr}   
delete_keyassertFalse)rY   r   nkeysrf   r#   r\   r\   r]   test_secmod_delete_key,  s&   

z)TestSecurityModule.test_secmod_delete_keyc                 c   s    t  }| V  d}||V }| |d |tddV  | |d tdD ]%}tdD ]}||V }| ||d  ||V }| ||d  q0q*dS )z
        This tests:

        * :meth:`SecurityModuleMemory.__init__`
        * :meth:`SecurityModuleMemory.get_counter`
        * :meth:`SecurityModuleMemory.increment_counter`
        r   r>   r   r0   N)r   r   get_counterrd   r   ra   increment_counter)rY   r   countervaluerf   r\   r\   r]   test_secmod_countersK  s    	
z'TestSecurityModule.test_secmod_countersc           	      C   s   d}g d}g }t dD ]&}d|}t||}t|tks J t|dks(J t|}|| qt dD ]}|| j	dd}| 
|||  q7d S )NNmyth like bonus scare over problem client lizard pioneer submit female collect)@30b2e1af1406c5f5254ddc456a045808796d13417f3b56500b0321a908cd89ca@262b6812802deac81dd2be53d69cb32a05eb9296265e9698f02772867ede002f@2d2ae42f8927b6c20fe4463151c3468367852c370a3b7db73ef10f97ce262739@fab0eab3e14b24288b816dd590f21f90700a96306648cb2a031c7451dc5ee616@1ce310832e5acb0359516400a881cf41d94ca60d9a529ce48a1b5f857cde0aa8r   zm/44'/655'/0'/0/{}    Fr_   )ra   r   r   r"   bytesrb   r   rh   r   rw   rd   )	rY   
seedphrase	pubs_keysr   rf   derivation_pathrj   r#   pub_keyr\   r\   r]   #test_cryptosign_key_from_seedphrasej  s   	


z6TestSecurityModule.test_cryptosign_key_from_seedphrasec                 c   s    d}t |}| V  | t|d | t|d tdt	|d  | t|d t
dt	|d  | V  t j|ddd}| V  | t|d	 tdD ]}| t|| t qWtdd	D ]}| t|| t
 qi| V  d S )
Nr   r/   r   unexpected type {} at index 0r0   unexpected type {} at index 1r   )num_eth_keysnum_cs_keysr   )r   rc   r   rd   rb   r}   r   r   r   r"   r   closera   )rY   r   r   rf   r\   r\   r]   test_secmod_from_seedphrase  s    

$$

z.TestSecurityModule.test_secmod_from_seedphrasec                 c       t dd}t|}| V  | t|d | t|d t	d
t|d  | t|d td
t|d  |d }|d }| |jdd	d
 | |jdd	d | V  d S )Nautobahnzxbr/test/profile/config.inir/   r   r   r0   r   Fr_   *0xe59C7418403CF1D973485B36660728a5f4A8fF9c@15cfa4acef5cc312e0b9ba77634849d0a8c6222a546f90eb5123667935d2f561)pkg_resourcesresource_filenamer   from_configr   rd   rb   r}   r   r   r   r"   r   re   rw   r   )rY   configr   key1key2r\   r\   r]   test_secmod_from_config     

$$z*TestSecurityModule.test_secmod_from_configc                 c   r   )Nr   zxbr/test/profile/default.privr/   r   r   r0   r   Fr_   r   r   )r   r   r   from_keyfiler   rd   rb   r}   r   r   r   r"   r   re   rw   r   )rY   keyfiler   r   r   r\   r\   r]   test_secmod_from_keyfile  r   z+TestSecurityModule.test_secmod_from_keyfileN)__name__
__module____qualname__r^   rg   rk   rr   rt   r   rv   ry   rz   r   r   r   r   r   r   r   r   r   r\   r\   r\   r]   r   =   s6    ;




"

$

r   )1rN   sysr   r   r   binasciir   typingr   unittestr   twisted.internet.deferr   twisted.trial.unittestr   autobahn.wamp.cryptosignr	   autobahn.xbrr
   py_eth_sig_utils.eip712r   py_eth_sig_utils.utilsr   r   r   r   py_eth_sig_utils.signingr   r   r   r   r   r   r   $autobahn.xbr._eip712_member_registerr   "autobahn.xbr._eip712_market_creater   autobahn.xbr._secmodr   r   rO   rb   
HAS_INFURAversion_infominor
IS_CPY_310rP   r   r\   r\   r\   r]   <module>   s6   
