crypto: Add new KDF type for IKEv2 PRFs

This commit is contained in:
Tobias Brunner
2022-04-14 19:02:56 +02:00
parent 7bde56a9bc
commit 37dbc87960
3 changed files with 13 additions and 1 deletions
+2
View File
@@ -1217,6 +1217,7 @@ static kdf_t *create_kdf_vector(kdf_constructor_t create,
{ {
switch (alg) switch (alg)
{ {
case KDF_PRF:
case KDF_PRF_PLUS: case KDF_PRF_PLUS:
return create_kdf_args(create, alg, vector->arg.prf); return create_kdf_args(create, alg, vector->arg.prf);
case KDF_UNDEFINED: case KDF_UNDEFINED:
@@ -1235,6 +1236,7 @@ static bool kdf_vector_applies(key_derivation_function_t alg,
switch (alg) switch (alg)
{ {
case KDF_PRF:
case KDF_PRF_PLUS: case KDF_PRF_PLUS:
{ {
pseudo_random_function_t prf; pseudo_random_function_t prf;
+3
View File
@@ -24,6 +24,7 @@
ENUM(key_derivation_function_names, KDF_UNDEFINED, KDF_PRF_PLUS, ENUM(key_derivation_function_names, KDF_UNDEFINED, KDF_PRF_PLUS,
"KDF_UNDEFINED", "KDF_UNDEFINED",
"KDF_PRF",
"KDF_PRF_PLUS", "KDF_PRF_PLUS",
); );
@@ -34,6 +35,8 @@ bool kdf_has_fixed_output_length(key_derivation_function_t type)
{ {
switch (type) switch (type)
{ {
case KDF_PRF:
return TRUE;
case KDF_PRF_PLUS: case KDF_PRF_PLUS:
case KDF_UNDEFINED: case KDF_UNDEFINED:
break; break;
+8 -1
View File
@@ -41,9 +41,16 @@ enum key_derivation_function_t {
KDF_UNDEFINED, 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, * 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, KDF_PRF_PLUS,
}; };