
    afzJ                     <   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rFerDd 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 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                                              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                      e Zd Zd Zd Zd Zd Zd Zed             Z	d Z
d Zed	             Zed
             Zed             Zed             Zed             Zd Zed             Zed             Zed             ZdS )TestSecurityModulec                 0   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||          t          dt          | j        d	         d
d                    t          | j        d         d
d                    d||          t          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   )r:   r;   r<   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_contractr<   rG   rD   r>   r?   rE   rF   	market_ids
             S/var/www/html/env/lib/python3.11/site-packages/autobahn/xbr/test/test_xbr_secmod.pysetUpzTestSecurityModule.setUpB   s   :>>":B?? 
 

 4?++j
 
 

 
 

 %T_Q%7%;<<+ABB/00*122.//tq)!""-..?B@?>??	 +1HZci69gW W W*2QUQ`abQcdedfdfQgIhIh29$/!:LQRR:P2Q2Q^bim3:< < < )FXagqt2;$eZ^fk:AT[gjl l l	"
%
 %
 %
!
)
 )
 )
%%%    c                     t          t          | j                            D ]Q}t          j        | j        |          }|                     |                    d          | j        |                    RdS )z7
        Create key from seedphrase and index.
        FbinaryN)	rangelenrX   r   from_seedphraserV   assertEqualaddressrW   )r\   ir&   s      r_   !test_ethereum_key_from_seedphrasez4TestSecurityModule.test_ethereum_key_from_seedphrase}   st     s4:'' 	L 	LA-d.>BBCS[[[668JKKKK	L 	Lra   c                 d   t          t          | j                            D ]}t          | j        |         dd                   }t	          j        |          }|                     |                    d          | j        |                    |                     |j	        j
        |           dS )z,
        Create key from raw bytes.
        r2   NFrc   )re   rf   rX   r   r   
from_bytesrh   ri   rW   _keyr&   )r\   rj   key_rawr&   s       r_   test_ethereum_key_from_bytesz/TestSecurityModule.test_ethereum_key_from_bytes   s     s4:'' 	4 	4AdjmABB/00G(11CS[[[668JKKKSX\73333		4 	4ra   c                    t          | j        d         dd                   }t          t          | j                            D ]}| j        |         }t          |          }|                     |t          | j        |                              t          ||          }t          | }|                     t          |          d           |                     |t          | j
        |                              dS )S
        Test using py_eth_sig_utils by doing individual steps / manually.
        r   r2   NA   )r   rX   re   rf   rY   r   rh   rZ   r   r   r[   )r\   ro   rj   datamsg_hashsignature_vrs	signatures          r_   )test_ethereum_sign_typed_data_pesu_manualz<TestSecurityModule.test_ethereum_sign_typed_data_pesu_manual   s     $*Q-+,,s412233 	S 	SA)!,D )..HXwt/H/K'L'LMMM #8W55M +M:I S^^R000Y0Ma0P(Q(QRRRR+	S 	Sra   c                    t          | j        d         dd                   }t          t          | j                            D ]y}| j        |         }t          ||          }t          | }|                     t          |          d           |                     |t          | j        |                              zdS )H
        Test using py_eth_sig_utils with high level functions.
        r   r2   Nrs   )	r   rX   re   rf   rY   r   r   rh   r[   )r\   ro   rj   rt   rv   rw   s         r_   ,test_ethereum_sign_typed_data_pesu_highlevelz?TestSecurityModule.test_ethereum_sign_typed_data_pesu_highlevel   s     $*Q-+,,s412233 	S 	SA)!,D+D'::M*M:I S^^R000Y0Ma0P(Q(QRRRR	S 	Sra   c              #   b  K   t          | j        d         dd                   }t          j        |          }t	          t          | j                            D ]T}| j        |         }|                    |          V }|                     |t          | j	        |                              UdS );
        Test using autobahn with async functions.
        r   r2   N)
r   rX   r   rm   re   rf   rY   r   rh   r[   )r\   ro   r&   rj   rt   rw   s         r_   &test_ethereum_sign_typed_data_ab_asyncz9TestSecurityModule.test_ethereum_sign_typed_data_ab_async   s      
 $*Q-+,,$W--s412233 	S 	SA)!,D!11$7777IY0Ma0P(Q(QRRRR	S 	Sra   c                    t          t          | j                            D ]}| j        |         }t          |          }t	          | j        |                   }t          |          }t          |g|R  }t          |          dd         }t          |          }| 
                    || j        d                    dS )rr   iNr   )re   rf   rY   r   r   r[   r   r   r   r   rh   rW   )	r\   rj   rt   ru   rw   rv   
