Current File : //usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyo
�
�
5Xc@sXdZddlZddlmZdgZeaad�Zde	fd��YZ
dS(sGpasslib.crypto._blowfish.base - unoptimized pure-python blowfish enginei����N(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~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dddddddddd	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~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dddddddddd	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~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dddddddddd	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~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dddddddddd	d
ddd
dddddggadS(Ni�j?$I���i.�iDspI"8	�i�1�)i��.I�lN�i�!(Eiw�8I�fT�il�4I�)��I�P|�i�Մ?I	G�I���I�y�I�1�I��ߘi�r�/I���I��i�~&jIE�|�I�,�iG��$I�l��i��I���i� iciiNWqI��X�I~=��i�t�
iX��riX͋qI�J�i�T{I�YZ�I9�0�i`�*I#���i�`(IyA�I�8۸I��y�i:`i��lI>��I�w�I'K1�i�/�xi`\`UI�%U�I��U�ib�HWi@�cij9�Ui��*I4\̴i��AI��T�i��r|I�i*�oci]ũ+i�1tI>\�I���I3�֯i\�$li�S2ziw��(i�H�;i��KkI��i�!(fi�	�aI��!�i`�|Hi2��]I]]��I�u��I#&�I�e�i�>�#IŬ��i�omI9B�i�D.I ��iJ��iI^��iBh�!I�l�ia�gI�ӫiҠQjIh/T�I(��I�3Q�il�ni�;zIP�;�i�*�~Ie�iv�9i>Y�fI�C�I��i��oEiå�}i�^�;I�uo�Is ��i�D@i�j�Vib��Niw?6ir�i=�Bi$��7IH
�I���i���Ii�rSI{��i�y�%I���IP��I;Ly�I��l�i��I�O��i�`�@iž\^ic$ji�o�hi�Sl>i�9io�R;iQ�mI,�0�IDE��I	�^�I��I�J3�i(fi�K.IW��it�EI9_�I�ӹi��yUi
2`I���iyr,@i�%�gỊ�I�饎I�"2�i�u<Ika�i�P/I�R�i��=2I`�#�iH{1Si��>I�W\�I��o�i.V�I�i�I��B�i�~(I�2g�IsUO�i�'[iI�XʻI]���I��i�=�I��!�il��Ji[��-Iy�S�IeE��I�I��i���KI����I3~ˤiA�bI����I�� �iLw6I��~�i��+IM�ەI����Iq���i�ՓkI�ю�I�%ǯI/[<�I��u�I��Id+�I���I�
�i�^�OiÏhI����I����i"//Iw�I�-u�I��I̠�I�to�i��I���I�O��I���i�;�|I٨��if�_Iw��Is̓iw!Ie ��i���wI�BT�I�5��I���i��>{I�A�II~�i-%i^�q i�h"i��Wi�6d$I�	�i�cUi���Yi�C�xISZ�i�[} iŹ�Iv&�i�ϕbih�iAJsNI�-G�iJ�{iRQI)S�I?W�I�ƛ�iv�`+It�i�o�i�WIk��i�
*I!ec�I����I.4�IdV��i]-�SI����i�G�ij�ni�pzKID)��I.	u�I#&�I��n�i}ߧII�`�If��Iq���i��iilRdVIឱ�i�6i)L	uI@Y�I>:�i��T?ie�B[i��kI�?��I�ҡI�0��i�8-MI�]%�i� �LI&�p�i��ci^�i?kh	i��>i�<i�pjki�5hi��RIS��I7P�i�>i\��I�D}�i��WI7�:�I
P�I�i��I��i�t�<iXz�%I�!	�I���i�/�|IsG2�iG�"i���:i���7I4v��I���IFaD�i�I>���IAu�I��8�i/�;i���2i1�>i8�TNi�mOi
BoI�
�i��,iy|�$ir�yVI����Iw��I��I���I.?��irUi$qk.i��PI�̈́�iGXzi�tI����I�}K�I:�z�I���ifC	cI��d�IG�i�2I7;C�i��$iCM�iQ�e*i�Pi��:i���qiUN1I�w��i�_i�V5Ikǣ�i;<i	�$YI���I���I,���in<IpE�I�o��I
^�i�*>Zi�wi�=Ni��e)I�I։>�i%�fRix�L.Ij��I��Ix��IS<��i�-
I�N��i=+6i&9i`y�i�#RI��In���If��I�E��I��{�I�7�i(��I��2�I�Zl�i�!Xei��hI���I;�/�i�}�*i�/n[i(�!ipa)IuG��i�ai0��I��a�i�4I�c�I�\s�i9�pLI���Iު�I����i�,b`I�\��In��i��di��I�i#�iP�Zei2Zh@i��*<i��1I��!�IT�I��_�I~���i�}=bI��7�Iw-�i_��i�hi)�5I���I��ޖi��Xxi���Wicr"I�Ã�i�F�I�
��iT0.SI�Hُi(1�mi���Xi��4Ia�(�Is<|�i�J]I�d�i]Bi�> i���EIꫪ�IOl�I�O�IB�B�I��j�i;Oei!�AI�y�I�M��IjGK�iPb�=I�b�iF&�[I����I���i�$i�t�ii��Gi���Vi�[	I�H�it�bi�#i*�BXi�Ui>�iap?#i��r3IA~��I��_�i�;"liY7�|I`t��i��@In2w�I���i�P�IU���i5��aI��i�I��i��ZI���I.zD�I�4E�Ig�iɞI��s�i͈Uiy�_gI@Cg�Ie4��i�8>qi��(=I �m�i�!>IJ=��I+���I����IhZ=�I�@��I&L�I4)i�i� Ai��vI.k�Ih��Iq$�ij� 3i�ԷCi�aPi.�9IFE$�itO!I@���i��MI����i���piE/�fI�	��i���i�m�i��1I�'�iA9�UI�G%�I�
ʫi%xP(i�)Siچ,
I�m��ib�hIiH�i��hi'i��?OI����I�i���zI|ΪI�_7�I��x�iB*k@i5�� I����I��9�i�N;i���iVmKi1f�&I����it�n:I2C[�i��AhI� x�IN�
�I����i�V@EI'�H�i::SUi��� I��k�IK���i�g�UIX��Ic)��I3��IVJ*�i�%1?i~�^I|1)�I�ip/'I\��i�,(IH��I"m��i?�HI܆�i��iAi�yG@in�]i�Q_2I���I����id5Ai4x{%i`�*`I���ilci´i�2�I�Of�I���i�#ki�>3ib$;I"���I���I�
��I�r�i(��-IEx�I����ib}dI���io�ITI�H}�I'���I�>�iAcG
It�.�i�no:I7���I`��I���IL��I
kn�IU{�i7,gmi;�e'I���I�
)�I���I�9�i�ii��{fI�}��Iϑ�I�^�I�/�i$�[Qi�y�{i��;vi�.97IyY�I��&�I-1.�i��BhI;+j�i�Lui�.xi7BjI�Q��i满iPc�Kiki���iؽ%=I����iYBDi�
In��I*��iNg�dI_���I�鿾i���dIW���I����i�{x`iM``IF���I�8�i�EwI�6�I3kB�Iq��I�A��i_^<i�W�wI$��i�BFUIa.X�i��XNI����I8�t�I½��i�fSIt���IU�u�i��Fia&�zI���Iyj�I�_�i�YnFipW� I�UՌIL��I��I���iHb�i��tuI��I	ܩ�i�	-fI3F2�IZ�i���	i%��Ji�ni=�iߤ�I�ii�h(I�ڷ�i�9WI���iR�Oi^PI���Iĵ�i'��
I'���iA�?wIL`�i��aI(z�I��i�X`ib}�0iמ�ic�8#i���SI4��IV�˻I޶��I�}��IvY�i	�oi�|Ki=
r9i$|�|I_r�i��Mri�[�I����IxUT�i���I�|=�i��Mi^�PI��a�I���i<Qli���oi�N�Viο*6I7���I42��I�c�i��gi�`@i7�9:I���I7w«i-�Zi�g�\iB7�OI@'��I����I���Is�I~-�I{��Ik��iE��!I��n�i�n6ji/�HWIyn��I�v��i��Iei�Si}ލFI
s�i�M�Liۻ9)IPF��I�&��I�^�I���i�Q-ji��cI"I�‰�i�.$CI��I���I�a��IMj�IP�I�[d�i��&(I�::�i���KI�bU�I��/�I�R�iio?iY
�wI��I���I��	�i��>;IZ���I��4�iٷ�,iQ�+I:�Ֆi}�}I�>��i(-}|i�%�I���ir��ZiL��ZIq�)�I��i���GI����I����i�W;(I)f�i(.yi�_xIU`u�ID��I�^��i�mI�m�i%a�i��dI���i�W�<I�'�I*:�i�m?i�!cI�f��i��&i(�3uI��U�i�4VI�<��iwQ(I��
�IgQ̫I_���iQ�Mi��08ibX�7I�� �Iz�I�{>�id�!Qi2�OwI~㶨IF=)�iiS�Hi��dI��I$�m�i�-�iif!	I
F��i�Edi��lXi�� i��[i@�XI��i��kI~j��iE�Y:iD
5>I�ʹ�i���rI��d�I�f�IGo<�Ic��i�]/TIw®IpcN�i�
tIW[�Iqr�I]}S�i�@@i��NijF�4i��I(��I:��i���IH�n�i�;?oi�� 5iKi�'r'i�`aI�?��I+y:�i�%E4I�9��iKy�Qi��2/Iɺ�I~��I��ǼI��IǪ�iI��I��O�I����I8�
�i*�9Ig6��I|1��IO+��I�Y��i:��CI���i�E�'I,"��i*��iq��I%��Ia��I뜶�IYd��iѨ�I^��Ij�ieP�IB��In��i;ۘi���Lid�x2I2��Iߒ��I+4��I�q�iAt
i�4�KI q��I�2v�I��5�I./��IGo�i��IT�L�i���I�yb�Io~>�if�I,�I�ҏ�I�"��IW�#�I#v2�I15��i��VIb��i��uZi�6nI�s҈I�b��I�I��i�PLiV�qI����i
z2i��EI�{��I�S��i�bI�%�i�ҽ5iiqI"�I|�˶I+�v�i�>Si��@i`��8i�G%I� 8�Iv�F�iš�wi``u IN�˅I؍�i���zi~��Li\�Hi���i�j�I����Ii�ԐI��\�i-%	?I���I2aN�I[�w�i�ߏWi�r�:(t
BLOWFISH_Pt
BLOWFISH_S(((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pyt_init_constantss
cBsPeZd�Zedd��Zd�Zd�Zd�Zd�Zd�Z	RS(cCsKtdkrt�ntt�|_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 routineiiiiii�iiiI����(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}q�Wq�WdS(s(perform stock Blowfish keyschedule setupiiiiiN(RRR(	R	t	key_wordsRRRRRRR
((sA/usr/lib/python2.7/site-packages/passlib/crypto/_blowfish/base.pytexpandds+
+cCs�t|�}|j|j|j}}}d}x.|dkr_||c||N<|d7}q2Wd}}}	}
x�|dkr�|	||N}	|
||dN}
|d7}||kr�d}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_expand�s	

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_encipher�s	(
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	
	�#