Current File : //usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyo |
�
Bd\Rc @ s� d Z d d l Z e j d d k rE e j d d k rE d d l Tn d d l Td d l m Z d d l Z d d l Z d d l m
Z
d d l Z d d l Z d e
f d
� � YZ d � Z d e
f d
� � YZ d S( s $Id$i����Ni i i ( t *( t b2a_hex( t ClockRewindWarningt FortunaPoolc B sD e Z d Z e j Z d � Z d � Z d � Z d � Z d � Z RS( sg Fortuna pool type
This object acts like a hash object, with the following differences:
- It keeps a count (the .length attribute) of the number of bytes that
have been added to the pool
- It supports a .reset() method for in-place reinitialization
- The method to add bytes to the pool is .append(), not .update().
c C s | j � d S( N( t reset( t self( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyt __init__6 s c C s) | j j | � | j t | � 7_ d S( N( t _ht updatet lengtht len( R t data( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyt append9 s c C s
| j j � S( N( R t digest( R ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyR
= s c C s= t j d d k r# t | j � � St | j � � j � Sd S( Ni i ( t syst version_infoR R
t decode( R ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyt hexdigest@ s c C s t j � | _ d | _ d S( Ni ( t SHAd256t newR R ( R ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyR F s (
t __name__t
__module__t __doc__R t digest_sizeR R R
R R ( ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyR ) s c C sV g } d } xC t d � D]5 } | | @d k r? | j | � n P| d >d B} q W| S( s? Return a list of pools indexes (in range(32)) that are to be included during reseed number r.
According to _Practical Cryptography_, chapter 10.5.2 "Pools":
"Pool P_i is included if 2**i is a divisor of r. Thus P_0 is used
every reseed, P_1 every other reseed, P_2 every fourth reseed, etc."
i i i l ( t rangeR ( t rt retvalt maskt i( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyt which_poolsJ s
t FortunaAccumulatorc B sD e Z d Z d Z d � Z d � Z d � Z d d � Z d � Z RS( i@ g�������?c C sJ d | _ t j � | _ d | _ g t d � D] } t � ^ q. | _ d S( Ni i ( t reseed_countt FortunaGeneratort AESGeneratort generatort Nonet last_reseedR R t pools( R R ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyR u s
%c C s
d | _ d S( N( R# R$ ( R ( ( sN /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaAccumulator.pyt _forget_last_reseed� s c C s� t j � } | j d k rF | j | k rF t j d t � d | _ n | j d j | j k r� | j d k s� | | j | j k r� | j
| � n | j j | � S( Ns- Clock rewind detected. Resetting last_reseed.i (
t timeR$ R# t warningst warnR R% R t
min_pool_sizet reseed_intervalt _reseedR"