%PDF- %PDF-
Direktori : /lib64/python2.7/site-packages/Crypto/Random/Fortuna/ |
Current File : //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"