crypto: Add new KDF type for IKEv2 PRFs

This commit is contained in:
Tobias Brunner 2022-03-14 16:56:32 +01:00
parent 7bde56a9bc
commit 37dbc87960
3 changed files with 13 additions and 1 deletions

View File

@ -1217,6 +1217,7 @@ static kdf_t *create_kdf_vector(kdf_constructor_t create,
{
switch (alg)
{
case KDF_PRF:
case KDF_PRF_PLUS:
return create_kdf_args(create, alg, vector->arg.prf);
case KDF_UNDEFINED:
@ -1235,6 +1236,7 @@ static bool kdf_vector_applies(key_derivation_function_t alg,
switch (alg)
{
case KDF_PRF:
case KDF_PRF_PLUS:
{
pseudo_random_function_t prf;

View File

@ -24,6 +24,7 @@
ENUM(key_derivation_function_names, KDF_UNDEFINED, KDF_PRF_PLUS,
"KDF_UNDEFINED",
"KDF_PRF",
"KDF_PRF_PLUS",
);
@ -34,6 +35,8 @@ bool kdf_has_fixed_output_length(key_derivation_function_t type)
{
switch (type)
{
case KDF_PRF:
return TRUE;
case KDF_PRF_PLUS:
case KDF_UNDEFINED:
break;

View File

@ -41,9 +41,16 @@ enum key_derivation_function_t {
KDF_UNDEFINED,
/**
* RFC 7296 prf, expects a pseudo_random_function_t in the constructor,
* parameters are KEY (DH secret) and SALT (nonces).
* Has a fixed output length.
*/
KDF_PRF,
/**
* RFC 7296 prf+, expects a pseudo_random_function_t in the constructor,
* parameters are KEY and SALT.
* parameters are KEY (SKEYSEED/SK_d) and SALT (nonces etc.).
*/
KDF_PRF_PLUS,
};