U
    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 d	d
dg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                1   @   s   e Zd ZdZdZdZ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g/Z
d6d7 Zd8S )9_PixAsaSharedTestz3
    class w/ shared info for PIX & ASA tests.
    TF))cisco z2KFQnbNIdI.2KYOU))Zhscr   zYtT8/k6Np8F1yz2c))r   r   Z8Ry2YjIyt7RRXU24))r   ZjohnZhN7LzeyYjw12FSIU))r   Zjackz7DrfeZ7cyOj/PslD))ZripperZalexzh3mJrcH0901pqX/m))r   r   3USUcOPFUiMCO4Jk))r   cisco1r   ))z
CscFw-ITC!ZadmcomzlZt7HSIXw3.QP7.R)cangetinTynyB./ftknE77QP))r   ZrramseyZjgBZqYtsWfGcUKDi))Z	phonehomeZrharrisZzyIIMSYjiPm0L7a6))r   r   r   )Ztest1zTRPEas6f/aa6JSPL)Ztest2ZOMT6mXmAvGyzrCtp)Ztest3ZgTC7RIy1XJzagmLm)Ztest4zoWC1WRwqlBlbpf/O)ZpasswordzNuLKvvWGg.x9HEKO)0123456789abcdef.7nfVBEIEu4KbF/1))Z1234567890123456r   ZfeCkwUGktTCAgIbD))Zwatag00s1amr   ZjMorNbK0514fadBh))r   r   ZjmINXNH6p1BxUpppZCaiIvkLMu2TOHXGT))1234r   ZRLPMUQ26KL4blgFN))01234567r   Z0T52THgnYdV1tlOF))r   3.z0dT9Alkdc7EIGS))r   36CC3Lam53t/mHhoE7))r   3658xPrWpNnBdD2DzdZ))r   3333r   ))r   3636r   ))r   3653r    ))r   admdfWs2qiao6KD/P2L))r   admar%   ))r   Zadmadr%   ))r   userPNZ4ycbbZ0jp1.j1))r   user1234r(   ))0123456789abr   ZS31BxZOGlAigndcJ))r*   r   wFqSX91X5.YaRKsi))r*   r   qjgo3kNgTVxExbno))r*   r!   zmcXPL/vIZcIxLUQs))r*   r"   r+   ))r*   r#   r,   ))r*   r'   f.T4BKdzdNkjxQl7))r*   r)   r-   u   táblezutf-8r'   Z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)handlerZ_calc_checksum)secretfor_hashself G./venv/lib/python3.8/site-packages/passlib/tests/test_handlers_cisco.pycalc   s    z8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calcr   XYT)r2   N)F)r   r0   Ztruncate_sizeZassertNotEqualassertRaisesr   ZPasswordSizeError)r4   r7   Zshort_secretZ
short_hashZlong_secretZ	long_hashZalt_long_secretZalt_long_hashr5   r3   r6   test_calc_digest_spoiler   s    z*_PixAsaSharedTest.test_calc_digest_spoilerN)__name__
__module____qualname____doc__Z _PixAsaSharedTest__unittest_skipZrequires_userr   r   encodedecodepix_asa_shared_hashesr;   r5   r5   r5   r6   r      sp   {r   c                (   @   sj   e Zd ZejZejddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'g' Zd(S ))r   )0123456789abcr   ZeacOpB7vE7ZDukSF))rD   r   ylJTd/qei66WZe3w)rD   r   hDx8QRlUhwd6bU8N)rD   r   vYOOtnkh1HXcMrM7)rD   r!   rE   )rD   r"   rG   )rD   r#   rI   )rD   r'   f4/.SALxqDo59mfV)rD   r)   rN   )0123456789abcdr   Z6r8888iMxEoPdLp4)rQ   r   f5lvmqWYj9gJqkIH)rQ   r   OJJ1Khg5HeAYBH1c)rQ   r   rU   )rQ   r!   rS   )rQ   r"   rU   )rQ   r#   rU   )rQ   r$   DbPLCFIkHc2SiyDk)rQ   r&   r[   )rQ   r'   WfO2UiTapPkF/FSn)rQ   r)   r^   )0123456789abcder   Zal1e0XFIugTYLai3)ra   r   lYbwBu.f82OIApQB)ra   r   rc   )ra   r   rc   )ra   r!   rc   )ra   r"   rc   )ra   r#   rc   )ra   r$   KgKx1UQvdR/09i9u)ra   r&   rj   )ra   r'   qLopkenJ4WBqxaZN)ra   r)   rm   )r   r   r   )r   r   r   )r   r   r   )r   r!   r   )r   r"   r   )r   r#   r   )r   r'   r   )r   r)   r   N)	r<   r=   r>   r   Z	cisco_pixr0   r   rB   known_correct_hashesr5   r5   r5   r6   r      sT   c                A   @   s   e Zd ZejZejddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@g@ ZdAS )Br   rC   )rF   FRV9JG18UBEgX0.O)rH   NIwkusG9hmmMy6ZQ)rJ   ZNmrkP98nT7RAeKZz)rK   rx   )rL   ry   )rM   8Q/FZeam5ai1A47p)rO   rz   rP   )rR   yxGoujXKPduTVaYB)rT   W0jckhnhjnr/DiT/)rV   HuVOxfMQNahaoF8u)rW   r{   )rX   r|   )rY   r}   )rZ   RtOmSeoCs4AUdZqZ)r\   r~   )r]   rrucwrcM0h25pr.m)r_   r   r`   )rb   nAZrQoHaL.fgrIqt)rd   2GxIQ6ICE795587X)re   QmDsGwCRBbtGEKqM)rf   r   )rg   r   )rh   r   )ri   Aj2aP0d.nk62wl4m)rk   r   )rl   etxiXfo.bINJcXI7)rn   r   ro   )rp   GhI8.yFSC5lwoafg)rq   KFBI6cNQauyY6h/G)rr   ZGhdi1IlsswgYzzMH)rs   r   )rt   r   )ru   IneB.wc9sfRzLPoh)rv   r   ))0123456789abcdefqr   zbKshl.EN.X3CVFRQ))r   r   JAeTXHs0n30svlaG))r   r   4fKSSUBHT1ChGqHp))r   r!   zUSEJbxI6.VY4ecBP))r   r"   r   ))r   r#   r   ))r   r'   /dwqyD7nGdwSrDwk))r   r)   r   ))0123456789abcdefqwertyuiopar   z4wp19zS3OCe.2jt5))r   r   PjUoGqWBKPyV9qOe))r   r   bfCy6xFAe5O/gzvM))r   r!   zrd/ZMuGTJFIb2BNG))r   r"   r   ))r   r#   r   ))r   r'   zynfWw3UtszxLMgL))r   r)   r   ))0123456789abcdefqwertyuiopasr   W6nbOddI0SutTK7m))r   r   r   ))r   r   r   ))r   r'   r   ))r   r)   r   )) 0123456789abcdefqwertyuiopasdfghr   5hPT/iC6DnoBxo6a))r   r   r   ))r   r   r   ))r   r'   r   ))r   r)   r   N)	r<   r=   r>   r   Z	cisco_asar0   r   rB   rw   r5   r5   r5   r6   r     s   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 Z04480E051A33490E)zIts time to go to lunch!Z2153B1F1F443E22292D73212D5300194315591954465A0D0B59)zt35t:pa55w0rdZ08351F1B1D431516475E1B54382F)zhiImTesting:)Z020E0D7206320A325847071E5F5E)cisco123Z060506324F41584B56)r   Z1511021F07257A767B)zSupe&8ZUbeRp4SSZ 06351A3149085123301517391C5019180958EDC8A9F495F6F8A5FDZ0A480E051A33490EZ
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)	Zpasslib.utilsr   r   r0   rw   assertEqualrA   r:   UnicodeDecodeError)r4   r   r   r0   r1   r   ZusecretZbsecretr5   r5   r6   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 5 Q R X | |dd
jd dS )ztest salt value border casesN)saltT)r   r/   abcid   zsalt/offset must be.*)r   Zrelaxedr.   4   )r0   r:   	TypeError
ValueErrorZusingZassertWarningListr   r   )r4   r0   subclsr5   r5   r6   test_91_salt  s    zcisco_type7_test.test_91_saltN)r<   r=   r>   r   Zcisco_type7r0   Z	salt_bitsintZ	salt_typer   rw   Zknown_unidentified_hashesr   r   r5   r5   r5   r6   r   r  s"   +	)r?   Z
__future__r   r   r   ZloggingZ	getLoggerr<   logZpasslibr   r   Zpasslib.utils.compatr   Zutilsr	   r
   r   Ztest_handlersr   __all__r   r   r   r   r5   r5   r5   r6   <module>   s    
	 )Ej