mirror of
https://github.com/openssl/openssl.git
synced 2026-06-06 20:18:09 +00:00
Reorganize the FIPS self-tests to group them by complexity. The new order groups tests so that more complex ones are executed before less complex one when all tests are run on_demand, improving the odds that lower level tests are implicitly executed as part of higher level tests and therefore reducing the amount of time spent running redundant tests. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> (Merged from https://github.com/openssl/openssl/pull/29222)
137 lines
3.5 KiB
C
137 lines
3.5 KiB
C
/*
|
|
* Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
* this file except in compliance with the License. You can obtain a copy
|
|
* in the file LICENSE in the source distribution or at
|
|
* https://www.openssl.org/source/license.html
|
|
*/
|
|
|
|
#ifndef OSSL_INTERNAL_FIPS_H
|
|
#define OSSL_INTERNAL_FIPS_H
|
|
#pragma once
|
|
|
|
#include <openssl/types.h>
|
|
|
|
#ifdef FIPS_MODULE
|
|
|
|
/* Return 1 if the FIPS self tests are running and 0 otherwise */
|
|
int ossl_fips_self_testing(void);
|
|
|
|
/*
|
|
* Each enum here corresponds to a test in the st_all_tests array
|
|
* in self_test_data.c, any change done here requires tests to be
|
|
* adjusted accordingly.
|
|
*/
|
|
typedef enum {
|
|
ST_ID_DRBG_HASH,
|
|
ST_ID_DRBG_CTR,
|
|
ST_ID_DRBG_HMAC,
|
|
ST_ID_CIPHER_AES_256_GCM,
|
|
ST_ID_CIPHER_AES_128_ECB,
|
|
#ifndef OPENSSL_NO_DES
|
|
ST_ID_CIPHER_DES_EDE3_ECB,
|
|
#endif
|
|
#ifndef OPENSSL_NO_ML_KEM
|
|
ST_ID_ASYM_KEYGEN_ML_KEM,
|
|
#endif
|
|
#ifndef OPENSSL_NO_ML_DSA
|
|
ST_ID_ASYM_KEYGEN_ML_DSA,
|
|
#endif
|
|
#ifndef OPENSSL_NO_SLH_DSA
|
|
ST_ID_ASYM_KEYGEN_SLH_DSA,
|
|
#endif
|
|
ST_ID_SIG_RSA_SHA256,
|
|
#ifndef OPENSSL_NO_EC
|
|
ST_ID_SIG_ECDSA_SHA256,
|
|
#ifndef OPENSSL_NO_HMAC_DRBG_KDF
|
|
ST_ID_SIG_DET_ECDSA_SHA256,
|
|
#endif
|
|
#ifndef OPENSSL_NO_EC2M
|
|
ST_ID_SIG_E2CM_ECDSA_SHA256,
|
|
#endif
|
|
#ifndef OPENSSL_NO_ECX
|
|
ST_ID_SIG_ED448,
|
|
ST_ID_SIG_ED25519,
|
|
#endif
|
|
#endif
|
|
#ifndef OPENSSL_NO_DSA
|
|
ST_ID_SIG_DSA_SHA256,
|
|
#endif
|
|
#ifndef OPENSSL_NO_ML_DSA
|
|
ST_ID_SIG_ML_DSA_65,
|
|
#endif
|
|
#ifndef OPENSSL_NO_SLH_DSA
|
|
ST_ID_SIG_SLH_DSA_SHA2_128F,
|
|
ST_ID_SIG_SLH_DSA_SHAKE_128F,
|
|
#endif /* OPENSSL_NO_SLH_DSA */
|
|
#ifndef OPENSSL_NO_LMS
|
|
ST_ID_SIG_LMS,
|
|
#endif
|
|
#ifndef OPENSSL_NO_ML_KEM
|
|
ST_ID_KEM_ML_KEM,
|
|
#endif
|
|
ST_ID_ASYM_CIPHER_RSA_ENC,
|
|
ST_ID_ASYM_CIPHER_RSA_DEC,
|
|
ST_ID_ASYM_CIPHER_RSA_DEC_CRT,
|
|
#ifndef OPENSSL_NO_DH
|
|
ST_ID_KA_DH,
|
|
#endif
|
|
#ifndef OPENSSL_NO_EC
|
|
ST_ID_KA_ECDH,
|
|
#endif
|
|
ST_ID_KDF_TLS13_EXTRACT,
|
|
ST_ID_KDF_TLS13_EXPAND,
|
|
ST_ID_KDF_TLS12_PRF,
|
|
ST_ID_KDF_PBKDF2,
|
|
#ifndef OPENSSL_NO_KBKDF
|
|
ST_ID_KDF_KBKDF,
|
|
ST_ID_KDF_KBKDF_KMAC,
|
|
#endif
|
|
ST_ID_KDF_HKDF,
|
|
#ifndef OPENSSL_NO_SNMPKDF
|
|
ST_ID_KDF_SNMPKDF,
|
|
#endif
|
|
#ifndef OPENSSL_NO_SRTPKDF
|
|
ST_ID_KDF_SRTPKDF,
|
|
#endif
|
|
#ifndef OPENSSL_NO_SSKDF
|
|
ST_ID_KDF_SSKDF,
|
|
#endif
|
|
#ifndef OPENSSL_NO_X963KDF
|
|
ST_ID_KDF_X963KDF,
|
|
#endif
|
|
#ifndef OPENSSL_NO_X942KDF
|
|
ST_ID_KDF_X942KDF,
|
|
#endif
|
|
ST_ID_MAC_HMAC,
|
|
ST_ID_DIGEST_SHA1,
|
|
ST_ID_DIGEST_SHA256,
|
|
ST_ID_DIGEST_SHA512,
|
|
ST_ID_DIGEST_SHA3_256,
|
|
ST_ID_MAX
|
|
} self_test_id_t;
|
|
|
|
int ossl_deferred_self_test(OSSL_LIB_CTX *libctx, self_test_id_t id);
|
|
int ossl_self_test_in_progress(self_test_id_t id);
|
|
|
|
/* Helper definitions to keep some of the ciphercommon.h macros simple */
|
|
#define ST_ID_CIPHER_aes ST_ID_CIPHER_AES_128_ECB
|
|
#define ST_ID_CIPHER_AES_128_CCM ST_ID_CIPHER_AES_128_ECB
|
|
#define ST_ID_CIPHER_AES_128_OCB ST_ID_CIPHER_AES_128_ECB
|
|
#define ST_ID_CIPHER_AES_128_WRP ST_ID_CIPHER_AES_128_ECB
|
|
#define ST_ID_CIPHER_AES_128_XTS ST_ID_CIPHER_AES_128_ECB
|
|
/* Helper definitions to keep some of the digestcommon.h macros simple */
|
|
#define ST_ID_DIGEST_sha1 ST_ID_DIGEST_SHA1
|
|
#define ST_ID_DIGEST_sha224 ST_ID_DIGEST_SHA256
|
|
#define ST_ID_DIGEST_sha256 ST_ID_DIGEST_SHA256
|
|
#define ST_ID_DIGEST_sha256_192_internal ST_ID_DIGEST_SHA256
|
|
#define ST_ID_DIGEST_sha384 ST_ID_DIGEST_SHA512
|
|
#define ST_ID_DIGEST_sha512 ST_ID_DIGEST_SHA512
|
|
#define ST_ID_DIGEST_sha512_224 ST_ID_DIGEST_SHA512
|
|
#define ST_ID_DIGEST_sha512_256 ST_ID_DIGEST_SHA512
|
|
|
|
#endif /* FIPS_MODULE */
|
|
|
|
#endif
|