B \`@sddlmZmZmZddlmZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlmZmZmZddlmZGd d d eZGd d d eZe eGd ddeZdS))absolute_importdivisionprint_function)Enum)range)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm_Reasons) HMACBackend) constant_timehasheshmac)KeyDerivationFunctionc@seZdZdZdS)ModeZctrN)__name__ __module__ __qualname__Z CounterModerr[/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyrsrc@seZdZdZdZdS)CounterLocationZ before_fixedZ after_fixedN)rrr BeforeFixed AfterFixedrrrrrsrc@s4eZdZddZddZddZddZd d Zd S) KBKDFHMACc CsBt| tstdtjt|tjs.tdtj| |sDtdtjt|t sVt dt|t sht d|sp|r|| r|t d|dks| |st d|dkr| dkrt d|dk rt|tst d |dkrd }|dkrd }t|trt|tst d ||_||_||_||_||_||_||_||_| |_d |_| |_dS) Nz.Backend object does not implement HMACBackend.z5Algorithm supplied is not a supported hash algorithm.z5Algorithm supplied is not a supported hmac algorithm.zmode must be of type Modez(location must be of type CounterLocationz9When supplying fixed data, label and context are ignored.zrlen must be between 1 and 4zPlease specify an llenzllen must be an integerz'label and context must be of type bytesF) isinstancer r r ZBACKEND_MISSING_INTERFACErZ HashAlgorithmZUNSUPPORTED_HASHZhmac_supportedr TypeErrorr ValueError_valid_byte_lengthintbytes _algorithm_mode_length_rlen_llen _location_label_context_backend_used _fixed_data) self algorithmmodelengthZrlenZllenlocationZlabelcontextZfixedbackendrrr__init__sT        zKBKDFHMAC.__init__cCs@t|tstdtd|}dt|kr6dksszKBKDFHMAC._generate_fixed_inputcCst|||stdS)N)r Zbytes_eqrFr )r-rAZ expected_keyrrrverifyszKBKDFHMAC.verifyN)rrrr4rrFr>rHrrrrrs = %rN)Z __future__rrrenumrZ six.movesrZ cryptographyrZcryptography.exceptionsrr r r Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr rrZ"cryptography.hazmat.primitives.kdfrrrZregister_interfaceobjectrrrrrs