
    tfy&                     4   d dl Z d dlm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	 g dZ
 ej                    dk    re
                    g d            G d d	e j                  Z e j        ej         d
           G d de j                              ZdS )    N)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                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestWampAuthHelpersc                 L   t           D ]}t          j        |d         |d         |d         |d         d          }|                     t	          |          t
                     |                     t          j        |                              d          |d                    d S )Nr   r   r      sha1ascii   )	PBKDF2_TEST_VECTORSr   pbkdf2assertEqualtypebytesbinasciihexlifydecode)selftvresults      `/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/wamp/test/test_wamp_auth.pytest_pbkdf2zTestWampAuthHelpers.test_pbkdf2I   s    % 	N 	NB[A1r!ubeVDDFT&\\5111X-f55<<WEEr!uMMMM	N 	N    c                     t          j                    }|                     t          |          t                     |                     t          |          d           d S )Ng      0@r   generate_totp_secretr'   r(   strlenr-   secrets     r0   !test_generate_totp_secret_defaultz5TestWampAuthHelpers.test_generate_totp_secret_defaultO   sN    *,,fs+++Vj11111r2   c                     dD ]g}t          j        |          }|                     t          |          t                     |                     t          |          |dz  dz             hd S )N   
   r	      (   2      r=   r4   r-   lengthr9   s      r0    test_generate_totp_secret_lengthz4TestWampAuthHelpers.test_generate_totp_secret_lengthT   sn    - 	: 	:F.v66FT&\\3///S[[&1*q.9999	: 	:r2   c                     t          j        d          }d}t          j        |          }|                     t          |          t                     |                     |                    |          d u           d S )N\d\d\d\d\d\dMFRGGZDFMZTWQ2LK)	recompiler   compute_totpr'   r(   r6   
assertTruematch)r-   patr9   	signatures       r0   test_compute_totpz%TestWampAuthHelpers.test_compute_totpZ   sk    j))#%f--	i#...		),,D899999r2   c                 &   t          j        d          }d}t          dd          D ]i}t          j        ||          }|                     t          |          t                     |                     |	                    |          d u           jd S )NrG   rH   ir>   )
rI   rJ   ranger   rK   r'   r(   r6   rL   rM   )r-   rN   r9   offsetrO   s        r0   test_compute_totp_offsetz,TestWampAuthHelpers.test_compute_totp_offseta   s    j))#Cnn 	> 	>F)&&99IT)__c222OOCIIi00<====	> 	>r2   c                     d}d}t          j        |                    d          |                    d                    }|                     t	          |          t
                     |                     |d           d S )NL3L1YUE8Txlwsalt123utf8s,   qzcdsr9uu/L5hnss3kjNTRe490ETgA70ZBaB5rvnJ5Y=)r   
derive_keyencoder'   r(   r)   )r-   r9   saltkeys       r0   test_derive_keyz#TestWampAuthHelpers.test_derive_keyi   sn    ofmmF33T[[5H5HIIcE***MNNNNNr2   c                     t          j                    }|                     t          |          t                     |                     t          |          d           d S )N   r   generate_wcsr'   r(   r)   r7   r8   s     r0   test_generate_wcs_defaultz-TestWampAuthHelpers.test_generate_wcs_defaultp   sN    "$$fu---Vb)))))r2   c                     dD ]a}t          j        |          }|                     t          |          t                     |                     t          |          |           bd S )Nr<   r`   rC   s      r0   test_generate_wcs_lengthz,TestWampAuthHelpers.test_generate_wcs_lengthu   sf    - 	2 	2F&v..FT&\\5111S[[&1111	2 	2r2   c                 ,   d}t          j        g dd                              d          }t          j        |                    d          |          }|                     t          |          t                     |                     |d           d S )NrV   )r   r   r!   F)ensure_asciirX   s,   1njQtmmeYO41N5EWEzD2kAjjEKRZ5kPZt/TzpYXOzR0=)jsondumpsrZ   r   compute_wcsr'   r(   r)   )r-   r9   	challengerO   s       r0   test_compute_wcsz$TestWampAuthHelpers.test_compute_wcs{   s    Jyyyu===DDVLL	$V]]6%:%:IFF	i%000$STTTTTr2   N)__name__
__module____qualname__r1   r:   rE   rP   rT   r]   rb   rd   rk    r2   r0   r   r   G   s        N N N2 2 2
: : :: : :> > >O O O* * *
2 2 2U U U U Ur2   r   zno Argon2 libraryc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestScramc                     t          j        d          }t          j        dt          j        d          dd          }t          j        |dz             }|                     ||           d S )N@ee4a8acf9d5958354fb79a95ae20692d05e42591ba49fae85eb6700e8b0ed293   p4ssw0rd   1234567890abcdefr      s   ==
)r*   	unhexlifyr   _hash_argon2id13_secret
b2a_base64
a2b_base64r'   )r-   expectedraw_hashdecoded_hashs       r0   test_argon2id_staticzTestScram.test_argon2id_static   sr     %&hii/ 344	
 
  *8g+=>><00000r2   c                     t          j        d          }t          j        ddd          }|                     ||           d S )N@f6991a28c75f43751e0d75499fd7b8649f659118ddc1d61cee5883af547d15f5rt   ru   rB   )r*   rw   r   _hash_pbkdf2_secretr'   )r-   r{   r|   s      r0   test_pbkdf2_staticzTestScram.test_pbkdf2_static   sD    %&hii+K9LaPP8,,,,,r2   c           	      l   t          j        ddt          j        d                              d          dddd	          }t          j        d                              d          |_        |                     d
di|j                   t          j	        dddt          j        d                              d          ddd          }|
                    t                      |          }|                     d|           t          d          }|                    t                      |           d S )N1234567890abcdef
argon2id13ru   r#   r   rv   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   rj   replyr   s        r0   
test_basiczTestScram.test_basic   sM   $!"566==gFF
 
 
 './BCCJJ7SS89O	
 	
 	

 OG7 $%899@@II.
 .
  	 ""466955;	
 	
 	

 #R
 
 
	 	+++++r2   c           	         t          j        ddt          j        d                              d          dddd	          }|j         |                     t                    5 }t          j	        d
ddt          j        d          dd          }|
                    t                      |           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   r   ru   r#   r   rv   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   assertInr6   	exceptionr-   r   ctxrj   s       r0   test_no_memory_argzTestScram.test_no_memory_arg   s9   $!"566==gFF
 
 
 	z** 	2c;$ ()<=="	2 2  I tvvy111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	)	
 	
 	
 	
 	
s   "AB==CCc                    t          j        ddt          j        d          dddd          }|j         |                     t                    5 }t          j        d	d
dt          j        d          ddd d          }|	                    t                      |           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   r   ru   r   rv   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   r6   r   r   s       r0   test_unknown_argzTestScram.test_unknown_arg   s&   $!"566
 
 
 	|,, 		2;$ ()<==""&2 2  I tvvy111		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 	&CM(:(:;;;;;s   AB,,B03B0N)rl   rm   rn   r~   r   r   r   r   ro   r2   r0   rq   rq      s`        1 1 1- - -#, #, #,J
 
 
4< < < < <r2   rq   )unittestunittest.mockr   platformrI   rg   r*   autobahn.wampr   r   r%   python_implementationextendTestCaser   skipIf	HAS_ARGONrq   ro   r2   r0   <module>r      sU  6         				                  "8!##v-- 	
 	
 	

 
 
9U 9U 9U 9U 9U(+ 9U 9U 9Ux T^#%899j< j< j< j< j<! j< j< :9j< j< j<r2   