a ‚oeå ã@stddlmZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z Gdd„de ƒZGd d „d e ƒZdS) é)Ú annotationsN)Úutils)ÚAlreadyFinalizedÚ InvalidKey)Ú constant_timeÚhashesÚhmac)ÚKeyDerivationFunctionc@sVeZdZdddddddœdd„Zd d d œd d „Zd d d œd d„Zd d ddœdd„ZdS)ÚHKDFNúhashes.HashAlgorithmÚintútyping.Optional[bytes]ú typing.Any)Ú algorithmÚlengthÚsaltÚinfoÚbackendcCsB||_|durd|jj}n t d|¡||_t|j||ƒ|_dS)Nór)Ú _algorithmÚ digest_sizerÚ _check_bytesÚ_saltÚ HKDFExpandÚ _hkdf_expand)Úselfrrrrr©rúHC:\Program Files\Certbot\pkgs\cryptography\hazmat\primitives\kdf\hkdf.pyÚ__init__s  z HKDF.__init__Úbytes©Ú key_materialÚreturncCs"t |j|j¡}| |¡| ¡S©N)rÚHMACrrÚupdateÚfinalize)rr!ÚhrrrÚ_extract#s z HKDF._extractcCst d|¡|j | |¡¡S)Nr!)rÚ_check_byteslikerÚderiver(©rr!rrrr*(s z HKDF.deriveÚNone©r!Ú expected_keyr"cCst | |¡|¡st‚dSr#©rZbytes_eqr*r©rr!r.rrrÚverify,sz HKDF.verify)N)Ú__name__Ú __module__Ú __qualname__rr(r*r1rrrrr s úr c@sTeZdZddddddœdd„Zd d d œd d „Zd d d œd d„Zd d ddœdd„ZdS)rNr r r r)rrrrcCsX||_d|j}||kr(td|›d�ƒ‚||_|durs   "