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
HashLenbytes of memory where pseudorandom key is written to.HashLendepends on the used algorithma. See above.salt – Pointer to
saltlenbytes of memory where salt value is read from.saltlen – Length of salt value.
ikm – Pointer to
ikmlenbytes 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.
aHash 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.
prkPointer toHashLenbytes of memory where pseudorandom key is written to.saltPointer tosaltlenbytes of memory where salt value is read from.saltlenLength of salt value.ikmPointer toikmlenbytes of memory where input keying material is read from.ikmlenLength 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
lenbytes of memory where output keying material is written to.prk – Pointer to at least
HashLenbytes 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
infolenbytes 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.
aHash function to use. Usually, the same as used inEverCrypt_HKDF_extract.okmPointer tolenbytes of memory where output keying material is written to.prkPointer to at leastHashLenbytes of memory where pseudorandom key is read from. Usually, this points to the output from the extract step.prklenLength of pseudorandom key.infoPointer toinfolenbytes of memory where context and application specific information is read from. Can be a zero-length string.infolenLength of context and application specific information.lenLength 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/