3TfzddlmZddlZddlmZddlmZmZmZm Z ddl m Z ddl mZmZddlmZGdd eZy) ) annotationsN)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm_Reasons)openssl) constant_timehashes)KeyDerivationFunctionc:eZdZ d ddZddZddZy) PBKDF2HMACNc ddlm}|j|s3tdj |j t jd|_||_ ||_ tjd|||_ ||_y)Nr)backendz/{} is not supported for PBKDF2 by this backend.Fsalt),cryptography.hazmat.backends.openssl.backendrpbkdf2_hmac_supportedrformatnamerUNSUPPORTED_HASH_used _algorithm_lengthr _check_bytes_salt _iterations)self algorithmlengthr iterationsrossls K/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__zPBKDF2HMAC.__init__sz )))4&AHHNN))    #  64( %c|jr tdd|_tjj ||j |j |j|jS)Nz'PBKDF2 instances can only be used once.T) rr rust_opensslkdfderive_pbkdf2_hmacrrrr)r key_materials r"derivezPBKDF2HMAC.derive0sV ::"#LM M 22  OO JJ    LL   r$ch|j|}tj||s tdy)NzKeys do not match.)r*r bytes_eqr)rr) expected_key derived_keys r"verifyzPBKDF2HMAC.verify=s2kk,/ %%k<@12 2Ar$)N) rzhashes.HashAlgorithmrintrbytesr r0rz typing.Any)r)r1returnr1)r)r1r-r1r2None)__name__ __module__ __qualname__r#r*r/r$r"rrsF# &'&& &  &  &4  3r$r) __future__rtyping cryptographyrcryptography.exceptionsrrrr"cryptography.hazmat.bindings._rustr r&cryptography.hazmat.primitivesr r "cryptography.hazmat.primitives.kdfr rr7r$r"r?s3 #  G@D+3&+3r$