§
    Ìtºfy&  ã                   ó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°!¬u°b¸´e¸VÑDÔDˆFØ×Ò�T &™\œ\­5Ñ1Ô1Ð1Ø×Ò�XÔ-¨fÑ5Ô5×<Ò<¸WÑEÔEÀrÈ!Ä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Ô6ˆFØ×Ò�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   iöÿÿÿr>   )
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 ‘n”nð 	>ð 	>ˆFÝÔ)¨&°&Ñ9Ô9ˆIØ×Ò�T )™_œ_­cÑ2Ô2Ð2Ø�OŠO˜CŸIšI iÑ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   € ØˆØˆÝŒo˜fŸmšm¨FÑ3Ô3°T·[²[ÀÑ5HÔ5HÑ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ð 	2ˆFÝÔ& 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„   € ØˆÝ”J˜y˜y˜y°uÐ=Ñ=Ô=×DÒDÀVÑ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ØØñ	
ô 
ˆõ  Ô*¨8°gÑ+=Ñ>Ô>ˆØ×Ò˜ <Ñ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ˆåÔ+¨KÐ9LÈaÑ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ÒJÈ7ÑSÔSˆÔØ×ÒØÐ8Ð9ØŒOñ	
ô 	
ð 	
õ
 ”O GØ7Ø ÝÔ$Ð%8Ñ9Ô9×@Ò@ÀÑIÔIØØð.
ð .
ñ ô ˆ	ð ×"Ò"¥4¡6¤6¨9Ñ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Ñ*Ô*ð 	2¨cÝœ¨Ø;Ø$Ý Ô(Ð)<Ñ=Ô=Ø"ð	2ð 2ñ ô ˆIð ×Ò�t™vœv yÑ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ð ×Ò�t™vœv yÑ1Ô1Ð1ð		2ð 		2ð 		2ñ 		2ô 		2ð 		2ð 		2ð 		2ð 		2ð 		2ð 		2øøøð 		2ð 		2ð 		2ð 		2ð 	�ŠÐ&­¨C¬MÑ(:Ô(:Ñ;Ô;Ð;Ð;Ð;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   