Viewing File: /usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyo



5Xc@sXdZddlZddlmZdgZeaadZde	fdYZ
dS(sGpasslib.crypto._blowfish.base - unoptimized pure-python blowfish engineiN(t
repeat_stringtBlowfishEnginecCsRddddddddd	d
ddd
dddddgadddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
dddddgdddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
dddddgdddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
dddddgdddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
dddddggadS(Nij?$Ii.iDspI"8	i1)i.IlNi!(Eiw8IfTil4I)IP|iՄ?I	GIIyI1Iߘir/IIi~&jIE|I,iG$IliIi iciiNWqIXI~=it
iXriX͋qIJiT{IYZI90i`*I#i`(IyAI8۸Iyi:`ilI>IwI'K1i/xi`\`UI%UIUibHWi@cij9Ui*I4\̴iAITir|Ii*oci]ũ+i1tI>\II3֯i\$liS2ziw(iH;iKkIi!(fi	aI!i`|Hi2]I]]IuI#&Iei>#IŬiomI9BiD.I iJiI^iBh!IliagIӫiҠQjIh/TI(I3Qilni;zIP;i*~Ieiv9i>YfICIioEiå}i^;IuoIs iD@ijVibNiw?6iri=Bi$7IH
IiIirSI{iy%IIPI;LyIliIOi`@iž\^ic$jiohiSl>i9ioR;iQmI,0IDEI	^IIJ3i(fiK.IWitEI9_IӹiyUi
2`Iiyr,@i%gỊI饎I"2iu<IkaiP/IRi=2I`#iH{1Si>IW\Ioi.VIiIBi~(I2gIsUOi'[iIXʻI]Ii=I!ilJi[-IySIeEIIiKII3~ˤiAbII iLw6I~i+IMەIIqiՓkIюI%ǯI/[<IuIId+II
i^OiÏhIIi"//IwI-uII̠ItoiIIOIi;|I٨if_IwIs̓iw!Ie iwIBTI5Ii>{IAII~i-%i^q ih"iWi6d$I	icUiYiCxISZi[} iŹIv&iϕbihiAJsNI-GiJ{iRQI)SI?WIƛiv`+ItioiWIki
*I!ecII.4IdVi]-SIiGijnipzKID)I.	uI#&Ini}ߧII`IfIqiiilRdVIឱi6i)L	uI@YI>:iT?ieB[ikI?IҡI0i8-MI]%i LI&pici^i?kh	i>i<ipjki5hiRISI7Pi>i\ID}iWI7:I
PIiIit<iXz%I!	Ii/|IsG2iG"i:i7I4vIIFaDiI>IAuI8i/;i2i1>i8TNimOi
BoI
i,iy|$iryVIIwIII.?irUi$qk.iPḮiGXzitII}KI:zIifC	cIdIGi2I7;Ci$iCMiQe*iPi:iqiUN1Iwi_iV5Ikǣi;<i	$YIII,in<IpEIoI
^i*>Ziwi=Nie)II։>i%fRixL.IjIIxIS<i-
INi=+6i&9i`yi#RIInIfIEI{I7i(I2IZli!XeihII;/i}*i/n[i(!ipa)IuGiai0Iai4IcI\si9pLIIުIi,b`I\InidiIi#iPZei2Zh@i*<i1I!ITI_I~i}=bI7Iw-i_ihi)5IIޖiXxiWicr"IÃiFI
iT0.SIHُi(1miXi4Ia(Is<|iJ]Idi]Bi> iEIꫪIOlIOIBBIji;Oei!AIyIMIjGKiPb=IbiF&[IIi$itiiGiVi[	IHitbi#i*BXiUi>iap?#ir3IA~I_i;"liY7|I`ti@In2wIiPIUi5aIiIiZII.zDI4EIgiɞIsi͈Uiy_gI@CgIe4i8>qi(=I mi!>IJ=I+IIhZ=I@I&LI4)ii AivI.kIhIq$ij 3iԷCiaPi.9IFE$itO!I@iMIipiE/fI	iimi1I'iA9UIG%I
ʫi%xP(i)Siچ,
ImibhIiHihi'i?OIIizI|ΪI_7IxiB*k@i5 II9iN;iiVmKi1f&Iitn:I2C[iAhI xIN
IiV@EI'Hi::SUi IkIKigUIXIc)I3IVJ*i%1?i~^I|1)Iip/'I\i,(IHI"mi?HI܆iiAiyG@in]iQ_2IIid5Ai4x{%i`*`Iilci´i2IOfIi#ki>3ib$;I"II
Iri(-IExIib}dIioITIH}I'I>iAcG
It.ino:I7I`IILI
knIU{i7,gmi;e'II
)II9iii{fI}IϑI^I/i$[Qiy{i;vi.97IyYI&I-1.iBhI;+jiLui.xi7BjIQi满iPcKikiiؽ%=IiYBDi
InI*iNgdI_I鿾idIWIi{x`iM``IFI8iEwI6I3kBIqIAi_^<iWwI$iBFUIa.XiXNII8tI½ifSItIUuiFia&zIIyjI_iYnFipW IUՌILIIiHbituII	ܩi	-fI3F2IZi	i%Jini=iߤIiih(Iڷi9WIiROi^PIIĵi'
I'iA?wIL`iaI(zIiX`ib}0iמic8#iSI4IV˻I޶I}IvYi	oi|Ki=
r9i$||I_riMri[IIxUTiI|=iMi^PIaIi<QlioiNViο*6I7I42Icigi`@i79:II7w«i-Zig\iB7OI@'IIIsI~-I{IkiE!Inin6ji/HWIynIviIeiSi}ލFI
siMLiۻ9)IPFI&I^IiQ-jicI"I‰i.$CIIIaIMjIPI[di&(I::iKIbUI/IRiio?iY
wIII	i>;IZI4iٷ,iQ+I:Ֆi}}I>i(-}|i%IirZiLZIq)IiGIIiW;(I)fi(.yi_xIU`uIDI^imImi%aidIiW<I'I*:im?i!cIfi&i(3uIUi4VI<iwQ(I
IgQ̫I_iQMi08ibX7I IzI{>id!Qi2OwI~㶨IF=)iiSHidII$mi-iif!	I
FiEdilXi i[i@XIikI~jiEY:iD
5>IʹirIdIfIGo<Ici]/TIw®IpcNi
tIW[IqrI]}Si@@iNijF4iI(I:iIHni;?oi 5iKi'r'i`aI?I+y:i%E4I9iKyQi2/IɺI~IǼIIǪiIIOII8
i*9Ig6I|1IO+IYi:CIiE'I,"i*iqI%IaI뜶IYdiѨI^IjiePIBIni;ۘiLidx2I2IߒI+4IqiAt
i4KI qI2vI5I./IGoiITLiIybIo~>ifI,IҏI"IW#I#v2I15iVIbiuZi6nIs҈IbIIiPLiVqIi
z2iEI{ISibI%iҽ5iiqI"I|˶I+vi>Si@i`8iG%I 8IvFišwi``u IN˅I؍izi~Li\HiijIIiԐI\i-%	?II2aNI[wiߏWir:(t
BLOWFISH_Pt
BLOWFISH_S(((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyt_init_constantss
cBsPeZdZeddZdZdZdZdZdZ	RS(cCsKtdkrtntt|_gtD]}t|^q,|_dS(N(RtNoneRtlisttPRtS(tselftbox((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyt__init__7s
icCsGt|}|sdg|St||d>}tjd|f|S(swconvert data to tuple of <size> 4-byte integers, repeating or
        truncating data as needed to reach specified sizeiis>%dI(tlenRtstructtunpack(tdatatsizetdlen((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pytkey_to_words@s
cCs|j|j}}||dN}d}x|dkr|d|d?|d|d?d@|d|d?d@A|d	|d@d
@||A|A}||}}|d7}q*W||dA|fS(s)loop version of blowfish encipher routineiiiiiiiiiI(RR(R	tltrRRti((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pytencipherTsZ
c	Cs
|j|j|j}}}d}x.|dkrS||c||N<|d7}q&Wd}}}xE|dkr|||\||<||d<\}}|d7}qeWx\|D]T}d}xE|dkr|||\||<||d<\}}|d7}qWqWdS(s(perform stock Blowfish keyschedule setupiiiiiN(RRR(	R	t	key_wordsRRRRRRR
((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pytexpandds+
+cCst|}|j|j|j}}}d}x.|dkr_||c||N<|d7}q2Wd}}}	}
x|dkr|	||N}	|
||dN}
|d7}||krd}n||	|
\||<||d<\}	}
|d7}quWx|D]}d}x|dkr|	||N}	|
||dN}
|d7}||krZd}n||	|
\||<||d<\}	}
|d7}qWqWdS(s9perform EKS' salted version of Blowfish keyschedule setupiiiiiN(RRRR(R	Rt
salt_wordst	salt_sizeRRRRtsRRR
((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyteks_salted_expand|s2
	+

	+cCsD|j}d}x.||kr?|||||d7}qWdS(s-perform rounds stage of EKS keyschedule setupiiN(R(R	RRtroundsRtn((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyteks_repeated_expands	

cCsK|j}d}x/||kr@|||\}}|d7}qW||fS(s.repeatedly apply encipher operation to a blockii(R(R	RRtcountRR((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pytrepeat_enciphers	(
t__name__t
__module__RtstaticmethodRRRRRR!(((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyR5s					%		(t__doc__R
t
passlib.utilsRt__all__RRRRtobjectR(((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyt<module>s	
	#
Back to Directory File Manager