a b@sddlZddlmZddlmZmZmZmZddlm Z m Z m Z m Z m Z ddlmZGdddejZGdd d ejZGd d d ZGd d d eZGdddeZdS)N)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm_Reasons)cipherscmac constant_timehasheshmac)KeyDerivationFunctionc@seZdZdZdS)ModeZctrN)__name__ __module__ __qualname__Z CounterModerrO/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/kdf/kbkdf.pyr sr c@seZdZdZdZdS)CounterLocationZ before_fixedZ after_fixedN)rrr BeforeFixed AfterFixedrrrrrsrc @sxeZdZejeeeejeeeje eje eje d ddZ e ee dddZ e ee ddd Ze d d d Zd S) _KBKDFDeriver) prfmodelengthrlenllenlocationlabelcontextfixedc Cst|s Jt|tstdt|ts0td|s8|rD| rDtd|dusV||s^td|durv| durvtd|durt|tstd|durd}|durd}t d|t d |||_ ||_ ||_ ||_ ||_||_||_||_d |_| |_dS) Nzmode 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 integerrrF)callable isinstancer TypeErrorr ValueError_valid_byte_lengthintr _check_bytes_prf_mode_length_rlen_llen _location_label_context_used _fixed_data) selfrrrrrrrrrrrr__init__"s>      z_KBKDFDeriver.__init__)valuereturncCs@t|tstdtd|}dt|kr6dkstdtj|j ||jj dS)NrrUrgr=) rXrjrWrTZcmac_algorithm_supportedrrrirYrJ block_size)r2r:rZrrrrJs   zKBKDFCMAC.deriver`cCst|||stdSr\rbrcrrrrdszKBKDFCMAC.verify)N)rrrr r&rMrOrrLrer3rrlr(rJrdrrrrrfs  $rf)rMZ cryptographyrZcryptography.exceptionsrrrrZcryptography.hazmat.primitivesrrr r r Z"cryptography.hazmat.primitives.kdfr Enumr rrrRrfrrrrs  m7