
    8'h&                     P   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dl
mZ g dZ ej                         dk7  rej                  g d        G d	 d
ej                         Z ej$                  ej&                   d       G d dej                                Zy)    )absolute_importN)Mock)auth)types)	)   password   salt      (0c60c80f961f0e71f3a9b524af6012062fe037a6)r   r      r
   (ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957)r      ATHENA.MIT.EDUraeburnr	       cdedb5281bb2f801565a1122b2563515)r   r   r	       @cdedb5281bb2f801565a1122b25635150ad1f7a04bb9f3a333ecc0e2e1f70837)r   r   r   r    01dbee7f4a9e243e988b62c73cda935d)r   r   r   r   @01dbee7f4a9e243e988b62c73cda935da05378b93244ec8f48a99e61ad799d86)r   r     r   @5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddbc5e5142f708a31e2e62b1e13)s@   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase equals block sizer   r   @139c30c0966bc32ba55fdbf212530ac9c5ec59f1a452f5cc9ad940fea0598ed1)sA   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXs   pass phrase exceeds block sizer   r   @9ccad6d468770cd51b10e6a68721be611a8b4d282601db3b36be9246915ec82aPyPy))r   r      r
   (4b007901b765489abead49d926f721d065a429c1)s   passwordPASSWORDpasswords$   saltSALTsaltSALTsaltSALTsaltSALTsaltr      23d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038)s	   pass words   sa ltr   r    56fa6aa75548099dcc37d7f03425e0c3c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestWampAuthHelpersc                    t         D ]}  }t        j                  |d   |d   |d   |d   d      }| j                  t	        |      t
               | j                  t        j                  |      j                  d      |d           y )Nr   r	   r      sha1ascii   )	PBKDF2_TEST_VECTORSr   pbkdf2assertEqualtypebytesbinasciihexlifydecode)selftvresults      X/var/www/html/trade_iq/venv/lib/python3.12/site-packages/autobahn/wamp/test/test_auth.pytest_pbkdf2zTestWampAuthHelpers.test_pbkdf2L   sw    % 	NB[[A1r!ubeVDFT&\51X--f5<<WEr!uM	N    c                     t        j                         }| j                  t        |      t        j
                         | j                  t        |      d       y )Ng      0@r   generate_totp_secretr(   r)   six	text_typelenr.   secrets     r1   !test_generate_totp_secret_defaultz5TestWampAuthHelpers.test_generate_totp_secret_defaultR   s<    **,fs}}5Vj1r3   c                     dD ]a  }t        j                  |      }| j                  t        |      t        j
                         | j                  t        |      |dz  dz         c y )N   
   r
      (   2      r?   r5   r.   lengthr;   s      r1    test_generate_totp_secret_lengthz4TestWampAuthHelpers.test_generate_totp_secret_lengthW   sU    - 	:F..v6FT&\3==9S[&1*q.9	:r3   c                     t        j                  d      }d}t        j                  |      }| j	                  t        |      t        j                         | j                  |j                  |      d u       y )N\d\d\d\d\d\dMFRGGZDFMZTWQ2LK)
recompiler   compute_totpr(   r)   r7   r8   
assertTruematch)r.   patr;   	signatures       r1   test_compute_totpz%TestWampAuthHelpers.test_compute_totp]   sW    jj)$%%f-	i#--8		),D89r3   c                    t        j                  d      }d}t        dd      D ]c  }t        j                  ||      }| j                  t        |      t        j                         | j                  |j                  |      d u       e y )NrI   rJ   ir@   )rK   rL   ranger   rM   r(   r)   r7   r8   rN   rO   )r.   rP   r;   offsetrQ   s        r1   test_compute_totp_offsetz,TestWampAuthHelpers.test_compute_totp_offsetd   sn    jj)$Cn 	>F))&&9IT)_cmm<OOCIIi0<=	>r3   c                     d}d}t        j                  |j                  d      |j                  d            }| j                  t	        |      t
               | j                  |d       y )NL3L1YUE8Txlwsalt123utf8s,   qzcdsr9uu/L5hnss3kjNTRe490ETgA70ZBaB5rvnJ5Y=)r   
