a
¹aÓ ã @ sd d dl Z d dlZd dlmZ d dlmZmZ d dlmZm Z d dl
mZ dd„ ZG dd „ d eƒZ
dS )
é N)Úutils)ÚAlreadyFinalizedÚ
InvalidKey)Ú
constant_timeÚhashes)ÚKeyDerivationFunctionc C s t d| ¡S )Nz>I)ÚstructÚpack)Ún© r úP/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ
_int_to_u32be s r
c @ sN e Zd Zdejeeje ej dœdd„Z
eedœdd„Zeeddœd d
„ZdS )ÚX963KDFN)Ú algorithmÚlengthÚ
sharedinfoÚbackendc C sP |j d }||kr td |¡ƒ‚|d ur4t d|¡ || _|| _|| _d| _d S )Nl ÿÿ z'Cannot derive keys larger than {} bits.r F) Zdigest_sizeÚ
ValueErrorÚformatr Ú_check_bytesÚ
_algorithmÚ_lengthÚ_sharedinfoÚ_used)Úselfr r r r Zmax_lenr r r Ú__init__ s
ÿzX963KDF.__init__)Úkey_materialÚreturnc C sª | j r
t‚d| _ t d|¡ dg}d}d}| j|kr–t | j¡}| |¡ | t |ƒ¡ | j
d urn| | j
¡ | | ¡ ¡ |t
|d ƒ7 }|d7 }q*d |¡d | j… S )NTr ó r é éÿÿÿÿ)r r r Z_check_bytesliker r ZHashr Úupdater
r ÚappendÚfinalizeÚlenÚjoin)r r ÚoutputZoutlenZcounterÚhr r r Úderive+ s"
zX963KDF.derive)r Úexpected_keyr c C s t | |¡|¡st‚d S )N)r Zbytes_eqr( r )r r r) r r r Úverify@ s zX963KDF.verify)N)
Ú__name__Ú
__module__Ú__qualname__r Z
HashAlgorithmÚintÚtypingÚOptionalÚbytesÚAnyr r( r* r r r r r s ûûr )r r/ Zcryptographyr Zcryptography.exceptionsr r Zcryptography.hazmat.primitivesr r Z"cryptography.hazmat.primitives.kdfr r
r r r r r Ú