Ë
    àU.j÷O  ã                   óæ   — d Z ddlmZmZmZ ddlZ ej                  e«      Zddl	m
Z
mZ ddlmZ ddlmZmZmZ ddlmZ g d	¢Z G d
„ dee«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)zI
passlib.tests.test_handlers_cisco - tests for Cisco-specific algorithms
é    )Úabsolute_importÚdivisionÚprint_functionN)ÚhashÚexc)Úué   )ÚUserHandlerMixinÚHandlerCaseÚrepeat_string)ÚUPASS_TABLE)Úcisco_pix_testÚcisco_asa_testÚcisco_type7_testc                   ó‚  — e Zd ZdZdZdZg d‘d‘d‘d‘d‘d	‘d
‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘edf‘d‘d‘d‘d‘d‘d ‘d!‘d"‘d#‘d$‘d%‘d&‘d'‘d(‘d)‘d*‘d+‘d,‘d-‘d.‘d/‘ ed0«      j                  d1«      d2fd3f‘ ed0«      j                  d1«      j                  d4«      j                  d1«      d2fd5f‘Z
d6„ Zy7)8Ú_PixAsaSharedTestz3
    class w/ shared info for PIX & ASA tests.
    TF))ÚciscoÚ z2KFQnbNIdI.2KYOU))Úhscr   zYtT8/k6Np8F1yz2c))r   r   Ú8Ry2YjIyt7RRXU24))r   ÚjohnÚhN7LzeyYjw12FSIU))r   Újackz7DrfeZ7cyOj/PslD))ÚripperÚalexzh3mJrcH0901pqX/m))r   r   Ú3USUcOPFUiMCO4Jk))r   Úcisco1r   ))z
CscFw-ITC!ÚadmcomzlZt7HSIXw3.QP7.R)ÚcangetinúTynyB./ftknE77QP))r   ÚrramseyÚjgBZqYtsWfGcUKDi))Ú	phonehomeÚrharrisÚzyIIMSYjiPm0L7a6))r   r   r    )Útest1zTRPEas6f/aa6JSPL)Útest2ÚOMT6mXmAvGyzrCtp)Útest3ÚgTC7RIy1XJzagmLm)Útest4zoWC1WRwqlBlbpf/O)ÚpasswordzNuLKvvWGg.x9HEKO)Ú0123456789abcdefú.7nfVBEIEu4KbF/1))Ú1234567890123456r   ÚfeCkwUGktTCAgIbD))Úwatag00s1amr   ÚjMorNbK0514fadBh))r   r   ÚjmINXNH6p1BxUpppÚCaiIvkLMu2TOHXGT))Ú1234r   ÚRLPMUQ26KL4blgFN))Ú01234567r   Ú0T52THgnYdV1tlOF))r7   Ú3ú.z0dT9Alkdc7EIGS))r7   Ú36úCC3Lam53t/mHhoE7))r7   Ú365Ú8xPrWpNnBdD2DzdZ))r7   Ú3333r:   ))r7   Ú3636r<   ))r7   Ú3653r>   ))r7   ÚadmúdfWs2qiao6KD/P2L))r7   ÚadmarC   ))r7   ÚadmadrC   ))r7   ÚuserúPNZ4ycbbZ0jp1.j1))r7   Úuser1234rG   ))Ú0123456789abr   ÚS31BxZOGlAigndcJ))rI   r;   úwFqSX91X5.YaRKsi))rI   r=   Úqjgo3kNgTVxExbno))rI   r?   zmcXPL/vIZcIxLUQs))rI   r@   rK   ))rI   rA   rL   ))rI   rF   úf.T4BKdzdNkjxQl7))rI   rH   rM   u   tÃ¡blezutf-8rF   ÚOg8fB4NyF0m5Ed9czlatin-1zcMvFC2XVBmK/68yBc                 ó¢  ‡ — dˆ fd„	}t        d‰ j                  j                  «      } ||«      }|dz   } ||«      }‰ j                  ||«       |dz   } ||«      }‰ j                  ||«       ‰ j                  ||«        ||d¬«       ‰ j	                  t
        j                  ||d¬«       ‰ j	                  t
        j                  ||d¬«       y)	zü
        _calc_checksum() -- spoil oversize passwords during verify

        for details, see 'spoil_digest' flag instead that function.
        this helps cisco_pix/cisco_asa implement their policy of
        ``.truncate_verify_reject=True``.
        c                 óF   •— ‰j                  |¬«      j                  | «      S )N©Úuse_defaults)ÚhandlerÚ_calc_checksum)ÚsecretÚfor_hashÚselfs     €úcC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/tests/test_handlers_cisco.pyÚcalcz8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calc§   s   ø€ Ø—<‘<¨X�<Ó6×EÑEÀfÓMÐMó    r5   ÚXÚYT)rV   N)F)r   rS   Útruncate_sizeÚassertNotEqualÚassertRaisesr   ÚPasswordSizeError)rW   rY   Úshort_secretÚ