derive_keyencoder(   r)   r*   )r.   r;   saltkeys       r1   test_derive_keyz#TestWampAuthHelpers.test_derive_keyl   sS     oofmmF3T[[5HIcE*MNr3   c                     t        j                         }| j                  t        |      t               | j                  t        |      d       y )N   r   generate_wcsr(   r)   r*   r9   r:   s     r1   test_generate_wcs_defaultz-TestWampAuthHelpers.test_generate_wcs_defaults   s8    ""$fu-Vb)r3   c                     dD ]Q  }t        j                  |      }| j                  t        |      t               | j                  t        |      |       S y )Nr>   rb   rE   s      r1   test_generate_wcs_lengthz,TestWampAuthHelpers.test_generate_wcs_lengthx   sI    - 	2F&&v.FT&\51S[&1	2r3   c                    d}t        j                  g dd      j                  d      }t        j                  |j                  d      |      }| j                  t        |      t               | j                  |d       y )NrX   )r	   r   r"   F)ensure_asciirZ   s,   1njQtmmeYO41N5EWEzD2kAjjEKRZ5kPZt/TzpYXOzR0=)jsondumpsr\   r   compute_wcsr(   r)   r*   )r.   r;   	challengerQ   s       r1   test_compute_wcsz$TestWampAuthHelpers.test_compute_wcs~   sb     JJyu=DDVL	$$V]]6%:IF	i%0$STr3   N)__name__
__module____qualname__r2   r<   rG   rR   rV   r_   rd   rf   rm    r3   r1   r    r    J   s2    N2
::>O*
2Ur3   r    zno Argon2 libraryc                   *    e Zd Zd Zd Zd Zd Zd Zy)	TestScramc                     t        j                  d      }t        j                  dt        j                  d      dd      }t        j
                  |dz         }| j                  ||       y )N@ee4a8acf9d5958354fb79a95ae20692d05e42591ba49fae85eb6700e8b0ed293   p4ssw0rd   1234567890abcdefr      s   ==
)r+   	unhexlifyr   _hash_argon2id13_secret
b2a_base64
a2b_base64r(   )r.   expectedraw_hashdecoded_hashs       r1   test_argon2id_staticzTestScram.test_argon2id_static   sd     %%&hi// 34	
  **8g+=><0r3   c                     t        j                  d      }t        j                  ddd      }| j	                  ||       y )N@f6991a28c75f43751e0d75499fd7b8649f659118ddc1d61cee5883af547d15f5rv   rw   rD   )r+   ry   r   _hash_pbkdf2_secretr(   )r.   r}   r~   s      r1   test_pbkdf2_staticzTestScram.test_pbkdf2_static   s8    %%&hi++K9LaP8,r3   c           	      .   t        j                  ddt        j                  d      j	                  d      dddd	      }t        j                  d      j	                  d      |_        | j                  d
di|j                         t        j                  dddt        j                  d      j	                  d      ddd      }|j                  t               |      }| j                  d|       t        d      }|j                  t               |       y )N1234567890abcdef
argon2id13rw   r$   r   rx   p4ssw0rdusernamenoncekdfr]   
iterationsmemorypasswordauthidr    31323334353637383930616263646566scram 1234567890abcdeffedcba0987654321argon2id-13)r   r   r]   r   r   s,   f5r3loERzGVSuimE+lvO0bWna2zyswBo0HrZkaaEy38=)scram_server_signature)r   	AuthScramr+   b2a_hexr-   _client_noncer(   	authextrar   	Challengeon_challenger   dict
on_welcome)r.   r   rl   replyr   s        r1   
test_basiczTestScram.test_basic   s   %!!"56==gF 
 '../BCJJ7S9:OO	

 OOH8!$$%89@@I/
 	 ""4695;	

 #R
	 	+r3   c           	         t        j                  ddt        j                  d      j	                  d      dddd	      }|j
                   | j                  t              5 }t        j                  d
ddt        j                  d      dd      }|j                  t               |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   r   rw   r$   r   rx   r   r   r   r   r   r   )r   r   r]   r   zrequires 'memory' parameter)r   r   r+   r   r-   r   assertRaises
ValueErrorr   r   r   r   assertInstr	exceptionr.   r   ctxrl   s       r1   test_no_memory_argzTestScram.test_no_memory_arg   s    %!!"56==gF 
 	z* 	2c<% (()<="	3 I tvy1	2 	)	
	2 	2s    A	CC c                    t        j                  ddt        j                  d      dddd      }|j                   | j                  t              5 }t        j                  d	d
dt        j                  d      ddd d      }|j                  t               |       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   r   rw   r   rx   r   r   r   r   r   r   )r   r   r]   r   r   an_invalid_keyr   )r   r   r+   r   r   r   RuntimeErrorr   r   r   r   r   r   r   r   s       r1   test_unknown_argzTestScram.test_unknown_arg   s    $!!"56 
 	|, 		2<% (()<=""&3 I tvy1		2 	&CMM(:;		2 		2s   AC

CN)rn   ro   rp   r   r   r   r   r   rq   r3   r1   rs   rs      s    1-#,J
4<r3   rs   )
__future__r   unittestplatformr7   rK   ri   r+   mockr   autobahn.wampr   r   r&   python_implementationextendTestCaser    skipIf	HAS_ARGONrs   rq   r3   r1   <module>r      s   6 '   
 	       "8!!#v- 	

9U(++ 9Ux T^^#%89j<!! j< :j<r3   