o
    5hO                     @   s   d Z ddlmZmZmZ ddlZe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 deeZG dd deZG dd deZG d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                   @   s  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
d6d7 Zd8S )9_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))r5   3.z0dT9Alkdc7EIGS))r5   36CC3Lam53t/mHhoE7))r5   3658xPrWpNnBdD2DzdZ))r5   3333r8   ))r5   3636r:   ))r5   3653r<   ))r5   admdfWs2qiao6KD/P2L))r5   admarA   ))r5   admadrA   ))r5   userPNZ4ycbbZ0jp1.j1))r5   user1234rE   ))0123456789abr   S31BxZOGlAigndcJ))rG   r9   wFqSX91X5.YaRKsi))rG   r;   qjgo3kNgTVxExbno))rG   r=   zmcXPL/vIZcIxLUQs))rG   r>   rI   ))rG   r?   rJ   ))rG   rD   f.T4BKdzdNkjxQl7))rG   rF   rK   u   táblezutf-8rD   Og8fB4NyF0m5Ed9czlatin-1zcMvFC2XVBmK/68yBc                    s   d
 fdd	}t d jj}||}|d }||} || |d }||} ||  || ||dd  jtj||dd  jtj||d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                    s    j |d| S )Nuse_defaults)handler_calc_checksum)secretfor_hashself u/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/passlib/tests/test_handlers_cisco.pycalc   s   z8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calcr3   XYT)rR   N)F)r   rO   truncate_sizeassertNotEqualassertRaisesr   PasswordSizeError)rT   rW   short_secret
short_hashlong_secret	long_hashalt_long_secretalt_long_hashrU   rS   rV   test_calc_digest_spoiler   s   z*_PixAsaSharedTest.test_calc_digest_spoilerN)__name__
__module____qualname____doc__ _PixAsaSharedTest__unittest_skiprequires_userr   r   encodedecodepix_asa_shared_hashesrd   rU   rU   rU   rV   r      s    	$%*+,-./45:=SVWXYZ[\]^_`adefghijkvw{r   c                   @       e Zd ZejZejg d ZdS )r   )')0123456789abcr   eacOpB7vE7ZDukSF))rp   r7   ylJTd/qei66WZe3w)rp   r9   hDx8QRlUhwd6bU8N)rp   r;   vYOOtnkh1HXcMrM7)rp   r=   rr   )rp   r>   rt   )rp   r?   rv   )rp   rD   f4/.SALxqDo59mfV)rp   rF   r{   )0123456789abcdr   6r8888iMxEoPdLp4)r~   r7   f5lvmqWYj9gJqkIH)r~   r9   OJJ1Khg5HeAYBH1c)r~   r;   r   )r~   r=   r   )r~   r>   r   )r~   r?   r   )r~   r@   DbPLCFIkHc2SiyDk)r~   rB   r   )r~   rD   WfO2UiTapPkF/FSn)r~   rF   r   )0123456789abcder   al1e0XFIugTYLai3)r   r7   lYbwBu.f82OIApQB)r   r9   r   )r   r;   r   )r   r=   r   )r   r>   r   )r   r?   r   )r   r@   KgKx1UQvdR/09i9u)r   rB   r   )r   rD   qLopkenJ4WBqxaZN)r   rF   r   )r+   r   r,   )r+   r9   r,   )r+   r;   r,   )r+   r=   r,   )r+   r>   r,   )r+   r?   r,   )r+   rD   r,   )r+   rF   r,   N)	re   rf   rg   r   	cisco_pixrO   r   rm   known_correct_hashesrU   rU   rU   rV   r      s    r   c                   @   rn   )r   )@ro   )rs   FRV9JG18UBEgX0.O)ru   NIwkusG9hmmMy6ZQ)rw   NmrkP98nT7RAeKZz)rx   r   )ry   r   )rz   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   r9   JAeTXHs0n30svlaG))r   r;   4fKSSUBHT1ChGqHp))r   r=   zUSEJbxI6.VY4ecBP))r   r>   r   ))r   r?   r   ))r   rD   /dwqyD7nGdwSrDwk))r   rF   r   ))0123456789abcdefqwertyuiopar   z4wp19zS3OCe.2jt5))r   r9   PjUoGqWBKPyV9qOe))r   r;   bfCy6xFAe5O/gzvM))r   r=   zrd/ZMuGTJFIb2BNG))r   r>   r   ))r   r?   r   ))r   rD   zynfWw3UtszxLMgL))r   rF   r   ))0123456789abcdefqwertyuiopasr   W6nbOddI0SutTK7m))r   r9   r   ))r   r;   r   ))r   rD   r   ))r   rF   r   )) 0123456789abcdefqwertyuiopasdfghr   5hPT/iC6DnoBxo6a))r   r9   r   ))r   r;   r   ))r   rD   r   ))r   rF   r   N)	re   rf   rg   r   	cisco_asarO   r   rm   r   rU   rU   rU   rV   r     s    r   c                	   @   sJ   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d Zd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                 C   sr   ddl m}m} | j}| jD ]\}}||}||}| ||| | ||d| q| t|jdd dS )ztest cisco_type7.decode()r   )
to_unicodeto_bytesNr   ascii)	passlib.utilsr   r   rO   r   assertEqualrl   r\   UnicodeDecodeError)rT   r   r   rO   rQ   r   usecretbsecretrU   rU   rV   test_90_decode  s   
zcisco_type7_test.test_90_decodec                 C   s   | j }| jt|dd |ddd | jt|dd | jt|dd | jt|dd | jt|jdd | jt|jdd | jt|jdd | d |jddd	}W d   n1 s[w   Y  | |dd
jd dS )ztest salt value border casesN)saltT)r   rN   abcid   zsalt/offset must be.*)r   relaxedrM   4   )rO   r\   	TypeError
ValueErrorusingassertWarningListr   r   )rT   rO   subclsrU   rU   rV   test_91_salt  s   zcisco_type7_test.test_91_saltN)re   rf   rg   r   cisco_type7rO   	salt_bitsint	salt_typer   r   known_unidentified_hashesr   r   rU   rU   rU   rV   r   r  s$    +	r   )rh   
__future__r   r   r   logging	getLoggerre   logpasslibr   r   passlib.utils.compatr   utilsr	   r
   r   test_handlersr   __all__r   r   r   r   rU   rU   rU   rV   <module>   s    
	 )Ej