
    LfzJ                     2   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 jR                  v xr  e*e jR                  d         d kD  Z+ejX                  jZ                  dk(  Z. e
e jR                  j_                  dd       d       e
e+ d       e
exr e d       G d de                           Z0y)    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y)TestSecurityModulec                    dt         j                  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| _        y )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
             \/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/autobahn/xbr/test/test_xbr_secmod.pysetUpzTestSecurityModule.setUpB   s   ::>>":B? 

 4??+j


 %T__Q%7%;<+AB/0*12./tq)!"-.?B@?>?	 +1HZci69gW*2QUQ`Q`abQcdedfQgIh29$//!:LQR:P2Q^bim3:< )FXagqt2;$eZ^fk:AT[gjl	"
%
!
)
%    c                     t        t        | j                              D ]Q  }t        j                  | j
                  |      }| j                  |j                  d      | j                  |          S y)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}   s^     s4::' 	LA--d.>.>BCS[[[68JK	Lra   c                 T   t        t        | j                              D ]  }t        | j                  |   dd       }t	        j
                  |      }| j                  |j                  d      | j                  |          | j                  |j                  j                  |        y)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::' 	4AdjjmAB/0G((1CS[[[68JKSXX\\73		4ra   c                    t        | j                  d   dd       }t        t        | j                              D ]  }| j                  |   }t        |      }| j                  |t        | j                  |                t        ||      }t        | }| j                  t        |      d       | j                  |t        | j                  |                 y)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123 	SA))!,D ).HXwt/H/H/K'LM #8W5M +M:I S^R0Y0M0Ma0P(QR+	Sra   c                 L   t        | j                  d   dd       }t        t        | j                              D ]h  }| j                  |   }t        ||      }t        | }| j                  t        |      d       | j                  |t        | j                  |                j y)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123 	SA))!,D+D':M*M:I S^R0Y0M0Ma0P(QR	Sra   c              #   F  K   t        | j                  d   dd       }t        j                  |      }t	        t        | j                              D ]L  }| j                  |   }|j                  |      }| j                  |t        | j                  |                N yw);
        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123 	SA))!,D!11$77IY0M0Ma0P(QR	Ss   BB!c                 L   t        t        | j                              D ]  }| j                  |   }t        |      }t	        | j
                  |         }t        |      }t        |g| }t        |      dd }t        |      }| j                  || j                  d           y)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123 	:A))!,D ).H = =a @AI.y9M)(C]CJ ,ST2M%m4GWdooa&89	:ra   c                    t        t        | j                              D ]_  }| j                  |   }t        | j                  |         }t        |      }t        |g| }| j                  || j                  d          a y)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   sz     s41123 	:A))!,D = =a @AI.y9M(>>GWdooa&89	:ra   c              #   .  K   t        j                  | j                  d         }t        t	        | j
                              D ]N  }| j
                  |   }t        | j                  |         }|j                  ||      }| j                  |       P yw)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123 	'A))!,D = =a @AI!33D)DDIOOI&		's   BBc           	   #     K   t        j                  | j                  dd      }|j                          | j	                  t        |      d       |j                         D ]f  \  }}| j                  t        |t              xs t        |t              dj                  t        |                   ||   }| j	                  ||       h yw)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1$2B2BAqIggiR"%hhj 	(FAsOOJsK8ZJsM<ZLSSTXY\T]^`a5DT3'		(s   C	Cc              #   `  K   t               }|j                          | j                  t        |      d       t	        d      D ]  }|j                  d      }| j                  ||dz         | j                  t        |      |dz  dz          ||   }| j                  t        |t                     | j                  |j                  |       | j                  |j                  |dz         | j                  |j                  d       | j                  |j                  d       |j                  d      }| j                  ||dz  dz          | j                  t        |      |dz  dz          ||   }| j                  t        |t                     | j                  |j                  |       | j                  |j                  |dz  dz          | j                  |j                  d       | j                  |j                  d        | j                  t        |      d       y	w)
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     "#ggiR!$q 	1Aj11CS!a%(SWa!eai0S'COOJsK89S00"5SZZQ/S\\:6S\\40l33CS!a%!),SWa!eai0S'COOJsM:;S00"5SZZQ3S\\<8S\\40'	1* 	R!$s   H,H.c              #   @  K   t               }|j                          | j                  t        |      d       d}g }t	        |      D ]L  }t               dkD  r|j                  d       n|j                  d       ||   }|j                  |       N | j                  t        |      d       t	        |      D ]\  }| j                  ||v        |j                  |       | j                  ||v        | j                  t        |      ||z
  dz
         ^ yw)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,  s      "#ggiR!$q 	Ax"}mmJ//mmL11Q%CKK	 	R"%q 	1AOOAG$--""Q"W%SWa!eai0		1s   DDc              #     K   t               }|j                          d}|j                  |      }| j                  |d       |j                  t	        dd             | j                  |d       t        d      D ]b  }t        d      D ]R  }|j                  |      }| j                  ||dz          |j                  |      }| j                  ||dz          T d yw)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  s      "#ggi  nnW--"nnWQ_--" Ry 	/G3Z / 227;;  A. nnW55  A./	/s   C$C&c                 v   d}g d}g }t        d      D ]i  }dj                  |      }t        ||      }t        |      t        k(  sJ t        |      dk(  sJ t        j                  |      }|j                  |       k t        d      D ],  }||   j                  d      }| j                  |||          . y )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/JG=E)))w<2%%%  **73CKK	" q 	4A1g(((6GWil3	4ra   c           	   #   (  K   d}t        j                  |      }|j                          | j                  t	        |      d       | j                  t        |d   t              dj                  t        |d                      | j                  t        |d   t              dj                  t        |d                      |j                          t        j                  |dd      }|j                          | j                  t	        |      d	       t        d      D ]$  }| j                  t        ||   t                     & t        dd	      D ]$  }| j                  t        ||   t                     & |j                          y w)
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  sC     f
!11*=ggiR!$
2a5+68W8^8^_cdfghdi_j8kl
2a5-8:Y:`:`aefhijfkal:mnhhj!11*1Z[\ggiR"%q 	<AOOJr!uk:;	<q" 	>AOOJr!um<=	>hhjs   FFc           	   #   t  K   t        j                  dd      }t        j                  |      }|j	                          | j                  t        |      d       | j                  t        |d   t              dj                  t        |d                      | j                  t        |d   t              dj                  t        |d                      |d   }|d   }| j                  |j                  d	      d
       | j                  |j                  d	      d       |j                          y w)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  s    00=Z[!--f5ggiR!$
2a5+68W8^8^_cdfghdi_j8kl
2a5-8:Y:`:`aefhijfkal:mnqE e 	U35ab68z{hhj   D6D8c           	   #   t  K   t        j                  dd      }t        j                  |      }|j	                          | j                  t        |      d       | j                  t        |d   t              dj                  t        |d                      | j                  t        |d   t              dj                  t        |d                      |d   }|d   }| j                  |j                  d	      d
       | j                  |j                  d	      d       |j                          y w)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  s    11*>]^!..w7ggiR!$
2a5+68W8^8^_cdfghdi_j8kl
2a5-8:Y:`:`aefhijfkal:mnqE e 	U35ab68z{hhjr   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
vL4S:S 	S 	S:&: 	' 	' ( ((  %  %D 1 1< / /<"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 + 3  
~9VVOLJJSO96 &3eBJJG_<`8ade8e
 ##r)
 BJJNN=%002DEJDEW'(*Z[K K \ F FKra   