ÿØÿà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@sVdZddlmZdZddlZddlZddlZddlZddlZddl Z e j ddkre j ddkrddl Tnddl Tyddl Z Wnek rdZ nXddlZddlZd ejfd YZd Zd ejfd YZidZedkrRdZejddndS(s0Self-test suite for generic Crypto.Random stuff i(t nested_scopess$Id$Niii(t*t RNGForkTestcBseZdZdZRS(cCsBtjjj}|jjz|jjSWd|jjXdS(s Get `FortunaAccumulator.reseed_count`, the global count of the number of times that the PRNG has been reseeded. N( tCryptotRandomt_UserFriendlyRNGt_get_singletont_locktacquiret_fat reseed_counttrelease(tselft rng_singleton((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt_get_reseed_count2s  c CstjjdrdStjd|j}tjjj j tjj d|j}|j ||g}xt dD]}tj\}}tjdkrtj|tj|d}tjjtjj d}|j||jtjdntj||jtj|dqWg} i} xD|D]<}tj|j}| j|d| |<|jqPWt| t| jkrtd tj| ndS( Ntwing333333?ii itwbitrbs'RNG output duplicated across fork(): %s(tsystplatformt startswithttimetsleepRRRRRtreinittget_random_bytestassertNotEqualtrangetostpipetforktclosetfdopentatforktwritet_exittappendtbinasciithexlifytreadtlentkeystAssertionErrortpprinttpformat( R treseed_count_beforetreseed_count_aftertrfilestitrfdtwfdtftdatatresultst results_dict((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pytrunTest>s>           (t__name__t __module__RR6(((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyR0s cCsntjjd}tjdtjjd}|jtj||jtj||jddS(Nig?( RRRRRtputR$tb2a_hextNone(tqtatb((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt _task_mainss  tRNGMultiprocessingForkTestcBseZdZRS(c Csd}tj}gt|D]}|jd^q}tjdtjjj j tjj dtj d|dtjj }|jt|}gt|D]}||jd^q}gt|D]}||jd^q}tt||} |jd|j|jtt|t|ksgtt| t| krtdtj| fndS(Niig333333?t processest initializeris'RNG output duplicated across fork(): %s(tmultiprocessingtManagerRtQueueRRRRRRRRtPoolR t map_asyncR?tgettlisttzipRtjoinR'tsetR)R*R+( R tn_procstmanagerR/tqueuestpoolt map_resulttaatbbtres((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyR6~s" ( ,,   <(R7R8R6(((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyR@|scCs9g}|tg7}tdk r5|tg7}n|S(N(RRCR;R@(tconfigttests((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyt get_testss  t__main__cCstjtS(N(tunittestt TestSuiteRW(((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyttt defaultTesttsuite(t__doc__t __future__Rt __revision__R$R*RYRRRt version_infotCrypto.Util.py21compattCrypto.Util.py3compatRCt ImportErrorR;tCrypto.Random._UserFriendlyRNGRtCrypto.Random.randomtTestCaseRR?R@RWR7R^tmain(((s_/opt/alt/python27/lib64/python2.7/site-packages/Crypto/SelfTest/Random/test__UserFriendlyRNG.pyts0      &      C $