a oe@spddlmZddlZddlmZddlmZmZddlm Z m Z ddl m Z ddd d d Z Gd d d e ZdS)) annotationsN)utils)AlreadyFinalized InvalidKey) constant_timehashes)KeyDerivationFunctionintbytes)nreturncCs|jdddS)NZbig)length byteorder)to_bytes)r rKC:\Program Files\Certbot\pkgs\cryptography\hazmat\primitives\kdf\x963kdf.py _int_to_u32besrc@sDeZdZddddddddZd d d d d Zd d d dddZdS)X963KDFNzhashes.HashAlgorithmr ztyping.Optional[bytes]z typing.Any) algorithmr sharedinfobackendcCsR|jd}||kr"td|d|dur6td|||_||_||_d|_dS)NlzCannot derive keys larger than z bits.rF)Z digest_size ValueErrorrZ _check_bytes _algorithm_length _sharedinfo_used)selfrrrrZmax_lenrrr__init__s  zX963KDF.__init__r ) key_materialr cCs|jr td|_td|dg}d}d}|j|krt|j}|||t ||j durn||j | | |t |d7}|d7}q*d|d|jS)NTrr)rrrZ_check_byteslikerrZHashrupdaterrappendfinalizelenjoin)rroutputZoutlenZcounterhrrrderive&s"       zX963KDF.deriveNone)r expected_keyr cCst|||stdS)N)rZbytes_eqr*r)rrr,rrrverify;szX963KDF.verify)N)__name__ __module__ __qualname__rr*r-rrrrrsr)Z __future__rtypingZ cryptographyrZcryptography.exceptionsrrZcryptography.hazmat.primitivesrrZ"cryptography.hazmat.primitives.kdfrrrrrrrs