short_hashÚlong_secretÚ	long_hashÚalt_long_secretÚalt_long_hashs   `       rX   Útest_calc_digest_spoilerz*_PixAsaSharedTest.test_calc_digest_spoilerŸ   sÎ   ø€ õ	Nô % V¨T¯\©\×-GÑ-GÓHˆÙ˜,Ó'ˆ
ð # SÑ(ˆÙ˜Ó%ˆ	Ø×Ñ˜I zÔ2ð '¨Ñ,ˆÙ˜_Ó-ˆØ×Ñ˜M¨:Ô6Ø×Ñ˜M¨9Ô5ñ 	ˆ\ DÕ)Ø×Ñœ#×/Ñ/°°{ÈTÐÔRØ×Ñœ#×/Ñ/°°ÐQUÐÕVrZ   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú _PixAsaSharedTest__unittest_skipÚrequires_userr   r   ÚencodeÚdecodeÚpix_asa_shared_hashesrg   © rZ   rX   r   r      sÃ  „ ñð €OØ€Mðy
ð 	,ð	y
ð 	*ðy
ð 	'ðy
ð 	0ðy
ð  	0ð!y
ð* 	1ð+y
ð, 	1ð-y
ð. 	2ð/y
ð0 	7ð1y
ð2 	)ð3y
ð4 	6ð5y
ð> 	7ð?y
ðH 	/ðIy
ðJ 	6ðKy
ðT 	&ðUy
ðV 	&ðWy
ðX 	&ðYy
ðZ 	&ð[y
ð\ 	)ð]y
ð^ 	1ð_y
ðh 	7ðiy
ðj 	2ðky
ðt 	3ðuy
ðz 
Ð(Ð)ð{y
ðf 	+ðgy
ðl 	/ðmy
ðn 	0ðoy
ðp 	1ðqy
ðr 	2ðsy
ðt 	3ðuy
ðv 	3ðwy
ðx 	3ðyy
ðz 	2ð{y
ð| 	3ð}y
ð~ 	4ðy
ð@ 	3ðAy
ðB 	7ðCy
ðH 	3ðIy
ðJ 	5ðKy
ðL 	6ðMy
ðN 	7ðOy
ðP 	7ðQy
ðR 	7ðSy
ðT 	7ðUy
ðV 	;ðWy
ñl ˆJ‹-×
Ñ
˜wÓ
'¨Ð	0Ð2DÐEðmy
ñn ˆJ‹-×
Ñ
˜wÓ
'×
.Ñ
.¨yÓ
9×
@Ñ
@ÀÓ
IØ
ð
Ø%ð	'ðoy
ÐóvWrZ   r   c                   óF   — e Zd Zej                  Zej                  g d¢z   Zy)r   )'©)Ú0123456789abcr   ÚeacOpB7vE7ZDukSF))rt   r9   úylJTd/qei66WZe3w)©rt   r;   ÚhDx8QRlUhwd6bU8N)©rt   r=   ÚvYOOtnkh1HXcMrM7)©rt   r?   rv   )©rt   r@   rx   )©rt   rA   rz   )©rt   rF   úf4/.SALxqDo59mfV)©rt   rH   r   ©)Ú0123456789abcdr   Ú6r8888iMxEoPdLp4)©r‚   r9   Úf5lvmqWYj9gJqkIH)©r‚   r;   ÚOJJ1Khg5HeAYBH1c)©r‚   r=   r‡   )©r‚   r?   r…   )©r‚   r@   r‡   )©r‚   rA   r‡   )©r‚   rB   ÚDbPLCFIkHc2SiyDk)©r‚   rD   r�   )©r‚   rF   úWfO2UiTapPkF/FSn)©r‚   rH   r�   ©)Ú0123456789abcder   Úal1e0XFIugTYLai3)©r“   r9   úlYbwBu.f82OIApQB)©r“   r;   r–   )©r“   r=   r–   )©r“   r?   r–   )©r“   r@   r–   )©r“   rA   r–   )©r“   rB   úKgKx1UQvdR/09i9u)©r“   rD   r�   )©r“   rF   ÚqLopkenJ4WBqxaZN)©r“   rH   r    ©)r-   r   r.   )©r-   r;   r.   )©r-   r=   r.   )©r-   r?   r.   )©r-   r@   r.   )©r-   rA   r.   )©r-   rF   r.   )©r-   rH   r.   N)	rh   ri   rj   r   Ú	cisco_pixrS   r   rp   Úknown_correct_hashesrq   rZ   rX   r   r   Ã   s$   „ Ø�n‰n€Gð -×BÑBò ;Fñ ;ÑrZ   r   c                   óF   — e Zd Zej                  Zej                  g d¢z   Zy)r   )@rs   )rw   úFRV9JG18UBEgX0.O)ry   ÚNIwkusG9hmmMy6ZQ)r{   ÚNmrkP98nT7RAeKZz)r|   r­   )r}   r®   )r~   ú8Q/FZeam5ai1A47p)r€   r°   r�   )r„   ÚyxGoujXKPduTVaYB)r†   úW0jckhnhjnr/DiT/)rˆ   ÚHuVOxfMQNahaoF8u)r‰   r±   )rŠ   r²   )r‹   r³   )rŒ   ÚRtOmSeoCs4AUdZqZ)rŽ   r´   )r�   úrrucwrcM0h25pr.m)r‘   rµ   r’   )r•   únAZrQoHaL.fgrIqt)r—   Ú2GxIQ6ICE795587X)r˜   ÚQmDsGwCRBbtGEKqM)r™   r¶   )rš   r·   )r›   r¸   )rœ   úAj2aP0d.nk62wl4m)rž   r¹   )rŸ   úetxiXfo.bINJcXI7)r¡   rº   r¢   )r£   úGhI8.yFSC5lwoafg)r¤   úKFBI6cNQauyY6h/G)r¥   ÚGhdi1IlsswgYzzMH)r¦   r»   )r§   r¼   )r¨   úIneB.wc9sfRzLPoh)r©   r¾   ))Ú0123456789abcdefqr   zbKshl.EN.X3CVFRQ))r¿   r;   ÚJAeTXHs0n30svlaG))r¿   r=   Ú4fKSSUBHT1ChGqHp))r¿   r?   zUSEJbxI6.VY4ecBP))r¿   r@   rÀ   ))r¿   rA   rÁ   ))r¿   rF   ú/dwqyD7nGdwSrDwk))r¿   rH   rÂ   ))Ú0123456789abcdefqwertyuiopar   z4wp19zS3OCe.2jt5))rÃ   r;   ÚPjUoGqWBKPyV9qOe))rÃ   r=   úbfCy6xFAe5O/gzvM))rÃ   r?   zrd/ZMuGTJFIb2BNG))rÃ   r@   rÄ   ))rÃ   rA   rÅ   ))rÃ   rF   ÚzynfWw3UtszxLMgL))rÃ   rH   rÆ   ))Ú0123456789abcdefqwertyuiopasr   ÚW6nbOddI0SutTK7m))rÇ   r;   rÈ   ))rÇ   r=   rÈ   ))rÇ   rF   rÈ   ))rÇ   rH   rÈ   ))Ú 0123456789abcdefqwertyuiopasdfghr   ú5hPT/iC6DnoBxo6a))rÉ   r;   rÊ   ))rÉ   r=   rÊ   ))rÉ   rF   rÊ   ))rÉ   rH   rÊ   N)	rh   ri   rj   r   Ú	cisco_asarS   r   rp   r«   rq   rZ   rX   r   r     s$   „ Ø�n‰n€Gà,×BÑBò aFñ aÑrZ   r   c            	       óX   — e Zd Zej                  ZdZeZddddddde	d	fgZ
d
dgZd„ Zd„ Zy)r   é   )zsecure Ú04480E051A33490E)zIts time to go to lunch!Ú2153B1F1F443E22292D73212D5300194315591954465A0D0B59)zt35t:pa55w0rdÚ08351F1B1D431516475E1B54382F)zhiImTesting:)Ú020E0D7206320A325847071E5F5E)Úcisco123Ú060506324F41584B56)rÒ   Ú1511021F07257A767B)zSupe&8ZUbeRp4SSÚ 06351A3149085123301517391C501918Ú0958EDC8A9F495F6F8A5FDÚ0A480E051A33490EÚ
99400E4812c                 ó>  — ddl m}m} | j                  }| j                  D ]X  \  }} ||«      } ||«      }| j                  |j                  |«      |«       | j                  |j                  |d«      |«       ŒZ | j                  t        |j                  dd«       y)ztest cisco_type7.decode()r   )Ú
to_unicodeÚto_bytesNrÖ   Úascii)	Úpasslib.utilsrÚ   rÛ   rS   r«   ÚassertEqualro   r_   ÚUnicodeDecodeError)rW   rÚ   rÛ   rS   rU   r   ÚusecretÚbsecrets           rX   Útest_90_decodezcisco_type7_test.test_90_decode©  sˆ   € ç6à—,‘,ˆØ ×5Ô5‰LˆF�DÙ  Ó(ˆGÙ˜vÓ&ˆGØ×Ñ˜WŸ^™^¨DÓ1°7Ô;Ø×Ñ˜WŸ^™^¨D°$Ó7¸ÕAð	 6ð 	×ÑÔ,¨g¯n©nØ2°Gõ	=rZ   c                 ót  — | j                   }| j                  t        |d¬«        |dd¬«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |d¬«       | j                  t        |j                  d¬«       | j                  t        |j                  d¬«       | j                  t        |j                  d¬«       | j                  d«      5  |j	                  dd¬	«      }ddd«       | j                   d¬
«      j                  d«       y# 1 sw Y   Œ-xY w)ztest salt value border casesN)ÚsaltT)rä   rR   Úabciöÿÿÿéd   zsalt/offset must be.*)rä   ÚrelaxedrQ   é4   )rS   r_   Ú	TypeErrorÚ
ValueErrorÚusingÚassertWarningListrÞ   rä   )rW   rS   Úsubclss      rX   Útest_91_saltzcisco_type7_test.test_91_salt·  sþ   € à—,‘,ˆØ×Ñœ) W°4ÐÔ8Ù�T¨Õ-Ø×Ñœ) W°5ÐÔ9Ø×Ñœ* g°CÐÔ8Ø×Ñœ* g°CÐÔ8à×Ñœ) W§]¡]¸ÐÔ?Ø×Ñœ* g§m¡m¸#ÐÔ>Ø×Ñœ* g§m¡m¸#ÐÔ>Ø×#Ñ#Ð$;Õ<Ø—]‘]¨°T�]Ó:ˆF÷ =à×Ñ™¨TÔ2×7Ñ7¸Õ<÷ =Ð<ús   Ã.D.Ä.D7N)rh   ri   rj   r   Úcisco_type7rS   Ú	salt_bitsÚintÚ	salt_typer   r«   Úknown_unidentified_hashesrâ   rî   rq   rZ   rX   r   r   r  sj   „ Ø×Ñ€GØ€IØ€Ið 	(ð
	?ð 	:ð
 	:ð
 	+Ø*ð
 	@ð 
Ð.Ð/ðM'ÐðV 	ð 	ð!Ðò=ó=rZ   r   )rk   Ú
__future__r   r   r   ÚloggingÚ	getLoggerrh   ÚlogÚpasslibr   r   Úpasslib.utils.compatr   Úutilsr
   r   r   Útest_handlersr   Ú__all__r   r   r   r   rq   rZ   rX   Ú<module>rý      s€   ðñ÷ AÑ @ã Ø€g×Ñ˜Ó!€÷ Ý "ß ?Ñ ?Ý &ò€ôcWÐ(¨+ô cWôP?Ð&ô ?ôJdÐ&ô dôTS=�{õ S=rZ   