3Tf ddlmZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z Gdde ZGd d e Zy) ) annotationsN)utils)AlreadyFinalized InvalidKey) constant_timehasheshmac)KeyDerivationFunctioncBeZdZ d ddZddZddZd dZy) HKDFNc||_|d|jjz}ntjd|||_t |j|||_y)Nsalt) _algorithm digest_sizer _check_bytes_salt HKDFExpand _hkdf_expand)self algorithmlengthrinfobackends I/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__z HKDF.__init__sP$ <T__888D   vt , &tEctj|j|j}|j ||j SN)r HMACrrupdatefinalize)r key_materialhs r_extractz HKDF._extract#s2 IIdjj$// 2 zz|rctjd||jj|j |S)Nr#)r_check_byteslikerderiver%rr#s rr(z HKDF.derive(s2 ~|<  '' l(CDDrcZtj|j||styrrbytes_eqr(rrr# expected_keys rverifyz HKDF.verify,'%%dkk,&?N Orr) rhashes.HashAlgorithmrintrtyping.Optional[bytes]rr3r typing.Anyr#bytesreturnr6r#r6r.r6r7None)__name__ __module__ __qualname__rr%r(r/rrr r sR# F'FF% F % F  F& Err c>eZdZ d ddZddZddZd dZy) rNc||_d|jz}||kDrtd|d||_|d}nt j d|||_d|_y)NzCannot derive keys larger than z octets.rrF)rr ValueError_lengthrr_info_used)rrrrr max_lengths rrzHKDFExpand.__init__2sm$9000 J 1*XF  <D   vt ,  rc.dg}d}|jjt|dz z|jkrt j ||j}|j |d|j |j|j t|g|j|j|dz }|jjt|dz z|jkrdj|d|jS)Nr) rrlenrBr r r!rCr6appendr"join)rr#outputcounterr$s r_expandzHKDFExpand._expandMsoo))S[1_= L ,8A HHVBZ HHTZZ HHUG9% & MM!**, ' qLG oo))S[1_= Lxx$,,//rctjd||jrtd|_|j |S)Nr#T)rr'rDrrNr)s rr(zHKDFExpand.derive[s5 ~|< ::" " ||L))rcZtj|j||styrr+r-s rr/zHKDFExpand.verifycr0rr)rr1rr2rr3rr4r5r8)r:r;r<rrNr(r/r=rrrr1sA # '%   6 0*rr) __future__rtyping cryptographyrcryptography.exceptionsrrcryptography.hazmat.primitivesrrr "cryptography.hazmat.primitives.kdfr r rr=rrrWs7 # @FFD D4&4r