
    hy&                     <   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k7  re
j                  g d        G d d	e j                        Z e j                  ej                    d
       G d de j                               Zy)    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                   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      ]/var/www/Befach/backend/env/lib/python3.12/site-packages/autobahn/wamp/test/test_wamp_auth.pytest_pbkdf2zTestWampAuthHelpers.test_pbkdf2I   sp    %B[[A1r!ubeVDFT&\51X--f5<<WEr!uM &    c                     t        j                         }| j                  t        |      t               | j                  t        |      d       y )Ng      0@r   generate_totp_secretr'   r(   strlenr-   secrets     r0   !test_generate_totp_secret_defaultz5TestWampAuthHelpers.test_generate_totp_secret_defaultO   s8    **,fs+Vj1r2   c                     dD ]W  }t        j                  |      }| j                  t        |      t               | j                  t        |      |dz  dz         Y y )N   
   r	      (   2      r=   r4   r-   lengthr9   s      r0    test_generate_totp_secret_lengthz4TestWampAuthHelpers.test_generate_totp_secret_lengthT   sL    -F..v6FT&\3/S[&1*q.9 .r2   c                     t        j                  d      }d}t        j                  |      }| j	                  t        |      t               | j                  |j                  |      d u       y )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   sS    jj)#%%f-	i#.		),D89r2   c                    t        j                  d      }d}t        dd      D ]Y  }t        j                  ||      }| j                  t        |      t               | j                  |j                  |      d u       [ y )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   se    jj)#CnF))&&9IT)_c2OOCIIi0<= %r2   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-   r9   saltkeys       r0   test_derive_keyz#TestWampAuthHelpers.test_derive_keyi   sS    oofmmF3T[[5HIcE*MNr2   c                     t        j                         }| j                  t        |      t               | j                  t        |      d       y )N   r   generate_wcsr'   r(   r)   r7   r8   s     r0   test_generate_wcs_defaultz-TestWampAuthHelpers.test_generate_wcs_defaultp   s8    ""$fu-Vb)r2   c                     dD ]Q  }t        j                  |      }| j                  t        |      t               | j                  t        |      |       S y )Nr<   r`   rC   s      r0   test_generate_wcs_lengthz,TestWampAuthHelpers.test_generate_wcs_lengthu   sD    -F&&v.FT&\51S[&1 .r2   c                    d}t        j                  g dd      j                  d      }t        j                  |j                  d      |      }| j                  t        |      t               | j                  |d       y )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{   sb    JJyu=DDVL	$$V]]6%:IF	i%0$STr2   N)__name__
__module____qualname__r1   r:   rE   rP   rT   r]   rb   rd   rk    r2   r0   r   r   G   s2    N2
::>O*
2Ur2   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       r0   test_argon2id_staticzTestScram.test_argon2id_static   sd     %%&hi// 34	
  **8g+=><0r2   c                     t        j                  d      }t        j                  ddd      }| j	                  ||       y )N@f6991a28c75f43751e0d75499fd7b8649f659118ddc1d61cee5883af547d15f5rt   ru   rB   )r*   rw   r   _hash_pbkdf2_secretr'   )r-   r{   r|   s      r0   test_pbkdf2_staticzTestScram.test_pbkdf2_static   s8    %%&hi++K9LaP8,r2   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
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   s   $!!"56==gF
 '../BCJJ7S89OO	

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

 #R
	 	+r2   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   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   s    $!!"56==gF
 	z* 	2c;$ (()<="	2 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   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
 	|, 		2;$ (()<=""&2 I tvy1		2 	&CMM(:;		2 		2s   AC

CN)rl   rm   rn   r~   r   r   r   r   ro   r2   r0   rq   rq      s    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      s   6    	      "8!!#v- 	

9U(++ 9Ux T^^#%89j<!! j< :j<r2   