
    gO                         S r SSKJrJrJr  SSKr\R                  " \5      rSSK	J
r
Jr  SSKJr  SSKJrJrJr  SSKJr  / S	Qr " S
 S\\5      r " S S\5      r " S S\5      r " S S\5      rg)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                      \ rS rSrSrSrSr/ SPSPSPSPS	PS
PSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSP\S4PSPSPSPSPS PS!PS"PS#PS$PS%PS&PS'PS(PS)PS*PS+PS,PS-PS.PS/PS0P\" S15      R                  S25      S34S44P\" S15      R                  S25      R                  S55      R                  S25      S34S64PrS7 rS8rg9):_PixAsaSharedTest   z+
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))r8   3.z0dT9Alkdc7EIGS))r8   36CC3Lam53t/mHhoE7))r8   3658xPrWpNnBdD2DzdZ))r8   3333r;   ))r8   3636r=   ))r8   3653r?   ))r8   admdfWs2qiao6KD/P2L))r8   admarD   ))r8   admadrD   ))r8   userPNZ4ycbbZ0jp1.j1))r8   user1234rH   ))0123456789abr   S31BxZOGlAigndcJ))rJ   r<   wFqSX91X5.YaRKsi))rJ   r>   qjgo3kNgTVxExbno))rJ   r@   zmcXPL/vIZcIxLUQs))rJ   rA   rL   ))rJ   rB   rM   ))rJ   rG   f.T4BKdzdNkjxQl7))rJ   rI   rN   u   táblezutf-8rG   Og8fB4NyF0m5Ed9czlatin-1zcMvFC2XVBmK/68yBc                   ^  SU 4S jjn[        ST R                  R                  5      nU" U5      nUS-   nU" U5      nT R                  XS5        US-   nU" U5      nT R                  Xs5        T R                  Xu5        U" USS9  T R	                  [
        R                  XSS9  T R	                  [
        R                  XSS9  g)	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                 @   > TR                  US9R                  U 5      $ )Nuse_defaults)handler_calc_checksum)secretfor_hashselfs     Z/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/tests/test_handlers_cisco.pycalc8_PixAsaSharedTest.test_calc_digest_spoiler.<locals>.calc   s    <<X<6EEfMM    r6   XYT)rW   N)F)r   rT   truncate_sizeassertNotEqualassertRaisesr   PasswordSizeError)rX   rZ   short_secret
