Submit
Path:
~
/
/
opt
/
alt
/
python37
/
lib64
/
python3.7
/
site-packages
/
Crypto
/
Random
/
Fortuna
/
__pycache__
/
File Content:
FortunaGenerator.cpython-37.opt-1.pyc
B ��c� � @ s� d Z ddlZejd dkr0ejd dkr0ddlT ddlT ddlZddlmZmZm Z ddl mZ ddlm Z dd lmZ G d d� de�ZdS )z$Id$� N� � )�*)� ceil_shift� exact_log2� exact_div)�Counter)�AES)�SHAd256c @ s^ e Zd ZdZejZdZdZed�e d Z dd� Z dd � Zd d� Zdd � Z dd� Zdd� ZdS )�AESGeneratora) 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 c C sL t j| jd ddd�| _d | _t| j�| _t| j| j�| _ | j | j | _d S )N� r T)ZnbitsZ initial_valueZ little_endian)r �new� block_size�counter�keyr �block_size_shiftr �key_size�blocks_per_key�max_blocks_per_request�max_bytes_per_request)�self� r �Y/opt/alt/python37/lib64/python3.7/site-packages/Crypto/Random/Fortuna/FortunaGenerator.py�__init__A s zAESGenerator.__init__c C s@ | j d krtd�| j | _ | �t�| j | ��� � | �� d S )Nr )r �br �_set_keyr r Zdigestr )r Zseedr r r �reseedN s zAESGenerator.reseedc C sT |d? }|d@ }g }x t |�D ]}|�| �d�� qW |�| �|�� td��|�S )N� i�� i � )�range�append�_pseudo_random_datar �join)r �bytesZnum_full_blocksZ remainder�retval�ir r r �pseudo_random_dataV s zAESGenerator.pseudo_random_datac C s || _ tj|tj| jd�| _d S )N)r )r r r ZMODE_CTRr �_cipher)r r r r r r c s zAESGenerator._set_keyc C sT d| kr| j ks n td��t|| j�}| �|�d |� }| �| �| j�� |S )Nr z6You cannot ask for more than 1 MiB of data per request)r �AssertionErrorr r �_generate_blocksr r )r r% � num_blocksr&