3TfddlmZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z ddZ ddZ dd ZGd d e ZGd d e Zy)) annotationsN)utils)AlreadyFinalized InvalidKey) constant_timehasheshmac)KeyDerivationFunctionc(|jddS)Nbig)length byteorder)to_bytes)ns N/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/concatkdf.py _int_to_u32bers ::Q%: 00c||jdz}||kDrtd|d|tjd|yy)NlzCannot derive keys larger than z bits. otherinfo) digest_size ValueErrorr _check_bytes) algorithmrr max_lengths r_common_args_checksrsL &&)4J ::,fMNN ; 2rcjtjd|dg}d}d}||kDr~|}|jt||j||j||j |j |t |dz }|dz }||kDr~dj|d|S)N key_materialrr)r_check_byteslikeupdaterappendfinalizelenjoin)rrauxfnroutputoutlencounterhs r_concatkdf_deriver,s  ><8UF FG 6/ G w'(   ajjl##fRj/!1  6/ 88F GV $$rc>eZdZ d ddZddZd dZd dZy) ConcatKDFHashNc^t|||||_||_||nd|_d|_y)NrF)r _algorithm_length _otherinfo_used)selfrrrbackends r__init__zConcatKDFHash.__init__7s3 Ivy9# .7.C rc@tj|jSN)rHashr0r4s r_hashzConcatKDFHash._hashEs{{4??++rc|jrtd|_t||j|j|j SNT)r3rr,r1r;r2r4rs rderivezConcatKDFHash.deriveH8 ::" "  $,, DOO  rcZtj|j||styr8rbytes_eqr?rr4r expected_keys rverifyzConcatKDFHash.verifyP'%%dkk,&?N Orr8)rhashes.HashAlgorithmrintrtyping.Optional[bytes]r5 typing.Any)returnz hashes.HashrbytesrLrNrrNrErNrLNone)__name__ __module__ __qualname__r6r;r?rFrrr.r.6sA # '  *   , rr.cBeZdZ d ddZddZd dZd dZy) ConcatKDFHMACNct|||||_||_||nd|_|jt |j d|d|jz}ntjd|||_ d|_ y)Nrz is unsupported for ConcatKDFsaltF) rr0r1r2 block_size TypeErrornamerr_saltr3)r4rrrYrr5s rr6zConcatKDFHMAC.__init__Vs Ivy9# .7.C    'y~~..KLM M <Y111D   vt ,  rcVtj|j|jSr8)r HMACr]r0r:s r_hmaczConcatKDFHMAC._hmacosyyT__55rc|jrtd|_t||j|j|j Sr=)r3rr,r1r`r2r>s rr?zConcatKDFHMAC.deriverr@rcZtj|j||styr8rBrDs rrFzConcatKDFHMAC.verifyzrGrr8) rrHrrIrYrJrrJr5rK)rLz hmac.HMACrMrO)rQrRrSr6r`r?rFrTrrrVrVUsK# '%  *   26 rrV)rrIrLrN)rrHrrIrrJrLrP) rrNrrIr'z'typing.Callable[[], hashes.HashContext]rrNrLrN) __future__rtyping cryptographyrcryptography.exceptionsrrcryptography.hazmat.primitivesrrr "cryptography.hazmat.primitives.kdfr rrr,r.rVrTrrris # @FFD1 3# 3  3& 3 3%% % 3% %  %.)>')'r