short_hashlong_secret	long_hashalt_long_secretalt_long_hashs   `       rY   test_calc_digest_spoiler*_PixAsaSharedTest.test_calc_digest_spoiler   s    	N %VT\\-G-GH,'
 #S(%	I2 ',_-M6M5 	\D)#//TR#//QUVr\    N)__name__
__module____qualname____firstlineno____doc__ _PixAsaSharedTest__unittest_skiprequires_userr   r   encodedecodepix_asa_shared_hashesri   __static_attributes__rk   r\   rY   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
@
@
I

%	'oy
vWr\   r   c                   N    \ rS rSr\R
                  r\R                  / SQ-   r	Sr
g)r      )')0123456789abcr   eacOpB7vE7ZDukSF))rz   r:   ylJTd/qei66WZe3w)rz   r<   hDx8QRlUhwd6bU8N)rz   r>   vYOOtnkh1HXcMrM7)rz   r@   r|   )rz   rA   r~   )rz   rB   r   )rz   rG   f4/.SALxqDo59mfV)rz   rI   r   )0123456789abcdr   6r8888iMxEoPdLp4)r   r:   f5lvmqWYj9gJqkIH)r   r<   OJJ1Khg5HeAYBH1c)r   r>   r   )r   r@   r   )r   rA   r   )r   rB   r   )r   rC   DbPLCFIkHc2SiyDk)r   rE   r   )r   rG   WfO2UiTapPkF/FSn)r   rI   r   )0123456789abcder   al1e0XFIugTYLai3)r   r:   lYbwBu.f82OIApQB)r   r<   r   )r   r>   r   )r   r@   r   )r   rA   r   )r   rB   r   )r   rC   KgKx1UQvdR/09i9u)r   rE   r   )r   rG   qLopkenJ4WBqxaZN)r   rI   r   )r.   r   r/   )r.   r<   r/   )r.   r>   r/   )r.   r@   r/   )r.   rA   r/   )r.   rB   r/   )r.   rG   r/   )r.   rI   r/   rk   N)rl   rm   rn   ro   r   	cisco_pixrT   r   ru   known_correct_hashesrv   rk   r\   rY   r   r      s$    nnG -BB ;F ;r\   r   c                   N    \ rS rSr\R
                  r\R                  / SQ-   r	Sr
g)r   i  )@ry   )r}   FRV9JG18UBEgX0.O)r   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   rA   r   ))r   rB   r   ))r   rG   /dwqyD7nGdwSrDwk))r   rI   r   ))0123456789abcdefqwertyuiopar   z4wp19zS3OCe.2jt5))r   r<   PjUoGqWBKPyV9qOe))r   r>   bfCy6xFAe5O/gzvM))r   r@   zrd/ZMuGTJFIb2BNG))r   rA   r   ))r   rB   r   ))r   rG   zynfWw3UtszxLMgL))r   rI   r   ))0123456789abcdefqwertyuiopasr   W6nbOddI0SutTK7m))r   r<   r   ))r   r>   r   ))r   rG   r   ))r   rI   r   )) 0123456789abcdefqwertyuiopasdfghr   5hPT/iC6DnoBxo6a))r   r<   r   ))r   r>   r   ))r   rG   r   ))r   rI   r   rk   N)rl   rm   rn   ro   r   	cisco_asarT   r   ru   r   rv   rk   r\   rY   r   r     s$    nnG,BB aF ar\   r   c            	       `    \ rS rSr\R
                  rSr\r	SSSSSSS	\
S
4/rSS/rS rS rSrg)r   ir     )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                 @   SSK JnJn  U R                  nU R                   HX  u  pEU" U5      nU" U5      nU R                  UR                  U5      U5        U R                  UR                  US5      U5        MZ     U R                  [        UR                  SS5        g)ztest cisco_type7.decode()r   )
to_unicodeto_bytesNr   ascii)	passlib.utilsr   r   rT   r   assertEqualrt   ra   UnicodeDecodeError)rX   r   r   rT   rV   r   usecretbsecrets           rY   test_90_decodecisco_type7_test.test_90_decode  s    6,, 55LF (Gv&GW^^D17;W^^D$7A	 6 	,gnn2G	=r\   c                 B   U R                   nU R                  [        USS9  U" SSS9  U R                  [        USS9  U R                  [        USS9  U R                  [        USS9  U R                  [        UR                  SS9  U R                  [        UR                  SS9  U R                  [        UR                  SS9  U R                  S5         UR	                  SSS	9nSSS5        U R                  W" SS
9R                  S5        g! , (       d  f       N/= f)ztest salt value border casesN)saltT)r   rS   abcid   zsalt/offset must be.*)r   relaxedrR   4   )rT   ra   	TypeError
ValueErrorusingassertWarningListr   r   )rX   rT   subclss      rY   test_91_saltcisco_type7_test.test_91_salt  s    ,,)W48T-)W59*gC8*gC8)W]]?*gmm#>*gmm#>##$;<]]T]:F =T277< =<s   D
Drk   N)rl   rm   rn   ro   r   cisco_type7rT   	salt_bitsint	salt_typer   r   known_unidentified_hashesr   r   rv   rk   r\   rY   r   r   r  sj    GII 	(
	? 	:
 	:
 	+*
 	@ 
./M'V 	 	!==r\   r   )rp   
__future__r   r   r   logging	getLoggerrl   logpasslibr   r   passlib.utils.compatr   utilsr
   r   r   test_handlersr   __all__r   r   r   r   rk   r\   rY   <module>r     s~    A @ !  " ? ? &cW(+ cWP?& ?Jd& dTS={ S=r\   