File: //proc/thread-self/root/lib/python3/dist-packages/nacl/__pycache__/hashlib.cpython-38.pyc
U
�֫[E � @ s� d dl mZmZmZ d dlZd dlZd dlmZ ej j
Zej jZ
ej jZej jZej jZej jZej jZej jZej jZej jZej jZej j Z!G dd� de"�Z#ddd
�Z$dS )� )�absolute_import�division�print_functionN)�bytes_as_stringc @ sx e Zd ZdZeZeZeZ e
Zdedddfdd�Ze
dd� �Ze
dd� �Ze
d d
� �Zdd� Zd
d� Zdd� Zdd� ZdS )�blake2bzK
:py:mod:`hashlib` API compatible blake2b algorithm implementation
� c C s* t ||||d�| _|| _|r&| �|� dS )ac
:py:class:`.blake2b` algorithm initializer
:param data:
:type data: bytes
:param int digest_size: the requested digest size; must be
at most :py:attr:`.MAX_DIGEST_SIZE`;
the default digest size is :py:data:`.BYTES`
:param key: the key to be set for keyed MAC/PRF usage; if set,
the key must be at most :py:data:`.KEYBYTES_MAX` long
:type key: bytes
:param salt: an initialization salt at most
:py:attr:`.SALT_SIZE` long; it will be zero-padded
if needed
:type salt: bytes
:param person: a personalization string at most
:py:attr:`.PERSONAL_SIZE` long; it will be zero-padded
if needed
:type person: bytes
)�key�salt�person�digest_sizeN)� _b2b_init�_state�_digest_size�update)�self�datar r r r
� r �./usr/lib/python3/dist-packages/nacl/hashlib.py�__init__. s �zblake2b.__init__c C s | j S �N)r �r r r r r L s zblake2b.digest_sizec C s dS )N� r r r r r �
block_sizeP s zblake2b.block_sizec C s dS )Nr r r r r r �nameT s zblake2b.namec C s t | j|� d S r )�_b2b_updater
)r r r r r r X s zblake2b.updatec C s t j�| j�}t|| j�S r )�nacl�bindings�%crypto_generichash_blake2b_state_copyr
�
_b2b_finalr )r �_str r r �digest[ s zblake2b.digestc C s t t�| �� ��S r )r �binasciiZhexlifyr r r r r � hexdigest_ s zblake2b.hexdigestc C s$ t | �| jd�}t| j�}||_|S )N)r )�typer � _b2b_copyr
)r Z_cpr r r r �copyb s
zblake2b.copyN)�__name__�
__module__�__qualname__�__doc__�BYTESZMAX_DIGEST_SIZE�KEYBYTES_MAXZMAX_KEY_SIZE�
PERSONALBYTESZPERSON_SIZE� SALTBYTESZ SALT_SIZEr �propertyr r r r r r"