ó őůPc@s¨dZdZddlZejddkrKejddkrKddlTnddlZdejfd „ƒYZid „Ze d kr¤d „Z ej d dƒndS(s+Self-tests for (some of) Crypto.Util.numbers$Id$i˙˙˙˙Niii(t*t MiscTestscBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cCs ddlmaddladS(Ni˙˙˙˙(tnumber(t Crypto.UtilRtmath(tself((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pytsetUp'scCs˝|jttjddƒ|jttjddƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒxŒtdddƒD]x}|jdtjd|ƒƒd }xM|d|dkr´t|dd|ƒ\}}|t| ƒ}|j|d||f|d|tj|d|ƒfƒt|d|ƒ\}}|t| ƒ}|j|||f||tj||ƒfƒt|dd|ƒ\}}|t| ƒ}|j|d||f|d|tj|d|ƒfƒ|d9}qhWq=WdS(sUtil.number.ceil_shifti˙˙˙˙iiiiiiiiii illNi‚(t assertRaisestAssertionErrorRt ceil_shiftt assertEqualtrangetdivmodtint(Rtbtntqtrtexpected((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyttest_ceil_shift,sJ$$cCsă|jttjddƒ|jttjddƒ|jttjddƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjdd ƒƒ|jdtjdd ƒƒ|jdtjdd ƒƒ|jdtjdd ƒƒ|jdtjd d ƒƒ|jdtjd d ƒƒ|jdtjd d ƒƒ|jdtjd d ƒƒ|jdtjd d ƒƒ|jdtjdd ƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjd dƒƒ|jdtjddƒƒdS(sUtil.number.ceil_divt1iii˙˙˙˙iţ˙˙˙iiý˙˙˙iiiiiii i÷˙˙˙iü˙˙˙iř˙˙˙iů˙˙˙iú˙˙˙iű˙˙˙N(Rt TypeErrorRtceil_divtZeroDivisionErrorR (R((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt test_ceil_div_slcCsá|jttjdƒ|jttjdƒ|jttjdƒ|jdtjdƒƒ|jdtjdƒƒ|jttjdƒ|jdtjdƒƒ|jttjdƒ|jttjd ƒ|jttjd ƒd}d }xs|d krf|d|krC|j|tj|ƒd ||fƒ|d7}n|jttj|ƒ|d7}qôWxstd ddƒD]_}|jttjd|dƒ|j|tjd|ƒƒ|jttjd|dƒqzWdS(sUtil.number.exact_log2t0i˙˙˙˙iiiiiiiiiisexpected=2**%d, n=%di@lNiA(RRRt exact_log2t ValueErrorR R (RteR((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyttest_exact_log2¤s,& cCsž|jdtjddƒƒ|jttjddƒ|jdtjddƒƒ|jttjddƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jttjddƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jdtjddƒƒ|jttjddƒ|jttjddƒ|jdtjddd tƒƒ|jttjddd tƒd S( sUtil.number.exact_diviiiii˙˙˙˙iţ˙˙˙iü˙˙˙it allow_divzeroN(R Rt exact_divRRRtTrue(R((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyttest_exact_divżs "c CsŔ|jttjddƒx tddƒD]}x†tddƒD]u}|dkrm|jttj||ƒq?|j||ttj t |ƒ|ƒƒf||tj||ƒfƒq?Wq)WdS(sUtil.number.floor_divRiiö˙˙˙i iN( RRRt floor_divR RR R Rtfloortfloat(RtaR((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyttest_floor_divÜs +cCsŠ|jttjdƒ|jttjdƒd}tj|ƒ}|j|ddƒ|j|d|d>dkdƒ|j|d|>kdƒd }tj||ƒ}|jtj|d|ƒdƒ|j|ddƒ|j|d|d>dkdƒ|j|d|>kdƒd }tj||ƒ}|jtj|dd?|ƒdƒ|j|ddƒ|j|d|d>dkdƒ|j|d|>kdƒd S(sUtil.number.getStrongPrimeiiiiiliiNiiii(RRRtgetStrongPrimetassertNotEqualR tGCD(RtbitstxR((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyttest_getStrongPrimeçs&" "$"c Cs |jtjdƒtƒ|jtjdƒtƒ|jtjdƒtƒ|jtjdƒtƒ|jtjdƒtƒ|jtjdƒtƒ|jtjd$ƒtƒ|jtjd'ƒtƒxQd)d+d,d-d.d/d0d1d2d3d4d5f D]%}|jtjt|ƒƒtƒqóWd"S(6sUtil.number.isPrimeiý˙˙˙iţ˙˙˙iiiili˙i+iiÓi=i—i›;i5wlH l9l^l<=leEmlÉ Űl&”l5L(lÇ)SlSŚlďZ8lÝ5q:l? érl}ŇelŸB sl=fló^ř;lĺ=ńwNlVlV˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙lVlV˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙lŞ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙iUi•iű#iá§idÁlu^žßlł+%!alMnÔzž]l—g‹4Đ+l›I>6lS{AˆKW lĂbĘ\\QNlăz—Ilv3l_V„B;.((R RtisPrimetFalseR tlong(Rt composite((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt test_isPrimeýs  cCs|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒ|jtjdƒdƒdS( Niii˘ii@ş˘lEĽ)ýď8^n,š ž´n:ˆzb´|˜DELU"ęN79YÁ– ŞSžh "ś*f8›<>kŽtkŠÂ26"zźBT6ű íV´ĎRNc”cË\Ä˘Ő]đ]rX" Sw~oÝ Ë8I(jćOˆ3˝2Ç¸Ň ii(R Rtsize(R((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt test_sizes cCsKd}d}tjj||ƒ}|j||jƒ|j||jƒdS(sbTest that mpzToLongObj and longObjToMPZ (internal functions) roundtrip negative numbers correctly.lř˙˙˙ ?<\"XéX\Ą lN(Rt _fastmatht rsa_constructR RR(RRRtk((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt8test_negative_number_roundtrip_mpzToLongObj_longObjToMPZs ( t__name__t __module__RRRRR!R&R,R1R3R7(((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyR&s  3 E     cCsddlm}|tƒS(Ni˙˙˙˙(tlist_test_cases(tCrypto.SelfTest.st_commonR:R(tconfigR:((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt get_testsst__main__cCstjtƒƒS(N(tunittestt TestSuiteR=(((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyt$st defaultTesttsuite( t__doc__t __revision__tsyst version_infotCrypto.Util.py21compatR?tTestCaseRR=R8RCtmain(((s;..\python\site-packages\Crypto\SelfTest\Util\test_number.pyts &  ů