|
30 | 30 | #include <wolfprovider/alg_funcs.h> |
31 | 31 | #include <wolfprovider/internal.h> |
32 | 32 |
|
| 33 | +/** |
| 34 | + * Define WP_HKDF_NULL_SALT_ALLOWED for OpenSSL versions that allow NULL salt in HKDF. |
| 35 | + * Behavior changed at different patch versions for each minor version. |
| 36 | + */ |
| 37 | +#if OPENSSL_VERSION_MAJOR == 3 |
| 38 | + #if OPENSSL_VERSION_MINOR == 0 |
| 39 | + #if OPENSSL_VERSION_PATCH <= 16 |
| 40 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 41 | + #endif |
| 42 | + #elif OPENSSL_VERSION_MINOR == 1 |
| 43 | + #if OPENSSL_VERSION_PATCH <= 8 |
| 44 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 45 | + #endif |
| 46 | + #elif OPENSSL_VERSION_MINOR == 2 |
| 47 | + #if OPENSSL_VERSION_PATCH <= 4 |
| 48 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 49 | + #endif |
| 50 | + #elif OPENSSL_VERSION_MINOR == 3 |
| 51 | + #if OPENSSL_VERSION_PATCH <= 3 |
| 52 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 53 | + #endif |
| 54 | + #elif OPENSSL_VERSION_MINOR == 4 |
| 55 | + #if OPENSSL_VERSION_PATCH <= 1 |
| 56 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 57 | + #endif |
| 58 | + #elif OPENSSL_VERSION_MINOR == 5 |
| 59 | + #if OPENSSL_VERSION_PATCH <= 0 |
| 60 | + #define WP_HKDF_NULL_SALT_ALLOWED |
| 61 | + #endif |
| 62 | + #endif |
| 63 | +#endif |
| 64 | + |
33 | 65 | /** Base set of parameters settable against context. */ |
34 | 66 | #define WP_HKDF_BASE_SETTABLES \ |
35 | 67 | OSSL_PARAM_utf8_string(OSSL_KDF_PARAM_MODE, NULL, 0), \ |
@@ -330,7 +362,11 @@ static int wp_hkdf_base_set_ctx_params(wp_HkdfCtx* ctx, |
330 | 362 | } |
331 | 363 | if (ok) { |
332 | 364 | p = OSSL_PARAM_locate((OSSL_PARAM *)params, OSSL_KDF_PARAM_SALT); |
| 365 | +#ifdef WP_HKDF_NULL_SALT_ALLOWED |
333 | 366 | if ((p != NULL) && (p->data != NULL)) { |
| 367 | +#else |
| 368 | + if (p != NULL) { |
| 369 | +#endif |
334 | 370 | OPENSSL_free(ctx->salt); |
335 | 371 | ctx->salt = NULL; |
336 | 372 | if (!OSSL_PARAM_get_octet_string( |
|
0 commit comments