3 M(ÌYS ã@sLdZddlZddlmZmZddlmZdd„Zdd„Zd d „Z d d „Z dS) z(Functions for generating random numbers.éN)ÚcommonÚ transform)ÚbytecCsJt|dƒ\}}tj|ƒ}|dkrFttjdƒƒ}|d|L}t|ƒ|}|S)z�Reads 'nbits' random bits. If nbits isn't a whole number of bytes, an extra byte will be appended with only the lower bits set. éré)ÚdivmodÚosÚurandomÚordr)ÚnbitsÚnbytesZrbitsÚ randomdataZ randomvalue©rú2/private/tmp/pip-build-nl73fm5q/rsa/rsa/randnum.pyÚread_random_bitss   rcCs&t|ƒ}tj|ƒ}|d|d>O}|S)z8Reads a random integer of approximately nbits bits. r)rrZ bytes2int)r r ÚvaluerrrÚread_random_int0s rcCst|ƒ}|dBS)zhReads a random odd integer of approximately nbits bits. >>> read_random_odd_int(512) & 1 1 r)r)r rrrrÚread_random_odd_int>srcCsJtj|ƒ}d}x6t|ƒ}||kr"P|r:|ddkr:|d8}|d7}qW|S)zÞReturns a random integer x with 1 <= x <= maxvalue May take a very long time in specific situations. If maxvalue needs N bits to store, the closer maxvalue is to (2 ** N) - 1, the faster this function is. ré r)rÚbit_sizer)ÚmaxvaluerÚtriesrrrrÚrandintKs  r) Ú__doc__rZrsarrZ rsa._compatrrrrrrrrrÚs