U vf0 @ s d dl Z d dlmZ d dlZd dlmZ ejjZ ejj ZejjZ ejjZejjZejjZejjZejjZejjZejjZejjZejjZG dd dZ de!e!e"e"e"e"e"e!dd dZ#dS ) N)NoReturn)bytes_as_stringc @ s e Zd ZdZeZeZeZ e Zdedddfee eeedddZee dddZee dd d ZeedddZed dddZedddZedddZd dddZedddZd S )blake2bzK :py:mod:`hashlib` API compatible blake2b algorithm implementation )datadigest_sizekeysaltpersonc C s* t ||||d| _|| _|r&| | dS )ab :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: a 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 )r r r r N) _b2b_init_state_digest_sizeupdate)selfr r r r r r ?/opt/alt/python38/lib64/python3.8/site-packages/nacl/hashlib.py__init__0 s zblake2b.__init__)returnc C s | j S N)r r r r r r U s zblake2b.digest_sizec C s dS )N r r r r r block_sizeY s zblake2b.block_sizec C s dS )Nr r r r r r name] s zblake2b.nameN)r r c C s t | j| d S r )_b2b_updater )r r r r r r a s zblake2b.updatec C s | j }t|S r )r copy _b2b_final)r _str r r digestd s zblake2b.digestc C s t t| S r )r binasciihexlifyr r r r r hexdigesth s zblake2b.hexdigestc C s$ t | | jd}| j }||_|S )N)r )typer r r )r Z_cpr r r r r k s zblake2b.copyc C s t d| jjdS )zc Raise the same exception as hashlib's blake implementation on copy.copy() zcan't pickle {} objectsN) TypeErrorformat __class____name__r r r r __reduce__q s zblake2b.__reduce__)r% __module____qualname____doc__BYTESMAX_DIGEST_SIZEKEYBYTES_MAXMAX_KEY_SIZE PERSONALBYTESPERSON_SIZE SALTBYTES SALT_SIZEbytesintr propertyr r strr r r r r r r&