ó «©\Tc@sfdZdZdZddlZddlZdd„Zd„Zd„Zd „Zd „Z d „Z d „Z ee e e gZ d dddgZ ddd„ƒYZdZdZdZdd„ZedkrbdZdeƒjƒksīt‚deeƒjƒks t‚deedƒjƒks.t‚eeƒZejeƒdejƒksbt‚ndS(séA sample implementation of SHA-1 in pure Python. Framework adapted from Dinu Gherman's MD5 implementation by J. HallĆ©n and L. Creighton. SHA-1 implementation based directly on the text of the NIST standard FIPS PUB 180-1. s 2004-11-17g…ėQøķ?i’’’’NicCsÉd}tj}x1|dkrB|d|d@ƒ|}|d?}qWx:tt|ƒƒD]}||dkrVPqVqVWd}d}||}|dkrÅt|ƒ|rÅ|t|ƒ|d|}n|S(sŅConvert a long integer to a byte string. If optional blocksize is given and greater than zero, pad the front of the byte string with binary zeros so that the length is a multiple of blocksize. tis>II’’’’i t(tstructtpacktrangetlen(tnt blocksizetsRti((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyt_long2bytesBigEndians   c CsĀt|ƒd}dg|}d}d}x’||kr½t||ƒd>}t||dƒd>}t||dƒd>}t||dƒ}||B|B|B||<|d}|d}q,W|S( s4Transform a list of characters into a list of longs.iiiiiiii(Rtord( tlisttimaxthltjR tb0tb1tb2tb3((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyt_bytelist2longBigEndian:s  cCs||>|d|?BS(s)Rotate x (32 bit) left n bits circularly.i ((txR((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyt _rotateLeftNscCs||@||@BS(N((tBtCtD((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pytf0_19YscCs ||A|AS(N((RRR((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pytf20_39\scCs||@||@B||@BS(N((RRR((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pytf40_59_scCs ||A|AS(N((RRR((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pytf60_79bsi™y‚Zi”ėŁnIܼIÖĮbŹtshacBs]eZdZdZZdZd„Zd„Zd„Zd„Z d„Z d„Z d „Z RS( s:An implementation of the MD5 hash function in pure Python.iicCs/d|_ddg|_g|_|jƒdS(sInitialisation.iN(tlengthtcounttinputtinit(tself((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyt__init__vs  cCsCd|_g|_d|_d|_d|_d|_d|_dS(s9Initialize the message-digest and set all fields to zero.ii#EgI‰«ĶļIžÜŗ˜ivT2IšįŅĆN(RR!tH0tH1tH2tH3tH4(R#((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyR"…s      c Csęx]tddƒD]L}|jt||d||dA||dA||dAdƒd@ƒqW|j}|j}|j}|j}|j}xztdd ƒD]i}t|d ƒ||@||@B|||td}|}|}t|d ƒd@}|}|d@}qWxutd d ƒD]d}t|d ƒ||A|A|||td}|}|}t|d ƒd@}|}|d@}qWxtd d ƒD]p}t|d ƒ||@||@B||@B|||td}|}|}t|d ƒd@}|}|d@}q’Wxutd dƒD]d}t|d ƒ||A|A|||td}|}|}t|d ƒd@}|}|d@}qW|j|d@|_|j|d@|_|j|d@|_|j|d@|_|j|d@|_dS(NiiPiiiiI’’’’iiiii(i<i( RtappendRR%R&R'R(R)tK( R#tWtttARRRtEtTEMP((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyt _transform’sR A     4/;/cCsRt|ƒ}|jdd?d@}|jd|d>|jd<|jd|d>kro|jdd|jd:s( t__name__t __module__t__doc__t digest_sizet digestsizet block_sizeR$R"R1R6R:R=R>(((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyRps   B + 1 iicCs#tƒ}|r|j|ƒn|S(saReturn a new sha crypto object. If arg is present, the method call update(arg) is made. (RR6(targtcrypto((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pytnewQs t__main__sjust a test stringt(da39a3ee5e6b4b0d3255bfef95601890afd80709t(3f0cf2e3d9e5903e839417dfc47fed6bfa6457f6t(0852b254078fe3772568a4aba37b917f3d4066bait(8862c1b50967f39d3db6bdc2877d9ccebd3102e5((RBt__date__t __version__RR>R RRRRRRtfR+RRCRDRtNoneRHR@ta_strR=tAssertionErrorRR6(((sN/opt/freeware/lib/python2.7/site-packages/setuptools/_backport/hashlib/_sha.pyts8 "      Ż "