public_keyaddress_bytesri   s	            r_   +test_ethereum_verify_typed_data_pesu_manualz>TestSecurityModule.test_ethereum_verify_typed_data_pesu_manual   s     s412233 	: 	:A)!,D )..H =a @AAI.y99M)(C]CCCJ ,,STT2M%m44GWdoa&89999	: 	:ra   c                    t          t          | j                            D ]f}| j        |         }t          | j        |                   }t          |          }t          |g|R  }|                     || j        d                    gdS )rz   r   N)	re   rf   rY   r   r[   r   r   rh   rW   )r\   rj   rt   rw   rv   ri   s         r_   .test_ethereum_verify_typed_data_pesu_highlevelzATestSecurityModule.test_ethereum_verify_typed_data_pesu_highlevel   s     s412233 	: 	:A)!,D =a @AAI.y99M(>>>>GWdoa&89999	: 	:ra   c              #   8  K   t          j        | j        d                   }t          t	          | j                            D ]V}| j        |         }t          | j        |                   }|                    ||          V }| 	                    |           WdS )r}   r   N)
r   from_addressrW   re   rf   rY   r   r[   verify_typed_data
assertTrue)r\   r&   rj   rt   rw   	sig_valids         r_   (test_ethereum_verify_typed_data_ab_asyncz;TestSecurityModule.test_ethereum_verify_typed_data_ab_async   s      
 &tq'9::s412233 	' 	'A)!,D =a @AAI!33D)DDDDIOOI&&&&		' 	'ra   c           	   #     K   t          j        | j        dd          }|                                V  |                     t          |          d           |                                D ]\  }}|                     t          |t                    pt          |t                    d                    t          |                               ||         }|                     ||           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   rg   rV   openrh   rf   itemsr   
isinstancer   r   formatr%   )r\   smrj   r&   key_s        r_   test_secmod_iterablez'TestSecurityModule.test_secmod_iterable   s       "1$2BAqIIggiiR"%%%hhjj 	( 	(FAsOOJsK88ZJsM<Z<ZLSSTXY\T]T]^^` ` `a5DT3''''		( 	(ra   c              #     K   t                      }|                                V  |                     t          |          d           t	          d          D ]}|                    d          V }|                     ||dz             |                     t          |          |dz  dz              ||         }|                     t          |t                               |                     |j	        |           |                     |j
        |dz             |                     |j        d           |                     |j        d           |                    d          V }|                     ||dz  dz              |                     t          |          |dz  dz              ||         }|                     t          |t                               |                     |j	        |           |                     |j
        |dz  dz              |                     |j        d           |                     |j        d           |                     t          |          d           d	S )
zP
        This tests:

        * :meth:`SecurityModuleMemory.create_key`
        r   r4   ethereumr2   r3   T
cryptosign   N)r   r   rh   rf   re   
create_keyr   r   r   security_modulekey_nokey_typecan_signr   )r\   r   rj   idxr&   s        r_   test_secmod_create_keyz)TestSecurityModule.test_secmod_create_key	  s@      "##ggiiR!$$$q 	1 	1Aj1111CS!a%(((SWWa!eai000S'COOJsK88999S0"555SZQ///S\:666S\4000l3333CS!a%!),,,SWWa!eai000S'COOJsM::;;;S0"555SZQ333S\<888S\40000R!$$$$$ra   c              #     K   t                      }|                                V  |                     t          |          d           d}g }t	          |          D ]`}t                      dk    r|                    d          V  n|                    d          V  ||         }|                    |           a|                     t          |          d           t	          |          D ]p}|                     ||v            |	                    |          V  | 
                    ||v            |                     t          |          ||z
  dz
             qdS )z
        This tests:

        * :meth:`SecurityModuleMemory.create_key`
        * :meth:`SecurityModuleMemory.delete_key`
        r   r   g      ?r   r   r3   N)r   r   rh   rf   re   r   r   appendr   
delete_keyassertFalse)r\   r   nkeysrj   r&   s         r_   test_secmod_delete_keyz)TestSecurityModule.test_secmod_delete_key,  se      "##ggiiR!$$$q 	 	Axx"}}mmJ//////mmL11111Q%CKKR"%%%q 	1 	1AOOAG$$$--"""""Q"W%%%SWWa!eai0000		1 	1ra   c              #   .  K   t                      }|                                V  d}|                    |          V }|                     |d           |                    t	          dd                    V  |                     |d           t          d          D ]t}t          d          D ]b}|                    |          V }|                     ||dz              |                    |          V }|                     ||dz              cudS )z
        This tests:

        * :meth:`SecurityModuleMemory.__init__`
        * :meth:`SecurityModuleMemory.get_counter`
        * :meth:`SecurityModuleMemory.increment_counter`
        r   rA   r   r3   N)r   r   get_counterrh   r   re   increment_counter)r\   r   countervaluerj   s        r_   test_secmod_countersz'TestSecurityModule.test_secmod_countersK  s2      "##ggii  nnW----"""nnWQ__-----""" Ryy 	/ 	/G3ZZ / / 227;;;;  A... nnW5555  A..../	/ 	/ra   c                    d}g d}g }t          d          D ]}d                    |          }t          ||          }t          |          t          k    sJ t          |          dk    sJ t          j        |          }|                    |           t          d          D ]:}||         	                    d          }| 
                    |||                    ;d S )NNmyth like bonus scare over problem client lizard pioneer submit female collect)@30b2e1af1406c5f5254ddc456a045808796d13417f3b56500b0321a908cd89ca@262b6812802deac81dd2be53d69cb32a05eb9296265e9698f02772867ede002f@2d2ae42f8927b6c20fe4463151c3468367852c370a3b7db73ef10f97ce262739@fab0eab3e14b24288b816dd590f21f90700a96306648cb2a031c7451dc5ee616@1ce310832e5acb0359516400a881cf41d94ca60d9a529ce48a1b5f857cde0aa8r   zm/44'/655'/0'/0/{}    Frc   )re   r   r   r%   bytesrf   r   rm   r   r   rh   )	r\   
seedphrase	pubs_keysr   rj   derivation_pathro   r&   pub_keys	            r_   #test_cryptosign_key_from_seedphrasez6TestSecurityModule.test_cryptosign_key_from_seedphrasej  s   e
 
  
  
	 %'q 	 	A
 399!<<O .j/JJG==E))))w<<2%%%%  *733CKK q 	4 	4A1g(((66GWil3333	4 	4ra   c           	   #     K   d}t          j        |          }|                                V  |                     t	          |          d           |                     t          |d         t                    d                    t          |d                                        |                     t          |d         t                    d                    t          |d                                        |                                V  t          j        |dd          }|                                V  |                     t	          |          d	           t          d          D ]0}|                     t          ||         t                               1t          dd	          D ]0}|                     t          ||         t                               1|                                V  d S )
Nr   r2   r   unexpected type {} at index 0r3   unexpected type {} at index 1r   )num_eth_keysnum_cs_keysr   )r   rg   r   rh   rf   r   r   r   r   r%   r   closere   )r\   r   r   rj   s       r_   test_secmod_from_seedphrasez.TestSecurityModule.test_secmod_from_seedphrase  s      f
!1*==ggiiR!$$$
2a5+668W8^8^_cdfghdi_j_j8k8klll
2a5-88:Y:`:`aefhijfkalal:m:mnnnhhjj!1*1Z[\\\ggiiR"%%%q 	< 	<AOOJr!uk::;;;;q" 	> 	>AOOJr!um<<====hhjjra   c           	   #     K   t          j        dd          }t          j        |          }|                                V  |                     t          |          d           |                     t          |d         t                    d
                    t          |d                                        |                     t          |d         t                    d
                    t          |d                                        |d         }|d         }|                     |                    d	          d
           |                     |                    d	          d           |                                V  d S )Nautobahnzxbr/test/profile/config.inir2   r   r   r3   r   Frc   *0xe59C7418403CF1D973485B36660728a5f4A8fF9c@15cfa4acef5cc312e0b9ba77634849d0a8c6222a546f90eb5123667935d2f561)pkg_resourcesresource_filenamer   from_configr   rh   rf   r   r   r   r   r%   r   ri   r   r   )r\   configr   key1key2s        r_   test_secmod_from_configz*TestSecurityModule.test_secmod_from_config  sP     0=Z[[!-f55ggiiR!$$$
2a5+668W8^8^_cdfghdi_j_j8k8klll
2a5-88:Y:`:`aefhijfkalal:m:mnnnqE e 	U335abbb668z{{{hhjjra   c           	   #     K   t          j        dd          }t          j        |          }|                                V  |                     t          |          d           |                     t          |d         t                    d
                    t          |d                                        |                     t          |d         t                    d
                    t          |d                                        |d         }|d         }|                     |                    d	          d
           |                     |                    d	          d           |                                V  d S )Nr   zxbr/test/profile/default.privr2   r   r   r3   r   Frc   r   r   )r   r   r   from_keyfiler   rh   rf   r   r   r   r   r%   r   ri   r   r   )r\   keyfiler   r   r   s        r_   test_secmod_from_keyfilez+TestSecurityModule.test_secmod_from_keyfile  sP     1*>]^^!.w77ggiiR!$$$
2a5+668W8^8^_cdfghdi_j_j8k8klll
2a5-88:Y:`:`aefhijfkalal:m:mnnnqE e 	U335abbb668z{{{hhjjra   N)__name__
__module____qualname__r`   rk   rp   rx   r{   r   r~   r   r   r   r   r   r   r   r   r   r   r    ra   r_   r    r    =   s       
9
 9
 9
vL L L4 4 4S S S:S S S 	S 	S _	S: : :&: : : 	' 	' _	' ( ( _((  %  % _ %D 1 1 _1< / / _/<"4 "4 "4H   _(   _(   _  ra   r    )1rQ   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   rR   rf   
HAS_INFURAversion_infominor
IS_CPY_310rS   r    r   ra   r_   <module>r      s{  6 
			 



     " " " " " " " "                   2 2 2 2 2 2 + + + + + + 3 3 3 3 3 3            
 
7~ 
7999999VVVVVVVVVVVVOOOOOOOOLLLLLLLLJJJJJJJJJJSSSSSSOOOOOO999999666666 &3eBJG_<`8a8ade8e
 #r)
 BJNN=%0002DEEJDEEW'(*Z[[K K K K K K K \[ FE FEK K Kra   