ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ Bd\Rc@sdZddlTddlmZddlmZmZddlmZddl Tde fdYZ dZ d d Zd d d YZd S(s$Id$i(t*(tnumber(t bytes_to_longt long_to_bytes(tSHAterrorcBseZRS((t__name__t __module__(((sH/opt/alt/python27/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyR$scCs/|d}tj|j}tjtt|dj}td}xutddD]d}t||t||A}|dkr|dB}n|dkr|dB}n|d|}qbWxt|s|d}qWt dd|kot dd knr||fSt d dS( NiiiiiiillsBad q value generated( RtnewtdigestRRtbignumtrangetbordtisPrimetpowt RuntimeError(trandfunctSthash1thash2tqtitc((sH/opt/alt/python27/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyt generateQ's  %     . cCs|dkrtdnt}|r7|dnxt|\}|_t|ddd}ddi}}}|jd?d@} ttd| } ttd|d} x|d krxNtd|dD]9} tt j |t |t | j || || } q>W| | }||d|jd}| |krt |rPn|d||d}}qW|d krPn|r:|d q:q:W||_t|d|jd}|r|d nx`t|||d}t|||}d|ko]|dknr|dkrPqqW||_|r|dnx9t|d}d|ko|jknrPqqW|t||||_|_|S(sgenerate(bits:int, randfunc:callable, progress_func:callable) Generate a DSA key of length 'bits', using 'randfunc' to get random data and 'progress_func', if present, to display the progress of the key generation. isKey length < 160 bitssp,q iiiiiiils4096 multiples failed sh,g sx,y i(t ValueErrortDSAobjRRtdivmodRR R RRRtbstrR R tptgtxty(tbitsRt progress_functobjRtntCtNtVtbtpowbtpowL1tktWtXRtpowerthRR((sH/opt/alt/python27/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyt generate_py9sZ   7    ,  RcBseZRS((RR(((sH/opt/alt/python27/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyRqsN((t __revision__tCrypto.PublicKey.pubkeyt Crypto.UtilRtCrypto.Util.numberRRt Crypto.HashRtCrypto.Util.py3compatt ExceptionRRtNoneR/R(((sH/opt/alt/python27/lib64/python2.7/site-packages/Crypto/PublicKey/_DSA.pyts    8