Files
boc/aamos-ledger-rust/target/debug/deps/libhkdf-6b6fe5b97fc546fe.rmeta
T

106 lines
34 KiB
Plaintext
Raw Normal View History

rust
#rustc 1.96.0 (ac68faa20 2026-05-25)ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁhmacÁ襤ÆÂöÇTé{GØ-b15597c08a36c459ÁdigestÁ¶þ°* óz긮°Ñˆ*-8124c3906c1a7855Á
crypto_commonÁMy¤íJÇ;&‰îíW^ö-807a0dbc2f77ddb7Á
generic_arrayÁç"„wÑÒÕµµ¥;è-1fbbe396c4d2fae7ÁtypenumÁ/-;@ú¨_z,Ö-6209550d9c65d0a6Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁ block_bufferÁl²>O;-bsò D’¶Á-fa8e2dfb5eb7e256ÁsubtleÁÞOs&¡A ¹]ujO -cb07c5ee900298efÁÀÝ»Àí 
 errorsÁ××sealedÁ 
  
SealedÁ..CoreÁ.new_from_sliceÁ.new_coreÁ. from_coreÁ.¥.finalizeÁ66ä6ï666¥6ª>>ä>ï>>>¥>ª 
SimpleHkdfExtractÁI
SimpleHkdfÁKMMšMæ M input_ikmÁMªSSšS×WWšWæ Wfrom_prkÁWextractÁWexpand_multi_infoÁWexpandÁ__š_×HmacImplÁcee¥InvalidPrkLengthÁh
lƒn×
InvalidLengthÁp
tƒ v× HkdfExtractÁxxšx_x_pdÁ}}š}ƒHkdfÁš_à
šƒ





1
2
3
4
4
9
:
;
<
<
A
B
C
D
D
P
Q
Q
V
V
V
Z
Z
[
\
\
]
]
]
]
^
^
^
b
b
b
m
o
o
o
u
w
w
w


.cŠ hhiË  ³/EEâÝ۞؞¿cžÄcžŠ ppq
 G9v+0´ßÛðØð¿cðÄcð.ôô CoreWrapperÁöí÷bufferÁÓ›Øê@°«//HmacCoreÁ1Œ
2 opad_digestÁ
3 ipad_digestÁ
³›è“î4ú¹è.
SimpleHmacÁŒYopad_keyÁYipad_keyÁYpèèØxxº
{_|à
Õ ³{ Õ1ïèš¿cáØƒ _à
F{#‹è¿c®c¥èjhrpkhsplhtp}x†nhvpSx_hp6ô>eŠ WÛ
Ø
¿cÄc.
c IKcxí_$ë×ü ` PhantomDataÁ\“¹
AlgorithmNameÁlÇ,UnsignedÁDîý° OutputSizeUserÁt€
HmacÁ$ž- 

pG
qGË „ëhHË iÏHü^[ An implementation of HKDF, the [HMAC-based Extract-and-Expand Key Derivation Function][1].Á_ú\c # UsageÁoúüsNK The most common way to use HKDF is as follows: you provide the Initial KeyÁüÂTQ Material (IKM) and an optional salt, then you expand it (perhaps multiple times)Áü—JG into some Output Key Material (OKM) bound to an "info" context string.Áâúüæ-* There are two usage options for the salt:Áúü˜C@ - [`None`] or static for domain separation in a private settingÁüÜLI - guaranteed to be uniformly-distributed and unique in a public settingÁ©úü­B? Other non fitting data should be added to the `IKM` or `info`.Áðú ```rustÁ¬€ use sha2::Sha256;Áœ– use hkdf::Hkdf;Á̪ use hex_literal::hex;ÁÄúüÈC@ let ikm = hex!("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b");ÁüŒ2/ let salt = hex!("000102030405060708090a0b0c");Áü¿,) let info = hex!("f0f1f2f3f4f5f6f7f8f9");Áìúüð85 let hk = Hkdf::<Sha256>::new(Some(&salt[..]), &ikm);Áä© let mut okm = [0u8; 42];ÁôÆ hk.expand(&info, &mut okm)Áüå=: .expect("42 is a valid length for Sha256 to output");Á£ú̧ let expected = hex!("ÁüÁ(% 3cb25f25faacd57a90434f64d0362f2aÁüê(% 2d2d0a90cf1a5a4c5db02d56ecc4c5bfÁä“  34007208d5b887185865Á ");Áü¸ &# assert_eq!(okm[..], expected[..]);Á ```Áç úüë GD Normally the PRK (Pseudo-Random Key) remains hidden within the HKDFÁü³
JG object, but if you need to access it, use [`Hkdf::extract`] instead ofÁ”þ
 [`Hkdf::new`].Á ú\• ¼¼¡  # use sha2::Sha256;Á¬¹  # use hkdf::Hkdf;ÁÜÏ  # use hex_literal::hex;Áüë EB # let ikm = hex!("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b");Áü± 41 # let salt = hex!("000102030405060708090a0b0c");Áæ úüê C@ let (prk, hk) = Hkdf::<Sha256>::extract(Some(&salt[..]), &ikm);ÁÌ®
äüÈ
(% 077709362c2e32df0ddc3f0dc47bba63Áüñ
(% 90b6c73bb50f9c3122ec844ad7c2b3e5Á!ü¢&# assert_eq!(prk[..], expected[..]);ÁÏ!ÑúüÕLI If you already have a strong key to work from (uniformly-distributed andÁü¢LI long enough), you can save a tiny amount of time by skipping the extractÁüïC@ step. In this case, you pass a Pseudo-Random Key (PRK) into theÁü³JG [`Hkdf::from_prk`] constructor, then use the resulting [`Hkdf`] objectÁ
as usual.ÁŒú\¼¼œÃ#¬´ã#ÜÊ$üæ4õ$ü›.+ # let info = hex!("f0f1f2f3f4f5f6f7f8f9");Á¤Ê let prk = hex!("Áüß(˜&üˆ(Ê&!¹úü½QN let hk = Hkdf::<Sha256>::from_prk(&prk).expect("PRK should be large enough");ÁäÅô¬êüË=úÌäü§(üÐ(¹ äùê <!üž& !Ï!ÍúüÑ,) [1]: https://tools.ietf.org/html/rfc5869ÁDhttps://raw.githubusercontent.com/RustCrypto/media/6ee8e381/logo.svgÁ„ò¯.lIKcxí_˜ ר  `¹Æ ¹Æ êù ,
ý°&
 F

Ö\
- n



pG

qGË ¡
hHË ¡
iH˜ ˜ Lö¨ Ì…Æ d¤ä¸ù üÖ 
&
&
F
F
$—\
\