Current File : //usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaGenerator.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 Z d d l m Z m Z m Z d d l
m Z d d l m
Z
d d l Z d
e f d � � YZ d S( s $Id$i����Ni i i ( t *( t
ceil_shiftt
exact_log2t exact_div( t Counter( t AESt AESGeneratorc B sm e Z d Z e j Z d Z d Z e d � e d Z d � Z d � Z
d � Z d � Z d
� Z
d � Z RS(
s) The Fortuna "generator"
This is used internally by the Fortuna PRNG to generate arbitrary amounts
of pseudorandom data from a smaller amount of seed data.
The output is generated by running AES-256 in counter mode and re-keying
after every mebibyte (2**16 blocks) of output.
i i i t i c C sr t j d | j d d d d t � | _ d | _ t | j � | _ t | j
| j � | _ | j | j | _
d S( Nt nbitsi t
initial_valuei t
little_endian( R t newt
block_sizet Truet countert Nonet keyR t block_size_shiftR t key_sizet blocks_per_keyt max_blocks_per_requestt max_bytes_per_request( t self( ( sL /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaGenerator.pyt __init__A s
( c C sY | j d k r( t d � | j | _ n | j t j | j | � j � � | j � d S( NR ( R R t bR t _set_keyt SHAd256R t digestR ( R t seed( ( sL /usr/lib64/python2.7/site-packages/Crypto/Random/Fortuna/FortunaGenerator.pyt reseedN s
#
c C sp | d ?} | d @} g } x* t | � D] } | j | j d � � q'