ó
    ð›‘hy&  ã                   óF  • S SK r S SKJr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  / SQr
\R                  " 5       S:w  a  \
R                  / SQ5         " S S	\ R                  5      r\ R                  " \R                   (       + S
5       " S S\ R                  5      5       rg)é    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                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestWampAuthHelperséG   c                 ó  • [          H€  n[        R                  " US   US   US   US   S5      nU R                  [	        U5      [
        5        U R                  [        R                  " U5      R                  S5      US   5        M‚     g )Nr   r   r   é   Úsha1Úasciié   )	ÚPBKDF2_TEST_VECTORSr   Úpbkdf2ÚassertEqualÚtypeÚbytesÚbinasciiÚhexlifyÚdecode)ÚselfÚtvÚresults      ÚeC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/wamp/test/test_wamp_auth.pyÚtest_pbkdf2ÚTestWampAuthHelpers.test_pbkdf2I   sp   € ß%ˆBÜ—[’[  A¡¨¨1©¨r°!©u°b¸±e¸VÓDˆFØ×ÑœT &›\¬5Ô1Ø×ÑœX×-Ò-¨fÓ5×<Ñ<¸WÓEÀrÈ!ÁuÖMò &ó    c                 ó¢   • [         R                  " 5       nU R                  [        U5      [        5        U R                  [        U5      S5        g )Ng      0@©r   Úgenerate_totp_secretr(   r)   ÚstrÚlen©r.   Úsecrets     r1   Ú!test_generate_totp_secret_defaultÚ5TestWampAuthHelpers.test_generate_totp_secret_defaultO   s8   € Ü×*Ò*Ó,ˆØ×Ñœ˜f›¤sÔ+Ø×Ñœ˜V› jÕ1r4   c                 óÂ   • S HY  n[         R                  " U5      nU R                  [        U5      [        5        U R                  [        U5      US-  S-  5        M[     g )N©é   é
   r	   é   é(   é2   é   r@   r6   ©r.   Úlengthr;   s      r1   Ú test_generate_totp_secret_lengthÚ4TestWampAuthHelpers.test_generate_totp_secret_lengthT   sL   € Û-ˆFÜ×.Ò.¨vÓ6ˆFØ×ÑœT &›\¬3Ô/Ø×ÑœS ›[¨&°1©*°q©.Ö9ò .r4   c                 óâ   • [         R                  " S5      nSn[        R                  " U5      nU R	                  [        U5      [        5        U R                  UR                  U5      S L5        g )Nú\d\d\d\d\d\dÚMFRGGZDFMZTWQ2LK)	ÚreÚcompiler   Úcompute_totpr(   r)   r8   Ú
assertTrueÚmatch)r.   Úpatr;   Ú	signatures       r1   Útest_compute_totpÚ%TestWampAuthHelpers.test_compute_totpZ   sS   € Ü�jŠj˜Ó)ˆØ#ˆÜ×%Ò% fÓ-ˆ	Ø×Ñœ˜i›¬#Ô.Ø�‰˜Ÿ	™	 )Ó,°DÐ8Õ9r4   c                 ó  • [         R                  " S5      nSn[        SS5       HZ  n[        R                  " X#5      nU R                  [        U5      [        5        U R                  UR                  U5      S L5        M\     g )NrK   rL   iöÿÿÿrA   )
rM   rN   Úranger   rO   r(   r)   r8   rP   rQ   )r.   rR   r;   ÚoffsetrS   s        r1   Útest_compute_totp_offsetÚ,TestWampAuthHelpers.test_compute_totp_offseta   sc   € Ü�jŠj˜Ó)ˆØ#ˆÜ˜C –nˆFÜ×)Ò)¨&Ó9ˆIØ×ÑœT )›_¬cÔ2Ø�O‰O˜CŸI™I iÓ0¸Ð<Ö=ò %r4   c                 óØ   • SnSn[         R                  " UR                  S5      UR                  S5      5      nU R                  [	        U5      [
        5        U R                  US5        g )NÚL3L1YUE8TxlwÚsalt123Úutf8s,   qzcdsr9uu/L5hnss3kjNTRe490ETgA70ZBaB5rvnJ5Y=)r   Ú
derive_keyÚencoder(   r)   r*   )r.   r;   ÚsaltÚkeys       r1   Útest_derive_keyÚ#TestWampAuthHelpers.test_derive_keyi   sS   € ØˆØˆÜ�oŠo˜fŸm™m¨FÓ3°T·[±[ÀÓ5HÓIˆØ×Ñœ˜c›¤EÔ*Ø×Ñ˜ÐMÕNr4   c                 ó¢   • [         R                  " 5       nU R                  [        U5      [        5        U R                  [        U5      S5        g )Né   ©r   Úgenerate_wcsr(   r)   r*   r9   r:   s     r1   Útest_generate_wcs_defaultÚ-TestWampAuthHelpers.test_generate_wcs_defaultp   s8   € Ü×"Ò"Ó$ˆØ×Ñœ˜f›¤uÔ-Ø×Ñœ˜V› bÕ)r4   c                 ó¶   • S HS  n[         R                  " U5      nU R                  [        U5      [        5        U R                  [        U5      U5        MU     g )Nr?   rg   rF   s      r1   Útest_generate_wcs_lengthÚ,TestWampAuthHelpers.test_generate_wcs_lengthu   sD   € Û-ˆFÜ×&Ò& vÓ.ˆFØ×ÑœT &›\¬5Ô1Ø×ÑœS ›[¨&Ö1ò .r4   c                 ó  • Sn[         R                  " / SQSS9R                  S5      n[        R                  " UR                  S5      U5      nU R                  [        U5      [        5        U R                  US5        g )Nr\   )r   r   r"   F)Úensure_asciir^   s,   1njQtmmeYO41N5EWEzD2kAjjEKRZ5kPZt/TzpYXOzR0=)ÚjsonÚdumpsr`   r   Úcompute_wcsr(   r)   r*   )r.   r;   Ú	challengerS   s       r1   Útest_compute_wcsÚ$TestWampAuthHelpers.test_compute_wcs{   sb   € ØˆÜ—J’Jšy°uÑ=×DÑDÀVÓLˆ	Ü×$Ò$ V§]¡]°6Ó%:¸IÓFˆ	Ø×Ñœ˜i›¬%Ô0Ø×Ñ˜Ð$SÕTr4   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r2   r<   rH   rT   rY   rc   ri   rl   rt   Ú__static_attributes__rv   r4   r1   r   r   G   s2   † òNò2ò
:ò:ò>òOò*ò
2õUr4   r   zno Argon2 libraryc                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	Ú	TestScraméƒ   c                 óÞ   • [         R                  " S5      n[        R                  " S[         R                  " S5      SS5      n[         R
                  " US-   5      nU R                  X5        g )NÚ@ee4a8acf9d5958354fb79a95ae20692d05e42591ba49fae85eb6700e8b0ed293ó   p4ssw0rdó   1234567890abcdefr   é   s   ==
)r+   Ú	unhexlifyr   Ú_hash_argon2id13_secretÚ
b2a_base64Ú
a2b_base64r(   )r.   ÚexpectedÚraw_hashÚdecoded_hashs       r1   Útest_argon2id_staticÚTestScram.test_argon2id_static†   sb   € ô ×%Ò%Ð&hÓiˆÜ×/Ò/ØÜ×ÒÐ 3Ó4ØØó	
ˆô  ×*Ò*¨8°gÑ+=Ó>ˆØ×Ñ˜Õ0r4   c                 ó‚   • [         R                  " S5      n[        R                  " SSS5      nU R	                  X!5        g )NÚ@f6991a28c75f43751e0d75499fd7b8649f659118ddc1d61cee5883af547d15f5r�   r‚   rE   )r+   r„   r   Ú_hash_pbkdf2_secretr(   )r.   rˆ   r‰   s      r1   Útest_pbkdf2_staticÚTestScram.test_pbkdf2_static“   s6   € Ü×%Ò%Ð&hÓiˆä×+Ò+¨KÐ9LÈaÓPˆØ×Ñ˜Õ,r4   c           
      ó,  • [         R                  " SS[        R                  " S5      R	                  S5      SSSSS	9n[        R                  " S5      R	                  S5      Ul        U R                  S
S0UR                  5        [        R                  " SSS[        R                  " S5      R	                  S5      SSS.5      nUR                  [        5       U5      nU R                  SU5        [        SS9nUR                  [        5       U5        g )NÚ1234567890abcdefÚ
argon2id13r‚   r$   r   rƒ   Úp4ssw0rdÚusername©ÚnonceÚkdfra   Ú
iterationsÚmemoryÚpasswordÚauthidr˜   Ú 31323334353637383930616263646566ÚscramÚ 1234567890abcdeffedcba0987654321úargon2id-13)r˜   r™   ra   rš   r›   s,   f5r3loERzGVSuimE+lvO0bWna2zyswBo0HrZkaaEy38=)Úscram_server_signature)r   Ú	AuthScramr+   Úb2a_hexr-   Ú_client_noncer(   Ú	authextrar   Ú	ChallengeÚon_challenger   ÚdictÚ
on_welcome)r.   rŸ   rs   Úreplyr¦   s        r1   Ú
test_basicÚTestScram.test_basic™   s  € Ü—’Ø$ØÜ×!Ò!Ð"5Ó6×=Ñ=¸gÓFØØØØñ
ˆô '×.Ò.Ð/BÓC×JÑJÈ7ÓSˆÔØ×ÑØÐ8Ð9Ø�O‰Oô	
ô
 —O’O GØ7Ø Ü×$Ò$Ð%8Ó9×@Ñ@ÀÓIØØñ.
ó ˆ	ð ×"Ñ"¤4£6¨9Ó5ˆØ×ÑØ;Øô	
ô
 Ø#Rñ
ˆ	ð 	×Ñœ› Õ+r4   c           
      óÒ  • [         R                  " SS[        R                  " S5      R	                  S5      SSSSS	9nUR
                    U R                  [        5       n[        R                  " S
SS[        R                  " S5      SS.5      nUR                  [        5       U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr“   r”   r‚   r$   r   rƒ   r•   r–   r—   rŸ   r    r¡   )r˜   r™   ra   rš   zrequires 'memory' parameter)r   r£   r+   r¤   r-   r¦   ÚassertRaisesÚ
ValueErrorr   r§   r¨   r   ÚassertInr8   Ú	exception©r.   rŸ   Úctxrs   s       r1   Útest_no_memory_argÚTestScram.test_no_memory_arg¾   sÁ   € Ü—’Ø$ØÜ×!Ò!Ð"5Ó6×=Ñ=¸gÓFØØØØñ
ˆð 	�Šà×ÑœzÔ*¨cÜŸš¨Ø;Ø$Ü ×(Ò(Ð)<Ó=Ø"ñ	2ó ˆIð ×Ñœt›v yÔ1÷ +ð 	�‰Ø)Ü�—‘Óõ	
÷ +Õ*ús   ÁACÃ
C&c                 ó¸  • [         R                  " SS[        R                  " S5      SSSSS9nUR                    U R                  [        5       n[        R                  " S	S
S[        R                  " S5      SSS S.5      nUR                  [        5       U5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr“   r”   r‚   r   rƒ   r•   r–   r—   rŸ   r    r¡   )r˜   r™   ra   rš   r›   Úan_invalid_keyr¸   )r   r£   r+   r¤   r¦   r¯   ÚRuntimeErrorr   r§   r¨   r   r±   r8   r²   r³   s       r1   Útest_unknown_argÚTestScram.test_unknown_argØ   s¹   € Ü—’Ø$ØÜ×!Ò!Ð"5Ó6ØØØØñ
ˆð 	�Šà×Ñœ|Ô,°ÜŸš¨Ø;Ø$Ü ×(Ò(Ð)<Ó=Ø"ØØ"&ñ2ó ˆIð ×Ñœt›v yÔ1÷ -ð 	�‰Ð&¬¨C¯M©MÓ(:Õ;÷ -Õ,ús   ÁACÃ
Crv   N)
rw   rx   ry   rz   r‹   r�   r¬   rµ   rº   r{   rv   r4   r1   r}   r}   ƒ   s   † ò1ò-ò#,òJ
õ4<r4   r}   )ÚunittestÚunittest.mockr   ÚplatformrM   rp   r+   Úautobahn.wampr   r   r&   Úpython_implementationÚextendÚTestCaser   ÚskipIfÚ	HAS_ARGONr}   rv   r4   r1   Ú<module>rÅ      s›   ðó6 Ý Û ã 	Û Û å Ý òÐ ð ×!Ò!Ó# vÓ-ð ×Ñò	
ô
ô9U˜(×+Ñ+ô 9Uðx 
‡‚�T—^‘^Ô#Ð%8Ó9ôj<�×!Ñ!ó j<ó :ñj<r4   