pg#ddlZddlmZddlmZmZmZmZddlm Z m Z m Z m Z m Z ddlmZGddejZGdd ejZGd d ZGd d eZGddeZdS)N)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm_Reasons)cipherscmac constant_timehasheshmac)KeyDerivationFunctionceZdZdZdS)ModectrN)__name__ __module__ __qualname__ CounterModeJ/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyrrsKKKrrceZdZdZdZdZdS)CounterLocation before_fixed after_fixed middle_fixedN)rrr BeforeFixed AfterFixed MiddleFixedrrrrrs KJ KKKrrceZdZdejdedededejededejedeje d eje d eje fd Z e d ed e fdZ de ded e fdZd e fdZdS) _KBKDFDeriverprfmodelengthrlenllenlocationbreak_locationlabelcontextfixedc t|sJt|tstdt|tstd||tjurt d||tjkrt d|$t|tstd||dkrt d|s| r| rt d|||st d || t d |$t|tstd |d }| d } tj d |tj d| ||_ ||_ ||_ ||_||_||_||_||_| |_d|_| |_dS)Nzmode must be of type Modez(location must be of type CounterLocationzPlease specify a break_locationzJbreak_location is ignored when location is not CounterLocation.MiddleFixedz!break_location must be an integerrz)break_location must be a positive integerz9When supplying fixed data, label and context are ignored.zrlen must be between 1 and 4zPlease specify an llenzllen must be an integerrr)r*F)callable isinstancer TypeErrorrr ValueErrorint_valid_byte_lengthr _check_bytes_prf_mode_length_rlen_llen _location_break_location_label_context_used _fixed_data) selfr"r#r$r%r&r'r(r)r*r+s r__init__z_KBKDFDeriver.__init__#s }}$%% 9788 8(O44 HFGG G  !h/2M&M&M>?? ?  &O777/   %j.M.M %?@@ @  %.1*<*<HII I  W % N   len(fixed))r=rr_check_bytesliker6rFr7powrGr0_generate_fixed_inputr9rrrr.r:r1ranger4updateappendfinalizejoin) r?rIrJroundsoutputr_binr+data_before_ctrdata_after_ctrihcounter input_datas rderivez_KBKDFDeriver.derivevs : #" " ~|<<< L=O34 "1dj11 C3u::>**Q. . .=>> >**,, >_8 8 8!O"NN ^9 9 9#O NN$c G&U33 !EFFF#$:d&:$:;O"4#7#9#9:Nq&1*%% ( (A ,''A(DJ77G(72^CJ HHZ MM!**,, ' ' ' 'xx$,//rc|jr!t|jtr|jStj|jdz|j}d|jd|j |gS)NrMr) r>r.bytesrrFr6r8rUr;r<)r?l_vals rrPz#_KBKDFDeriver._generate_fixed_inputsd   $ 4+;U C C $# #"4?? 'I+  $FJ % I             r_rBcF|jJtj|jSrx)rr CMAC)r?rs rr4zKBKDFCMAC._prfs"|'''y&&&rrIc |||_|jJddlm}||jst dt j|j ||jj dzS)NrrorrM) rtrrrrmcmac_algorithm_supportedrrrrur_ block_size)r?rIrvs rr_zKBKDFCMAC.derives|44 |'''      ,,T\:: &I+  }##L$,2IQ2NOOOrr}cdtj|||stdSrxrrs rrzKBKDFCMAC.verify'rrrx)rrrrr1rdrfrrbrr@r rr4r_rrrrrrs@#% 04% % % %  %  % oc" % "% u%% '% u%% % ,% % % % N'e' '''' P5PUPPPP"5$rr)rd cryptographyrcryptography.exceptionsrrrrcryptography.hazmat.primitivesrr r r r "cryptography.hazmat.primitives.kdfr Enumrrr!rjrrrrrs   EDDDDD5:!!!!!ej!!! JFJFJFJFJFJFJFJFZ77777%777t@@@@@%@@@@@r