KDF#
EverCrypt’s Key Derivation Functions (KDFs).
Key derivation functions (KDFs) are used to derive cryptographically strong keys from an initial secret value.
HKDF#
HMAC-based Extract-and-Expand Key Derivation Function (HKDF) RFC 5869.
Similar to RFC 5869, the following descriptions uses the term HashLen
to denote the output length of the hash function of a concrete instantiation of HKDF.
The following instantiations are supported:
BLAKE2b (
HashLen
= 64)BLAKE2s (
HashLen
= 32)SHA2-256 (
HashLen
= 32)SHA2-512 (
HashLen
= 64)SHA1 (
HashLen
= 20)
API Reference#
-
void EverCrypt_HKDF_extract(Spec_Hash_Definitions_hash_alg a, uint8_t *prk, uint8_t *salt, uint32_t saltlen, uint8_t *ikm, uint32_t ikmlen)#
Extract a fixed-length pseudorandom key from input keying material.
- Parameters:
a – Hash function to use. The allowed values are:
Spec_Hash_Definitions_Blake2B
(HashLen
= 64),Spec_Hash_Definitions_Blake2S
(HashLen
= 32),Spec_Hash_Definitions_SHA2_256
(HashLen
= 32),Spec_Hash_Definitions_SHA2_384
(HashLen
= 48),Spec_Hash_Definitions_SHA2_512
(HashLen
= 64), andSpec_Hash_Definitions_SHA1
(HashLen
= 20).prk – Pointer to
HashLen
bytes of memory where pseudorandom key is written to.HashLen
depends on the used algorithma
. See above.salt – Pointer to
saltlen
bytes of memory where salt value is read from.saltlen – Length of salt value.
ikm – Pointer to
ikmlen
bytes of memory where input keying material is read from.ikmlen – Length of input keying material.
Extract a fixed-length pseudorandom key from input keying material.
a
Hash function to use. The allowed values are:Spec_Hash_Definitions_Blake2B
,Spec_Hash_Definitions_Blake2S
,Spec_Hash_Definitions_SHA2_256
,Spec_Hash_Definitions_SHA2_384
,Spec_Hash_Definitions_SHA2_512
, andSpec_Hash_Definitions_SHA1
.
prk
Pointer toHashLen
bytes of memory where pseudorandom key is written to.salt
Pointer tosaltlen
bytes of memory where salt value is read from.saltlen
Length of salt value.ikm
Pointer toikmlen
bytes of memory where input keying material is read from.ikmlen
Length of input keying material.
-
void EverCrypt_HKDF_expand(Spec_Hash_Definitions_hash_alg a, uint8_t *okm, uint8_t *prk, uint32_t prklen, uint8_t *info, uint32_t infolen, uint32_t len)#
Expand pseudorandom key to desired length.
- Parameters:
a – Hash function to use. Usually, the same as used in
EverCrypt_HKDF_extract
.okm – Pointer to
len
bytes of memory where output keying material is written to.prk – Pointer to at least
HashLen
bytes of memory where pseudorandom key is read from. Usually, this points to the output from the extract step.prklen – Length of pseudorandom key.
info – Pointer to
infolen
bytes of memory where context and application specific information is read from.infolen – Length of context and application specific information. Can be 0.
len – Length of output keying material.
Expand pseudorandom key to desired length.
a
Hash function to use. Usually, the same as used inEverCrypt_HKDF_extract
.okm
Pointer tolen
bytes of memory where output keying material is written to.prk
Pointer to at leastHashLen
bytes of memory where pseudorandom key is read from. Usually, this points to the output from the extract step.prklen
Length of pseudorandom key.info
Pointer toinfolen
bytes of memory where context and application specific information is read from. Can be a zero-length string.infolen
Length of context and application specific information.len
Length of output keying material.
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_blake2b” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_blake2b” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_blake2s” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_blake2s” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_sha2_256” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_sha2_256” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_sha2_384” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_sha2_384” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_sha2_512” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_sha2_512” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_extract_sha1” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/
Warning
doxygenfunction: Cannot find function “EverCrypt_HKDF_expand_sha1” in doxygen xml output for project “HACL Packages” from directory: ../../build/doxygen/xml/