a fWcO@sdZddlmZmZmZddlZeeZddl m Z m Z ddl m Z ddlmZmZmZddlmZgd ZGd d d eeZGd d d eZGdddeZGdddeZdS)zI passlib.tests.test_handlers_cisco - tests for Cisco-specific algorithms )absolute_importdivisionprint_functionN)hashexc)u)UserHandlerMixin HandlerCase repeat_string) UPASS_TABLE)cisco_pix_testcisco_asa_testcisco_type7_testc1@seZdZdZdZdZdddddd d d d d dddddddddddddedfdddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/ed0d1d2fd3fed0d1 d4d1d2fd5fg/Z d6d7Z d8S)9_PixAsaSharedTestz3 class w/ shared info for PIX & ASA tests. TF))ciscoz2KFQnbNIdI.2KYOU))ZhscrzYtT8/k6Np8F1yz2c))rrZ8Ry2YjIyt7RRXU24))rZjohnZhN7LzeyYjw12FSIU))rZjackz7DrfeZ7cyOj/PslD))ZripperZalexzh3mJrcH0901pqX/m))rr3USUcOPFUiMCO4Jk))rcisco1r))z CscFw-ITC!ZadmcomzlZt7HSIXw3.QP7.R)cangetinTynyB./ftknE77QP))rZrramseyZjgBZqYtsWfGcUKDi))Z phonehomeZrharrisZzyIIMSYjiPm0L7a6))rrr)Ztest1zTRPEas6f/aa6JSPL)Ztest2ZOMT6mXmAvGyzrCtp)Ztest3ZgTC7RIy1XJzagmLm)Ztest4zoWC1WRwqlBlbpf/O)passwordzNuLKvvWGg.x9HEKO)0123456789abcdef.7nfVBEIEu4KbF/1))Z1234567890123456rZfeCkwUGktTCAgIbD))Z watag00s1amrZjMorNbK0514fadBh))rrZjmINXNH6p1BxUpppZCaiIvkLMu2TOHXGT))1234rZRLPMUQ26KL4blgFN))01234567rZ0T52THgnYdV1tlOF))r3.z0dT9Alkdc7EIGS))r36CC3Lam53t/mHhoE7))r3658xPrWpNnBdD2DzdZ))r3333r))r3636r))r3653r!))radmdfWs2qiao6KD/P2L))radmar&))rZadmadr&))ruserPNZ4ycbbZ0jp1.j1))ruser1234r))) 0123456789abrZS31BxZOGlAigndcJ))r+rwFqSX91X5.YaRKsi))r+r qjgo3kNgTVxExbno))r+r"zmcXPL/vIZcIxLUQs))r+r#r,))r+r$r-))r+r(f.T4BKdzdNkjxQl7))r+r*r.utáblezutf-8r(ZOg8fB4NyF0m5Ed9czlatin-1zcMvFC2XVBmK/68yBcsd fdd }tdjj}||}|d}||}|||d}||}||||||ddjtj||ddjtj||ddd 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``. Fcsj|d|S)N use_defaults)handlerZ_calc_checksum)secretfor_hashselfE/usr/lib/python3.9/site-packages/passlib/tests/test_handlers_cisco.pycalcsz8_PixAsaSharedTest.test_calc_digest_spoiler..calcrXYT)r3N)F)r r1Z truncate_sizeZassertNotEqual assertRaisesrZPasswordSizeError)r5r8Z short_secretZ short_hashZ long_secretZ long_hashZalt_long_secretZ alt_long_hashr6r4r7test_calc_digest_spoilers    z*_PixAsaSharedTest.test_calc_digest_spoilerN) __name__ __module__ __qualname____doc__Z _PixAsaSharedTest__unittest_skipZ requires_userr rencodedecodepix_asa_shared_hashesr<r6r6r6r7rsp {rc@s eZdZejZejgdZdS)r )') 0123456789abcrZeacOpB7vE7ZDukSF))rErylJTd/qei66WZe3w)rErhDx8QRlUhwd6bU8N)rEr vYOOtnkh1HXcMrM7)rEr"rF)rEr#rH)rEr$rJ)rEr(f4/.SALxqDo59mfV)rEr*rO)0123456789abcdrZ6r8888iMxEoPdLp4)rRrf5lvmqWYj9gJqkIH)rRrOJJ1Khg5HeAYBH1c)rRr rV)rRr"rT)rRr#rV)rRr$rV)rRr%DbPLCFIkHc2SiyDk)rRr'r\)rRr(WfO2UiTapPkF/FSn)rRr*r_)0123456789abcderZal1e0XFIugTYLai3)rbrlYbwBu.f82OIApQB)rbrrd)rbr rd)rbr"rd)rbr#rd)rbr$rd)rbr%KgKx1UQvdR/09i9u)rbr'rk)rbr(qLopkenJ4WBqxaZN)rbr*rn)rrr)rrr)rr r)rr"r)rr#r)rr$r)rr(r)rr*rN) r=r>r?rZ cisco_pixr1rrCknown_correct_hashesr6r6r6r7r sr c@s eZdZejZejgdZdS)r)@rD)rGFRV9JG18UBEgX0.O)rINIwkusG9hmmMy6ZQ)rKZNmrkP98nT7RAeKZz)rLry)rMrz)rN8Q/FZeam5ai1A47p)rPr{rQ)rSyxGoujXKPduTVaYB)rUW0jckhnhjnr/DiT/)rWHuVOxfMQNahaoF8u)rXr|)rYr})rZr~)r[RtOmSeoCs4AUdZqZ)r]r)r^rrucwrcM0h25pr.m)r`rra)rcnAZrQoHaL.fgrIqt)re2GxIQ6ICE795587X)rfQmDsGwCRBbtGEKqM)rgr)rhr)rir)rjAj2aP0d.nk62wl4m)rlr)rmetxiXfo.bINJcXI7)rorrp)rqGhI8.yFSC5lwoafg)rrKFBI6cNQauyY6h/G)rsZGhdi1IlsswgYzzMH)rtr)rur)rvIneB.wc9sfRzLPoh)rwr))0123456789abcdefqrzbKshl.EN.X3CVFRQ))rrJAeTXHs0n30svlaG))rr 4fKSSUBHT1ChGqHp))rr"zUSEJbxI6.VY4ecBP))rr#r))rr$r))rr(/dwqyD7nGdwSrDwk))rr*r))0123456789abcdefqwertyuioparz4wp19zS3OCe.2jt5))rrPjUoGqWBKPyV9qOe))rr bfCy6xFAe5O/gzvM))rr"zrd/ZMuGTJFIb2BNG))rr#r))rr$r))rr(zynfWw3UtszxLMgL))rr*r))0123456789abcdefqwertyuiopasrW6nbOddI0SutTK7m))rrr))rr r))rr(r))rr*r)) 0123456789abcdefqwertyuiopasdfghr5hPT/iC6DnoBxo6a))rrr))rr r))rr(r))rr*rN) r=r>r?rZ cisco_asar1rrCrxr6r6r6r7rsrc @sJeZdZejZdZeZddddddde d fgZ d d gZ d d Z ddZ dS)r)zsecure Z04480E051A33490E)zIts time to go to lunch!Z2153B1F1F443E22292D73212D5300194315591954465A0D0B59)z t35t:pa55w0rdZ08351F1B1D431516475E1B54382F)z hiImTesting:)Z020E0D7206320A325847071E5F5E)cisco123Z060506324F41584B56)rZ1511021F07257A767B)zSupe&8ZUbeRp4SSZ 06351A3149085123301517391C5019180958EDC8A9F495F6F8A5FDZ0A480E051A33490EZ 99400E4812cCsrddlm}m}|j}|jD]>\}}||}||}|||||||d|q|t|jdddS)ztest cisco_type7.decode()r) to_unicodeto_bytesNrascii) Z passlib.utilsrrr1rx assertEqualrBr;UnicodeDecodeError)r5rrr1r2rZusecretZbsecretr6r6r7test_90_decodes zcisco_type7_test.test_90_decodecCs|j}|jt|dd|ddd|jt|dd|jt|dd|jt|dd|jt|jdd|jt|jdd|jt|jdd|d|jddd }Wdn1s0Y||dd jd dS) ztest salt value border casesN)saltT)rr0abcidzsalt/offset must be.*)rZrelaxedr/4)r1r; TypeError ValueErrorZusingZassertWarningListrr)r5r1subclsr6r6r7 test_91_salts  ,zcisco_type7_test.test_91_saltN)r=r>r?rZ cisco_type7r1Z salt_bitsintZ salt_typer rxZknown_unidentified_hashesrrr6r6r6r7rrs"+ r)r@Z __future__rrrZloggingZ getLoggerr=logZpasslibrrZpasslib.utils.compatrZutilsr r r Z test_handlersr __all__rr rrr6r6r6r7s    )Ej