§
    HŠtj÷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dS )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¦  «                             d1¦  «        d2fd3f‘ ed0¦  «                             d1¦  «         	                    d4¦  «                             d1¦  «        d2fd5f‘Z
d6„ Zd7S )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   } ||¦  «        }‰                      ||¦  «         |dz   } ||¦  «        }‰                      ||¦  «         ‰                      ||¦  «          ||d¬¦  «         ‰                      t
          j        ||d¬¦  «         ‰                      t
          j        ||d¬¦  «         dS )
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``.
        Fc                 óV   •— ‰                      |¬¦  «                             | ¦  «        S )N©Úuse_defaults)ÚhandlerÚ_calc_checksum)ÚsecretÚfor_hashÚselfs     €ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/passlib/tests/test_handlers_cisco.pyÚcalcz8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calc§   s%   ø€ Ø—<’<¨X�<Ñ6Ô6×EÒEÀfÑMÔ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ð 	Nð 	Nð 	Nð 	Nð 	Nõ % V¨T¬\Ô-GÑHÔHˆØ�T˜,Ñ'Ô'ˆ
ð # SÑ(ˆØ�D˜Ñ%Ô%ˆ	Ø×Ò˜I zÑ2Ô2Ð2ð '¨Ñ,ˆØ˜˜_Ñ-Ô-ˆØ×Ò˜M¨:Ñ6Ô6Ð6Ø×Ò˜M¨9Ñ5Ô5Ð5ð 	ˆˆ\ DÐ)Ñ)Ô)Ð)Ø×Ò�#Ô/°°{ÈTÐÑRÔRÐRØ×Ò�#Ô/°°ÐQUÐÑVÔVÐVÐVÐ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Ô
9×
@Ò
@ÀÑ
IÔ
IØ
ð
Ø%ð	'ðoy
ÐðvWð Wð Wð Wð WrZ   r   c                   ó4   — e Zd Zej        Zej        g d¢z   ZdS )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   Ã   s9   € € € € € ØŒn€Gð -ÔBð ;Fð ;Fð ;Fñ ;ÐÐÐrZ   r   c                   ó4   — e Zd Zej        Zej        g d¢z   ZdS )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€Gà,ÔBð aFð aFð aFñ aÐÐÐrZ   r   c            	       óP   — 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dS )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                 óT  — ddl m}m} | j        }| j        D ]n\  }} ||¦  «        } ||¦  «        }|                      |                     |¦  «        |¦  «         |                      |                     |d¦  «        |¦  «         Œo|                      t          |j        dd¦  «         dS )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Ð6Ð6Ð6Ð6Ð6Ð6Ð6à”,ˆØ Ô5ð 	Bð 	B‰LˆF�DØ �j Ñ(Ô(ˆGØ�h˜vÑ&Ô&ˆGØ×Ò˜WŸ^š^¨DÑ1Ô1°7Ñ;Ô;Ð;Ø×Ò˜WŸ^š^¨D°$Ñ7Ô7¸ÑAÔAÐAÐAà×ÒÕ,¨g¬nØ2°Gñ	=ô 	=ð 	=ð 	=ð 	=rZ   c                 ó´  — | j         }|                      t          |d¬¦  «          |dd¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |d¬¦  «         |                      t          |j        d¬¦  «         |                      t          |j        d¬¦  «         |                      t          |j        d¬¦  «         |                      d¦  «        5  |                     dd¬	¦  «        }ddd¦  «         n# 1 swxY w Y   |                       |d¬
¦  «        j        d¦  «         dS )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Ô8Ð8Øˆ�T¨Ð-Ñ-Ô-Ð-Ø×Ò�) W°5ÐÑ9Ô9Ð9Ø×Ò�* g°CÐÑ8Ô8Ð8Ø×Ò�* g°CÐÑ8Ô8Ð8à×Ò�) W¤]¸ÐÑ?Ô?Ð?Ø×Ò�* g¤m¸#ÐÑ>Ô>Ð>Ø×Ò�* g¤m¸#ÐÑ>Ô>Ð>Ø×#Ò#Ð$;Ñ<Ô<ð 	;ð 	;Ø—]’]¨°T�]Ñ:Ô:ˆFð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;à×Ò˜˜¨TÐ2Ñ2Ô2Ô7¸Ñ<Ô<Ð<Ð<Ð<s   ÄD(Ä(D,Ä/D,N)rh   ri   rj   r   Úcisco_type7rS   Ú	salt_bitsÚintÚ	salt_typer   r«   Úknown_unidentified_hashesrâ   rî   rq   rZ   rX   r   r   r  s�   € € € € € ØÔ€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ð cWð cWð cWÐ(¨+ñ cWô cWð cWðP?ð ?ð ?ð ?ð ?Ð&ñ ?ô ?ð ?ðJdð dð dð dð dÐ&ñ dô dð dðTS=ð S=ð S=ð S=ð S=�{ñ S=ô S=ð S=ð S=ð S=rZ   