
    XR_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     C/usr/lib/python3/dist-packages/passlib/tests/test_handlers_cisco.pycalcz8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calc   s%    <<X<66EEf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 %VT\-GHHT,''
 #S(D%%	Iz222 ',_--M:666M9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 	71y
2 	)3y
4 	65y
> 	7?y
H 	/Iy
J 	6Ky
T 	&Uy
V 	&Wy
X 	&Yy
Z 	&[y
\ 	)]y
^ 	1_y
h 	7iy
j 	2ky
t 	3uy
z 
(){y
f 	+gy
l 	/my
n 	0oy
p 	1qy
r 	2sy
t 	3uy
v 	3wy
x 	3yy
z 	2{y
| 	3}y
~ 	4y
@ 	3Ay
B 	7Cy
H 	3Iy
J 	5Ky
L 	6My
N 	7Oy
P 	7Qy
R 	7Sy
T 	7Uy
V 	;Wy
l !J--

w
'
'	02DEm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        nG -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;        nG,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LFD j((Ghv&&GW^^D117;;;W^^D$77AAAA,gn2G	= 	= 	= 	= 	=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   abcid   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   ,)W4888T----)W5999*gC888*gC888)W]???*gm#>>>*gm#>>>##$;<< 	; 	;]]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   