diff --git a/.wolfssl_known_macro_extras b/.wolfssl_known_macro_extras index 11c6b5d4b2b..d04d5d5d127 100644 --- a/.wolfssl_known_macro_extras +++ b/.wolfssl_known_macro_extras @@ -600,6 +600,7 @@ WC_DILITHIUM_CACHE_PUB_VECTORS WC_DILITHIUM_FIXED_ARRAY WC_DISABLE_RADIX_ZERO_PAD WC_ECC_NONBLOCK_ONLY +WC_FLAG_DONT_USE_AESNI WC_KDF_NIST_SP_800_56C WC_LMS_FULL_HASH WC_NO_RNG_SIMPLE @@ -617,7 +618,7 @@ WC_SHA512 WC_SKIP_INCLUDED_C_FILES WC_SSIZE_TYPE WC_STRICT_SIG -WC_WANT_FLAG_DONT_USE_AESNI +WC_WANT_FLAG_DONT_USE_VECTOR_OPS WC_XMSS_FULL_HASH WIFIESPAT WIFI_101 diff --git a/linuxkm/linuxkm_wc_port.h b/linuxkm/linuxkm_wc_port.h index e2972eca2d5..aa2f25c6d2a 100644 --- a/linuxkm/linuxkm_wc_port.h +++ b/linuxkm/linuxkm_wc_port.h @@ -147,8 +147,8 @@ #endif #define WOLFSSL_LINUXKM_SIMD #define WOLFSSL_LINUXKM_SIMD_X86 - #ifndef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS - #define WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + #ifndef WOLFSSL_USE_SAVE_VECTOR_REGISTERS + #define WOLFSSL_USE_SAVE_VECTOR_REGISTERS #endif #elif defined(WOLFSSL_ARMASM) || defined(WOLFSSL_SP_ARM32_ASM) || \ defined(WOLFSSL_SP_ARM64_ASM) || defined(WOLFSSL_SP_ARM_THUMB_ASM) ||\ @@ -158,8 +158,8 @@ #endif #define WOLFSSL_LINUXKM_SIMD #define WOLFSSL_LINUXKM_SIMD_ARM - #ifndef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS - #define WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + #ifndef WOLFSSL_USE_SAVE_VECTOR_REGISTERS + #define WOLFSSL_USE_SAVE_VECTOR_REGISTERS #endif #endif @@ -469,11 +469,11 @@ * SAVE_VECTOR_REGISTERS(). */ #if defined(WOLFSSL_LINUXKM_BENCHMARKS) && \ - !defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) - #define WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + !defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) + #define WOLFSSL_USE_SAVE_VECTOR_REGISTERS #endif - #if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && \ + #if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && \ defined(CONFIG_X86) extern __must_check int allocate_wolfcrypt_linuxkm_fpu_states(void); @@ -526,7 +526,7 @@ #define REENABLE_VECTOR_REGISTERS() wc_restore_vector_registers_x86(WC_SVR_FLAG_INHIBIT) #endif - #elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && (defined(CONFIG_ARM) || defined(CONFIG_ARM64)) + #elif defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && (defined(CONFIG_ARM) || defined(CONFIG_ARM64)) #error kernel module ARM SIMD is not yet tested or usable. @@ -562,9 +562,9 @@ #define RESTORE_VECTOR_REGISTERS() restore_vector_registers_arm() #endif - #elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. - #endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ + #elif defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. + #endif /* WOLFSSL_USE_SAVE_VECTOR_REGISTERS */ _Pragma("GCC diagnostic pop"); @@ -817,7 +817,7 @@ struct task_struct *(*get_current)(void); - #ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS #ifdef CONFIG_X86 typeof(allocate_wolfcrypt_linuxkm_fpu_states) *allocate_wolfcrypt_linuxkm_fpu_states; @@ -826,10 +826,10 @@ typeof(wc_restore_vector_registers_x86) *wc_restore_vector_registers_x86; typeof(wc_save_vector_registers_x86) *wc_save_vector_registers_x86; #else /* !CONFIG_X86 */ - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. #endif /* arch */ - #endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ + #endif /* WOLFSSL_USE_SAVE_VECTOR_REGISTERS */ typeof(__mutex_init) *__mutex_init; #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) @@ -1113,15 +1113,15 @@ #undef get_current #define get_current WC_LKM_INDIRECT_SYM(get_current) - #if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) + #if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) #define allocate_wolfcrypt_linuxkm_fpu_states WC_LKM_INDIRECT_SYM(allocate_wolfcrypt_linuxkm_fpu_states) #define wc_can_save_vector_registers_x86 WC_LKM_INDIRECT_SYM(wc_can_save_vector_registers_x86) #define free_wolfcrypt_linuxkm_fpu_states WC_LKM_INDIRECT_SYM(free_wolfcrypt_linuxkm_fpu_states) #define wc_restore_vector_registers_x86 WC_LKM_INDIRECT_SYM(wc_restore_vector_registers_x86) #define wc_save_vector_registers_x86 WC_LKM_INDIRECT_SYM(wc_save_vector_registers_x86) - #elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. - #endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ + #elif defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. + #endif /* WOLFSSL_USE_SAVE_VECTOR_REGISTERS */ #define __mutex_init WC_LKM_INDIRECT_SYM(__mutex_init) #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) @@ -1217,11 +1217,11 @@ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)) || \ (defined(RHEL_MAJOR) && \ ((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5)))) - #define lkm_printf(format, args...) _printk(KERN_INFO "wolfssl: %s(): " format, __func__, ## args) + #define wc_km_printf(format, args...) _printk(KERN_INFO "wolfssl: %s(): " format, __func__, ## args) #else - #define lkm_printf(format, args...) printk(KERN_INFO "wolfssl: %s(): " format, __func__, ## args) + #define wc_km_printf(format, args...) printk(KERN_INFO "wolfssl: %s(): " format, __func__, ## args) #endif - #define printf(...) lkm_printf(__VA_ARGS__) + #define printf(...) wc_km_printf(__VA_ARGS__) #ifdef HAVE_FIPS extern void fipsEntry(void); @@ -1250,7 +1250,7 @@ #if !defined(BUILDING_WOLFSSL) /* some caller code needs these. */ - #if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) + #if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) #if defined(CONFIG_X86) WOLFSSL_API __must_check int wc_can_save_vector_registers_x86(void); WOLFSSL_API __must_check int wc_save_vector_registers_x86(enum wc_svr_flags flags); @@ -1262,9 +1262,9 @@ #define REENABLE_VECTOR_REGISTERS() wc_restore_vector_registers_x86(WC_SVR_FLAG_INHIBIT) #endif #else /* !CONFIG_X86 */ - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS is set for an unimplemented architecture. #endif /* !CONFIG_X86 */ - #endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ + #endif /* WOLFSSL_USE_SAVE_VECTOR_REGISTERS */ #endif /* !BUILDING_WOLFSSL */ /* Copied from wc_port.h: For FIPS keep the function names the same */ diff --git a/linuxkm/lkcapi_aes_glue.c b/linuxkm/lkcapi_aes_glue.c index 398f428d00b..7cf99b07b30 100644 --- a/linuxkm/lkcapi_aes_glue.c +++ b/linuxkm/lkcapi_aes_glue.c @@ -70,8 +70,13 @@ #include -#if defined(WC_LINUXKM_C_FALLBACK_IN_SHIMS) && !defined(WC_FLAG_DONT_USE_AESNI) - #error WC_LINUXKM_C_FALLBACK_IN_SHIMS is defined but WC_FLAG_DONT_USE_AESNI is missing. +#if defined(WC_FLAG_DONT_USE_AESNI) && !defined(WC_FLAG_DONT_USE_VECTOR_OPS) + /* backward compat */ + #define WC_FLAG_DONT_USE_VECTOR_OPS WC_FLAG_DONT_USE_AESNI +#endif + +#if defined(WC_LINUXKM_C_FALLBACK_IN_SHIMS) && !defined(WC_FLAG_DONT_USE_VECTOR_OPS) + #error WC_LINUXKM_C_FALLBACK_IN_SHIMS is defined but WC_FLAG_DONT_USE_VECTOR_OPS is missing. #endif /* note the FIPS code will be returned on failure even in non-FIPS builds. */ @@ -500,7 +505,7 @@ static int km_AesSetKeyCommon(struct km_AesCtx * ctx, const u8 *in_key, #ifdef WC_LINUXKM_C_FALLBACK_IN_SHIMS if (ctx->aes_encrypt->use_aesni) { - ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_AESNI; + ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_VECTOR_OPS; err = wc_AesSetKey(ctx->aes_encrypt_C, in_key, key_len, NULL, AES_ENCRYPTION); @@ -516,7 +521,7 @@ static int km_AesSetKeyCommon(struct km_AesCtx * ctx, const u8 *in_key, } if (ctx->aes_decrypt_C && ctx->aes_decrypt->use_aesni) { - ctx->aes_decrypt_C->use_aesni = WC_FLAG_DONT_USE_AESNI; + ctx->aes_decrypt_C->use_aesni = WC_FLAG_DONT_USE_VECTOR_OPS; err = wc_AesSetKey(ctx->aes_decrypt_C, in_key, key_len, NULL, AES_DECRYPTION); @@ -927,7 +932,7 @@ static int km_AesGcmSetKey(struct crypto_aead *tfm, const u8 *in_key, #ifdef WC_LINUXKM_C_FALLBACK_IN_SHIMS if (ctx->aes_encrypt->use_aesni) { - ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_AESNI; + ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_VECTOR_OPS; err = wc_AesGcmSetKey(ctx->aes_encrypt_C, in_key, key_len); @@ -975,7 +980,7 @@ static int km_AesGcmSetKey_Rfc4106(struct crypto_aead *tfm, const u8 *in_key, #ifdef WC_LINUXKM_C_FALLBACK_IN_SHIMS if (ctx->aes_encrypt->use_aesni) { - ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_AESNI; + ctx->aes_encrypt_C->use_aesni = WC_FLAG_DONT_USE_VECTOR_OPS; err = wc_AesGcmSetKey(ctx->aes_encrypt_C, in_key, key_len); @@ -1612,7 +1617,7 @@ static int km_AesXtsSetKey(struct crypto_skcipher *tfm, const u8 *in_key, } /* It's possible to set ctx->aesXts->{tweak,aes,aes_decrypt}.use_aesni to - * WC_FLAG_DONT_USE_AESNI here, for WC_LINUXKM_C_FALLBACK_IN_SHIMS in + * WC_FLAG_DONT_USE_VECTOR_OPS here, for WC_LINUXKM_C_FALLBACK_IN_SHIMS in * AES-XTS, but we can use the WC_C_DYNAMIC_FALLBACK mechanism * unconditionally because there's no AES-XTS in Cert 4718. */ diff --git a/linuxkm/module_hooks.c b/linuxkm/module_hooks.c index 1d9c27339e9..d61e202dcfe 100644 --- a/linuxkm/module_hooks.c +++ b/linuxkm/module_hooks.c @@ -366,7 +366,7 @@ int wc_linuxkm_GenerateSeed_IntelRD(struct OS_Seed* os, byte* output, word32 sz) #endif /* WC_LINUXKM_RDSEED_IN_GLUE_LAYER */ -#if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) #include "linuxkm/x86_vector_register_glue.c" #endif @@ -1025,15 +1025,15 @@ static int set_up_wolfssl_linuxkm_pie_redirect_table(void) { wolfssl_linuxkm_pie_redirect_table.get_current = my_get_current_thread; -#if defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(CONFIG_X86) wolfssl_linuxkm_pie_redirect_table.allocate_wolfcrypt_linuxkm_fpu_states = allocate_wolfcrypt_linuxkm_fpu_states; wolfssl_linuxkm_pie_redirect_table.wc_can_save_vector_registers_x86 = wc_can_save_vector_registers_x86; wolfssl_linuxkm_pie_redirect_table.free_wolfcrypt_linuxkm_fpu_states = free_wolfcrypt_linuxkm_fpu_states; wolfssl_linuxkm_pie_redirect_table.wc_restore_vector_registers_x86 = wc_restore_vector_registers_x86; wolfssl_linuxkm_pie_redirect_table.wc_save_vector_registers_x86 = wc_save_vector_registers_x86; -#elif defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS is set for an unsupported architecture. -#endif /* WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS */ +#elif defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS is set for an unsupported architecture. +#endif /* WOLFSSL_USE_SAVE_VECTOR_REGISTERS */ wolfssl_linuxkm_pie_redirect_table.__mutex_init = __mutex_init; #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) diff --git a/linuxkm/x86_vector_register_glue.c b/linuxkm/x86_vector_register_glue.c index f40357d70fa..0bf01b42ae7 100644 --- a/linuxkm/x86_vector_register_glue.c +++ b/linuxkm/x86_vector_register_glue.c @@ -23,7 +23,7 @@ /* included by linuxkm/module_hooks.c */ #ifndef WC_SKIP_INCLUDED_C_FILES -#if !defined(WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS) || !defined(CONFIG_X86) +#if !defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) || !defined(CONFIG_X86) #error x86_vector_register_glue.c included in non-vectorized/non-x86 project. #endif @@ -39,7 +39,7 @@ * checks in __kernel_fpu_begin(), and lacks TIF_NEED_FPU_LOAD. */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)) - #error WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS on x86 requires kernel 5.4.0 or higher. + #error WOLFSSL_USE_SAVE_VECTOR_REGISTERS on x86 requires kernel 5.4.0 or higher. #endif static unsigned int wc_linuxkm_fpu_states_n_tracked = 0; diff --git a/src/crl.c b/src/crl.c index 96524ee4d57..576fe2e950a 100644 --- a/src/crl.c +++ b/src/crl.c @@ -41,7 +41,7 @@ CRL Options: #include #include -#ifndef WOLFSSL_LINUXKM +#ifndef NO_STRING_H #include #endif diff --git a/src/dtls13.c b/src/dtls13.c index c4e2b61d958..399fc7a615c 100644 --- a/src/dtls13.c +++ b/src/dtls13.c @@ -255,7 +255,7 @@ static int Dtls13GetRnMask(WOLFSSL* ssl, const byte* ciphertext, byte* mask, return BAD_STATE_E; #if !defined(HAVE_SELFTEST) && \ (!defined(HAVE_FIPS) || (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3)) \ - || defined(WOLFSSL_LINUXKM)) + || defined(WOLFSSL_KERNEL_MODE)) return wc_AesEncryptDirect(c->aes, mask, ciphertext); #else wc_AesEncryptDirect(c->aes, mask, ciphertext); diff --git a/src/ssl_crypto.c b/src/ssl_crypto.c index 6ba73ab25d5..9a64e36807a 100644 --- a/src/ssl_crypto.c +++ b/src/ssl_crypto.c @@ -3102,7 +3102,7 @@ void wolfSSL_AES_encrypt(const unsigned char* input, unsigned char* output, else #if !defined(HAVE_SELFTEST) && \ (!defined(HAVE_FIPS) || (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3)) \ - || defined(WOLFSSL_LINUXKM)) + || defined(WOLFSSL_KERNEL_MODE)) /* Encrypt a block with wolfCrypt AES. */ if (wc_AesEncryptDirect((Aes*)key, output, input) != 0) { WOLFSSL_MSG("wc_AesEncryptDirect failed"); diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 09879d6fe78..1642489b4e9 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2343,7 +2343,7 @@ static WC_INLINE void bench_stats_start(int* count, double* start) #endif } -#ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS +#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS #define bench_stats_start(count, start) do { \ SAVE_VECTOR_REGISTERS(pr_err( \ "ERROR: SAVE_VECTOR_REGISTERS failed for benchmark run."); \ @@ -2746,7 +2746,7 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, (void)useDeviceID; (void)ret; -#ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS +#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS RESTORE_VECTOR_REGISTERS(); #elif defined(WOLFSSL_LINUXKM) kernel_fpu_end(); @@ -3009,7 +3009,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, (void)useDeviceID; (void)ret; -#ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS +#ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS RESTORE_VECTOR_REGISTERS(); #elif defined(WOLFSSL_LINUXKM) kernel_fpu_end(); @@ -5021,7 +5021,7 @@ static void bench_aesecb_internal(int useDeviceID, if (bench_async_check(&ret, BENCH_ASYNC_GET_DEV(enc[i]), 0, ×, outer_loop_limit, &pending)) { #ifdef HAVE_FIPS - #if defined(WOLFSSL_LINUXKM) || FIPS_VERSION_GE(6, 0) + #if defined(WOLFSSL_KERNEL_MODE) || FIPS_VERSION_GE(6, 0) ret = wc_AesEncryptDirect(enc[i], bench_cipher, bench_plain); if (ret != 0) goto exit_aes_enc; @@ -5078,7 +5078,7 @@ static void bench_aesecb_internal(int useDeviceID, if (bench_async_check(&ret, BENCH_ASYNC_GET_DEV(enc[i]), 0, ×, outer_loop_limit, &pending)) { #ifdef HAVE_FIPS - #if defined(WOLFSSL_LINUXKM) || FIPS_VERSION_GE(6, 0) + #if defined(WOLFSSL_KERNEL_MODE) || FIPS_VERSION_GE(6, 0) ret = wc_AesDecryptDirect(enc[i], bench_plain, bench_cipher); if (ret != 0) goto exit_aes_dec; diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index e9be2c2c212..57c1633e3b5 100644 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -4682,12 +4682,12 @@ static void AesSetKey_C(Aes* aes, const byte* key, word32 keySz, int dir) * AES-NI is disabled, and a nonzero value if it's enabled. * * An additional, optional semantic is available via - * WC_FLAG_DONT_USE_AESNI, and is used in some kernel module builds to - * let the caller inhibit AES-NI. When this macro is defined, + * WC_FLAG_DONT_USE_VECTOR_OPS, and is used in some kernel module builds + * to let the caller inhibit AES-NI. When this macro is defined, * wc_AesInit() before wc_AesSetKey() is imperative, to avoid a read of * uninitialized data in aes->use_aesni. That's why support for - * WC_FLAG_DONT_USE_AESNI must remain optional -- wc_AesInit() was only - * added in release 3.11.0, so legacy applications inevitably call + * WC_FLAG_DONT_USE_VECTOR_OPS must remain optional -- wc_AesInit() was + * only added in release 3.11.0, so legacy applications inevitably call * wc_AesSetKey() on uninitialized Aes contexts. This must continue to * function correctly with default build settings. */ @@ -4697,25 +4697,28 @@ static void AesSetKey_C(Aes* aes, const byte* key, word32 keySz, int dir) checkedAESNI = 1; } if (haveAESNI -#if defined(WC_FLAG_DONT_USE_AESNI) && !defined(WC_C_DYNAMIC_FALLBACK) - && (aes->use_aesni != WC_FLAG_DONT_USE_AESNI) +#if defined(WC_FLAG_DONT_USE_VECTOR_OPS) && !defined(WC_C_DYNAMIC_FALLBACK) + && (aes->use_aesni != WC_FLAG_DONT_USE_VECTOR_OPS) #endif ) { -#if defined(WC_FLAG_DONT_USE_AESNI) - if (aes->use_aesni == WC_FLAG_DONT_USE_AESNI) { +#if defined(WC_FLAG_DONT_USE_VECTOR_OPS) + if (aes->use_aesni == WC_FLAG_DONT_USE_VECTOR_OPS) { aes->use_aesni = 0; return 0; } #endif aes->use_aesni = 0; - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_KERNEL_MODE /* runtime alignment check */ if ((wc_ptr_t)&aes->key & (wc_ptr_t)0xf) { - return BAD_ALIGN_E; + ret = BAD_ALIGN_E; + } + else + #endif /* WOLFSSL_KERNEL_MODE */ + { + ret = SAVE_VECTOR_REGISTERS2(); } - #endif /* WOLFSSL_LINUXKM */ - ret = SAVE_VECTOR_REGISTERS2(); if (ret == 0) { if (dir == AES_ENCRYPTION) ret = AES_set_encrypt_key_AESNI(userKey, (int)keylen * 8, aes); diff --git a/wolfcrypt/src/curve25519.c b/wolfcrypt/src/curve25519.c index 41493ce9541..cbd15ee0948 100644 --- a/wolfcrypt/src/curve25519.c +++ b/wolfcrypt/src/curve25519.c @@ -57,7 +57,7 @@ #endif #endif -#if defined(WOLFSSL_LINUXKM) && !defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(USE_INTEL_SPEEDUP) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/dh.c b/wolfcrypt/src/dh.c index e41dd73f47a..78a3d7af5d5 100644 --- a/wolfcrypt/src/dh.c +++ b/wolfcrypt/src/dh.c @@ -57,7 +57,7 @@ } #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/dsa.c b/wolfcrypt/src/dsa.c index 2bbf4dbda77..13cc29f6aa4 100644 --- a/wolfcrypt/src/dsa.c +++ b/wolfcrypt/src/dsa.c @@ -35,7 +35,7 @@ #include #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/ecc.c b/wolfcrypt/src/ecc.c index b90883029ef..276dee57105 100644 --- a/wolfcrypt/src/ecc.c +++ b/wolfcrypt/src/ecc.c @@ -221,7 +221,7 @@ ECC Curve Sizes: #include #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/eccsi.c b/wolfcrypt/src/eccsi.c index db3ea2f56c4..d45f26a38a2 100644 --- a/wolfcrypt/src/eccsi.c +++ b/wolfcrypt/src/eccsi.c @@ -36,7 +36,7 @@ #include #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/memory.c b/wolfcrypt/src/memory.c index c0b7ef0a026..b8570f3f67a 100644 --- a/wolfcrypt/src/memory.c +++ b/wolfcrypt/src/memory.c @@ -22,7 +22,9 @@ /* inhibit "#undef current" in linuxkm_wc_port.h, included from wc_port.h, * because needed in linuxkm_memory.c, included below. */ -#define WOLFSSL_LINUXKM_NEED_LINUX_CURRENT +#ifdef WOLFSSL_LINUXKM + #define WOLFSSL_LINUXKM_NEED_LINUX_CURRENT +#endif #include diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 371fe0c1d93..b2cdf26df09 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -373,7 +373,7 @@ static int Hash_df(DRBG_internal* drbg, byte* out, word32 outSz, byte type, #else wc_Sha256 sha[1]; #endif -#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_LINUXKM) +#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_KERNEL_MODE) byte* digest; #else byte digest[WC_SHA256_DIGEST_SIZE]; @@ -383,7 +383,7 @@ static int Hash_df(DRBG_internal* drbg, byte* out, word32 outSz, byte type, return DRBG_FAILURE; } -#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_LINUXKM) +#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_KERNEL_MODE) digest = (byte*)XMALLOC(WC_SHA256_DIGEST_SIZE, drbg->heap, DYNAMIC_TYPE_DIGEST); if (digest == NULL) @@ -444,7 +444,7 @@ static int Hash_df(DRBG_internal* drbg, byte* out, word32 outSz, byte type, ForceZero(digest, WC_SHA256_DIGEST_SIZE); -#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_LINUXKM) +#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_KERNEL_MODE) XFREE(digest, drbg->heap, DYNAMIC_TYPE_DIGEST); #endif @@ -660,7 +660,7 @@ static int Hash_DRBG_Generate(DRBG_internal* drbg, byte* out, word32 outSz) return DRBG_NEED_RESEED; } else { - #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_LINUXKM) + #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_KERNEL_MODE) byte* digest = (byte*)XMALLOC(WC_SHA256_DIGEST_SIZE, drbg->heap, DYNAMIC_TYPE_DIGEST); if (digest == NULL) @@ -709,7 +709,7 @@ static int Hash_DRBG_Generate(DRBG_internal* drbg, byte* out, word32 outSz) drbg->reseedCtr++; } ForceZero(digest, WC_SHA256_DIGEST_SIZE); - #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_LINUXKM) + #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_KERNEL_MODE) XFREE(digest, drbg->heap, DYNAMIC_TYPE_DIGEST); #endif } diff --git a/wolfcrypt/src/rsa.c b/wolfcrypt/src/rsa.c index 759c795ffcb..cb7d3aabbcc 100644 --- a/wolfcrypt/src/rsa.c +++ b/wolfcrypt/src/rsa.c @@ -57,7 +57,7 @@ RSA keys can be used to encrypt, decrypt, sign and verify data. #include #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/sakke.c b/wolfcrypt/src/sakke.c index 35678ddacf8..155c8c5d424 100644 --- a/wolfcrypt/src/sakke.c +++ b/wolfcrypt/src/sakke.c @@ -37,7 +37,7 @@ #include #include -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/sha256.c b/wolfcrypt/src/sha256.c index 6fc71d9a529..07a5e29c2c6 100644 --- a/wolfcrypt/src/sha256.c +++ b/wolfcrypt/src/sha256.c @@ -566,12 +566,12 @@ static int InitSha256(wc_Sha256* sha256) static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) { int ret; - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha256_is_vectorized) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif ret = (*Transform_Sha256_p)(S, D); - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha256_is_vectorized) RESTORE_VECTOR_REGISTERS(); #endif @@ -581,12 +581,12 @@ static int InitSha256(wc_Sha256* sha256) static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) { int ret; - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha256_is_vectorized) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif ret = (*Transform_Sha256_Len_p)(S, D, L); - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha256_is_vectorized) RESTORE_VECTOR_REGISTERS(); #endif diff --git a/wolfcrypt/src/sha3.c b/wolfcrypt/src/sha3.c index 7ed2272a234..03a3a2c087e 100644 --- a/wolfcrypt/src/sha3.c +++ b/wolfcrypt/src/sha3.c @@ -684,7 +684,7 @@ static int Sha3Update(wc_Sha3* sha3, const byte* data, word32 len, byte p) word32 i; word32 blocks; -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) { SAVE_VECTOR_REGISTERS(return _svr_ret;); } @@ -745,7 +745,7 @@ static int Sha3Update(wc_Sha3* sha3, const byte* data, word32 len, byte p) len -= p * 8U; data += p * 8U; } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) { RESTORE_VECTOR_REGISTERS(); } @@ -800,7 +800,7 @@ static int Sha3Final(wc_Sha3* sha3, byte padChar, byte* hash, byte p, word32 l) } #endif -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif @@ -828,7 +828,7 @@ static int Sha3Final(wc_Sha3* sha3, byte padChar, byte* hash, byte p, word32 l) #endif XMEMCPY(hash + j, sha3->s, l - j); } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) { RESTORE_VECTOR_REGISTERS(); } @@ -1539,7 +1539,7 @@ int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt) if ((shake == NULL) || (out == NULL && blockCnt != 0)) { return BAD_FUNC_ARG; } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif @@ -1556,7 +1556,7 @@ int wc_Shake128_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt) #endif out += WC_SHA3_128_COUNT * 8; } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) RESTORE_VECTOR_REGISTERS(); #endif @@ -1684,7 +1684,7 @@ int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt) if ((shake == NULL) || (out == NULL && blockCnt != 0)) { return BAD_FUNC_ARG; } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif @@ -1701,7 +1701,7 @@ int wc_Shake256_SqueezeBlocks(wc_Shake* shake, byte* out, word32 blockCnt) #endif out += WC_SHA3_256_COUNT * 8; } -#if defined(WOLFSSL_LINUXKM) && defined(USE_INTEL_SPEEDUP) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(USE_INTEL_SPEEDUP) if (SHA3_BLOCK == sha3_block_avx2) RESTORE_VECTOR_REGISTERS(); #endif diff --git a/wolfcrypt/src/sha512.c b/wolfcrypt/src/sha512.c index c2537c7a42d..0454ab62f69 100644 --- a/wolfcrypt/src/sha512.c +++ b/wolfcrypt/src/sha512.c @@ -682,12 +682,12 @@ static int InitSha512_256(wc_Sha512* sha512) static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) { int ret; - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha512_is_vectorized) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif ret = (*Transform_Sha512_p)(sha512); - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha512_is_vectorized) RESTORE_VECTOR_REGISTERS(); #endif @@ -695,12 +695,12 @@ static int InitSha512_256(wc_Sha512* sha512) } static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) { int ret; - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha512_is_vectorized) SAVE_VECTOR_REGISTERS(return _svr_ret;); #endif ret = (*Transform_Sha512_Len_p)(sha512, len); - #ifdef WOLFSSL_LINUXKM + #ifdef WOLFSSL_USE_SAVE_VECTOR_REGISTERS if (Transform_Sha512_is_vectorized) RESTORE_VECTOR_REGISTERS(); #endif diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index 5a8222a5226..54bde90868d 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -108,7 +108,7 @@ This library provides single precision (SP) integer math functions. PRAGMA_GCC("GCC diagnostic ignored \"-Warray-bounds\"") #endif -#if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_SP_ASM) +#if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && !defined(WOLFSSL_SP_ASM) /* force off unneeded vector register save/restore. */ #undef SAVE_VECTOR_REGISTERS #define SAVE_VECTOR_REGISTERS(fail_clause) SAVE_NO_VECTOR_REGISTERS(fail_clause) diff --git a/wolfcrypt/src/wc_port.c b/wolfcrypt/src/wc_port.c index 4813f2dc09c..0b328408baa 100644 --- a/wolfcrypt/src/wc_port.c +++ b/wolfcrypt/src/wc_port.c @@ -241,7 +241,7 @@ int wolfCrypt_Init(void) } #endif - #ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + #if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(WOLFSSL_LINUXKM) ret = allocate_wolfcrypt_linuxkm_fpu_states(); if (ret != 0) { WOLFSSL_MSG("allocate_wolfcrypt_linuxkm_fpu_states failed"); @@ -540,7 +540,7 @@ int wolfCrypt_Cleanup(void) rpcmem_deinit(); wolfSSL_CleanupHandle(); #endif - #ifdef WOLFSSL_LINUXKM_USE_SAVE_VECTOR_REGISTERS + #if defined(WOLFSSL_USE_SAVE_VECTOR_REGISTERS) && defined(WOLFSSL_LINUXKM) free_wolfcrypt_linuxkm_fpu_states(); #endif diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 5b15e4c5dd7..7d1be10722b 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -65,7 +65,8 @@ #endif #if defined(WC_ECC_NONBLOCK) && defined(WOLFSSL_PUBLIC_MP) && \ - defined(HAVE_ECC_SIGN) && defined(HAVE_ECC_VERIFY) + defined(HAVE_ECC_SIGN) && defined(HAVE_ECC_VERIFY) && \ + !defined(NO_STDINT_H) #include #endif @@ -284,11 +285,11 @@ const byte const_byte_array[] = "A+Gd\0\0\0"; #ifdef XMALLOC_USER #include /* we're using malloc / free direct here */ #endif - #if !defined(STRING_USER) && !defined(WOLFSSL_LINUXKM) + #if !defined(STRING_USER) && !defined(NO_STDIO_FILESYSTEM) #include #endif - #if defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_LINUXKM_VERBOSE_DEBUG) + #if defined(WOLFSSL_KERNEL_MODE) && !defined(WOLFSSL_KERNEL_VERBOSE_DEBUG) #undef printf #define printf(...) ({}) #endif @@ -890,8 +891,8 @@ void wc_test_render_error_message(const char* msg, wc_test_ret_t es) (void)msg; (void)es; -#ifdef WOLFSSL_LINUXKM - #define err_sys_printf lkm_printf +#ifdef WOLFSSL_KERNEL_MODE + #define err_sys_printf wc_km_printf #else #define err_sys_printf printf #endif @@ -972,7 +973,7 @@ static wc_test_ret_t err_sys(const char* msg, wc_test_ret_t es) { wc_test_render_error_message(msg, es); print_fiducials(); -#ifdef WOLFSSL_LINUXKM +#ifdef WOLFSSL_KERNEL_MODE EXIT_TEST(es); #else EXIT_TEST(-1); @@ -988,7 +989,10 @@ typedef struct func_args { } func_args; #endif /* !HAVE_WOLFCRYPT_TEST_OPTIONS */ -#if defined(HAVE_FIPS) && !defined(WOLFSSL_LINUXKM) +/* Kernel modules implement and install their own FIPS callback with similar + * functionality. + */ +#if defined(HAVE_FIPS) && !defined(WOLFSSL_KERNEL_MODE) static void myFipsCb(int ok, int err, const char* hash) { printf("in my Fips callback, ok = %d, err = %d\n", ok, err); @@ -1000,7 +1004,7 @@ static void myFipsCb(int ok, int err, const char* hash) printf("into verifyCore[] in fips_test.c and rebuild\n"); } } -#endif /* HAVE_FIPS && !WOLFSSL_LINUXKM */ +#endif /* HAVE_FIPS && !WOLFSSL_KERNEL_MODE */ #if defined(HAVE_FIPS) && FIPS_VERSION3_LT(6,0,0) && !defined(WC_NO_CONSTRUCTORS) @@ -1601,7 +1605,7 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\ wc_SetLoggingHeap(HEAP_HINT); #endif -#if defined(HAVE_FIPS) && !defined(WOLFSSL_LINUXKM) +#if defined(HAVE_FIPS) && !defined(WOLFSSL_KERNEL_MODE) wolfCrypt_SetCb_fips(myFipsCb); #if FIPS_VERSION3_GE(6,0,0) printf("FIPS module version in use: %s\n", @@ -14382,7 +14386,7 @@ static wc_test_ret_t aes_direct_test(Aes* enc, Aes* dec, byte* cipher, byte* pla if (ret != 0) ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out); #if !defined(HAVE_SELFTEST) && \ - (defined(WOLFSSL_LINUXKM) || \ + (defined(WOLFSSL_KERNEL_MODE) || \ !defined(HAVE_FIPS) || \ (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3))) ret = wc_AesEncryptDirect(enc, cipher, niPlain); @@ -14400,7 +14404,7 @@ static wc_test_ret_t aes_direct_test(Aes* enc, Aes* dec, byte* cipher, byte* pla if (ret != 0) ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out); #if !defined(HAVE_SELFTEST) && \ - (defined(WOLFSSL_LINUXKM) || \ + (defined(WOLFSSL_KERNEL_MODE) || \ !defined(HAVE_FIPS) || \ (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3))) ret = wc_AesDecryptDirect(dec, plain, niCipher); @@ -27489,7 +27493,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t scrypt_test(void) 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, 0x40 }; #endif -#if !defined(BENCH_EMBEDDED) && !defined(WOLFSSL_LINUXKM) && !defined(HAVE_INTEL_QA) +#if !defined(BENCH_EMBEDDED) && !defined(WOLFSSL_KERNEL_MODE) && !defined(HAVE_INTEL_QA) WOLFSSL_SMALL_STACK_STATIC const byte verify3[] = { 0x70, 0x23, 0xbd, 0xcb, 0x3a, 0xfd, 0x73, 0x48, 0x46, 0x1c, 0x06, 0xcd, 0x81, 0xfd, 0x38, 0xeb, @@ -27540,7 +27544,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t scrypt_test(void) return WC_TEST_RET_ENC_EC(ret); /* Don't run these test on embedded, since they use large mallocs */ -#if !defined(BENCH_EMBEDDED) && !defined(WOLFSSL_LINUXKM) && !defined(HAVE_INTEL_QA) +#if !defined(BENCH_EMBEDDED) && !defined(WOLFSSL_KERNEL_MODE) && !defined(HAVE_INTEL_QA) ret = wc_scrypt(derived, (byte*)"pleaseletmein", 13, (byte*)"SodiumChloride", 14, 14, 8, 1, sizeof(verify3)); if (ret != 0) @@ -27565,7 +27569,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t scrypt_test(void) #ifdef SCRYPT_TEST_ALL (void)verify4; #endif -#endif /* !BENCH_EMBEDDED && !defined(WOLFSSL_LINUXKM) && !HAVE_INTEL_QA */ +#endif /* !BENCH_EMBEDDED && !defined(WOLFSSL_KERNEL_MODE) && !HAVE_INTEL_QA */ #if !defined(BENCH_EMBEDDED) ret = wc_scrypt_ex(derived, (byte*)"password", 8, (byte*)"NaCl", 4, 1<<10, @@ -59364,7 +59368,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t mutex_test(void) #if defined(USE_WOLFSSL_MEMORY) && !defined(FREERTOS) -#if !defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_LINUXKM) && \ +#if !defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_KERNEL_MODE) && \ !defined(WOLFSSL_STATIC_MEMORY) static wc_test_ret_t malloc_cnt = 0; static wc_test_ret_t realloc_cnt = 0; @@ -59432,7 +59436,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memcb_test(void) { wc_test_ret_t ret = 0; #if !defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_NO_REALLOC) && \ - !defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_STATIC_MEMORY) + !defined(WOLFSSL_KERNEL_MODE) && !defined(WOLFSSL_STATIC_MEMORY) byte* b = NULL; #endif wolfSSL_Malloc_cb mc; @@ -59446,7 +59450,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memcb_test(void) return WC_TEST_RET_ENC_EC(ret); #if !defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_NO_REALLOC) && \ - !defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_STATIC_MEMORY) + !defined(WOLFSSL_KERNEL_MODE) && !defined(WOLFSSL_STATIC_MEMORY) /* test realloc */ b = (byte*)XREALLOC(b, 1024, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); @@ -59490,7 +59494,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memcb_test(void) #endif /* !WOLFSSL_NO_MALLOC */ #if !defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_NO_REALLOC) && \ - !defined(WOLFSSL_LINUXKM) && !defined(WOLFSSL_STATIC_MEMORY) + !defined(WOLFSSL_KERNEL_MODE) && !defined(WOLFSSL_STATIC_MEMORY) exit_memcb: /* reset malloc/free/realloc counts */ diff --git a/wolfssl/internal.h b/wolfssl/internal.h index 82876b27ca1..180e3eecc67 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -151,102 +151,11 @@ #include #endif -#ifdef __WATCOMC__ - #if defined(__OS2__) - #elif defined(__NT__) - #define _WINSOCKAPI_ /* block inclusion of winsock.h header file */ - #include - #undef _WINSOCKAPI_ /* undefine it for MINGW winsock2.h header file */ - #elif defined(__LINUX__) - #ifndef SINGLE_THREADED - #define WOLFSSL_PTHREADS - #include - #endif - #endif -#elif defined(USE_WINDOWS_API) - #ifdef WOLFSSL_GAME_BUILD - #include "system/xtl.h" - #else - #define _WINSOCKAPI_ /* block inclusion of winsock.h header file */ - #include - #undef _WINSOCKAPI_ /* undefine it for MINGW winsock2.h header file */ - #endif -#elif defined(THREADX) - #ifndef SINGLE_THREADED - #include "tx_api.h" - #endif - -#elif defined(WOLFSSL_DEOS) - /* do nothing, just don't pick Unix */ -#elif defined(MICRIUM) - /* do nothing, just don't pick Unix */ -#elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) - /* do nothing */ -#elif defined(RTTHREAD) - /* do nothing */ -#elif defined(EBSNET) - /* do nothing */ -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - /* do nothing */ -#elif defined(FREESCALE_FREE_RTOS) - #include "fsl_os_abstraction.h" -#elif defined(WOLFSSL_uITRON4) - /* do nothing */ -#elif defined(WOLFSSL_uTKERNEL2) - /* do nothing */ -#elif defined(WOLFSSL_CMSIS_RTOS) - #include "cmsis_os.h" -#elif defined(WOLFSSL_CMSIS_RTOSv2) - #include "cmsis_os2.h" -#elif defined(WOLFSSL_MDK_ARM) - #if defined(WOLFSSL_MDK5) - #include "cmsis_os.h" - #else - #include - #endif -#elif defined(MBED) -#elif defined(WOLFSSL_TIRTOS) - /* do nothing */ -#elif defined(INTIME_RTOS) - #include -#elif defined(WOLFSSL_NUCLEUS_1_2) - /* do nothing */ -#elif defined(WOLFSSL_APACHE_MYNEWT) +#ifdef WOLFSSL_APACHE_MYNEWT #if !defined(WOLFSSL_LWIP) void mynewt_ctx_clear(void *ctx); void* mynewt_ctx_new(); #endif -#elif defined(WOLFSSL_ZEPHYR) - #ifndef SINGLE_THREADED - #include - #if KERNEL_VERSION_NUMBER >= 0x30100 - #include - #else - #include - #endif - #endif -#elif defined(WOLFSSL_TELIT_M2MB) - /* do nothing */ -#elif defined(WOLFSSL_EMBOS) - /* do nothing */ -#else - #ifndef SINGLE_THREADED - #if defined(WOLFSSL_LINUXKM) - /* setup is in linuxkm/linuxkm_wc_port.h */ - #elif defined(WOLFSSL_USER_MUTEX) - /* do nothing */ - #else - #define WOLFSSL_PTHREADS - #include - #endif - #endif - #if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) - #ifdef FUSION_RTOS - #include - #else - #include /* for close of BIO */ - #endif - #endif #endif #if !defined(WOLFCRYPT_ONLY) && !defined(INT_MAX) diff --git a/wolfssl/quic.h b/wolfssl/quic.h index e1dab03cce6..263c5c1ba9e 100644 --- a/wolfssl/quic.h +++ b/wolfssl/quic.h @@ -32,7 +32,9 @@ #ifdef WOLFSSL_QUIC -#include +#ifndef NO_STDINT_H + #include +#endif /* QUIC operates on three encryption levels which determine * which keys/algos are used for de-/encryption. These are diff --git a/wolfssl/wolfcrypt/aes.h b/wolfssl/wolfcrypt/aes.h index 92c78de90f8..d4e2006fce7 100644 --- a/wolfssl/wolfcrypt/aes.h +++ b/wolfssl/wolfcrypt/aes.h @@ -306,13 +306,13 @@ struct Aes { #endif #ifdef WOLFSSL_AESNI byte use_aesni; - #if defined(WOLFSSL_LINUXKM) || defined(WC_WANT_FLAG_DONT_USE_AESNI) - /* Note, we can't support WC_FLAG_DONT_USE_AESNI by default because we - * need to support legacy applications that call wc_AesSetKey() on + #if defined(WOLFSSL_KERNEL_MODE) || defined(WC_WANT_FLAG_DONT_USE_VECTOR_OPS) + /* Note, we can't support WC_FLAG_DONT_USE_VECTOR_OPS by default because + * we need to support legacy applications that call wc_AesSetKey() on * uninited struct Aes. For details see the software implementation of * wc_AesSetKeyLocal() (aes.c). */ - #define WC_FLAG_DONT_USE_AESNI 2 + #define WC_FLAG_DONT_USE_VECTOR_OPS 2 #endif #endif /* WOLFSSL_AESNI */ #if defined(__aarch64__) && defined(WOLFSSL_ARMASM) && \ diff --git a/wolfssl/wolfcrypt/integer.h b/wolfssl/wolfcrypt/integer.h index 7d3f6ea891d..807847a0672 100644 --- a/wolfssl/wolfcrypt/integer.h +++ b/wolfssl/wolfcrypt/integer.h @@ -46,12 +46,8 @@ #include #include -#ifndef CHAR_BIT - #if defined(WOLFSSL_LINUXKM) - #include - #else - #include - #endif +#if !defined(CHAR_BIT) && !defined(NO_LIMITS_H) + #include #endif #include diff --git a/wolfssl/wolfcrypt/mem_track.h b/wolfssl/wolfcrypt/mem_track.h index 6a0d5aaafab..e7d17c61b06 100644 --- a/wolfssl/wolfcrypt/mem_track.h +++ b/wolfssl/wolfcrypt/mem_track.h @@ -67,9 +67,6 @@ #if defined(WOLFSSL_TRACK_MEMORY) || defined(HAVE_STACK_SIZE) || \ defined(HAVE_STACK_SIZE_VERBOSE) #ifdef NO_STDIO_FILESYSTEM - /* if wc_port.h/linuxkm_wc_port.h doesn't define printf, then the user - * needs to define it. - */ #define wc_mem_printf(...) printf(__VA_ARGS__) #else #include @@ -82,7 +79,7 @@ !defined(WOLFSSL_STATIC_MEMORY) #define DO_MEM_STATS -#if (defined(__linux__) && !defined(WOLFSSL_LINUXKM)) || defined(__MACH__) +#if (defined(__linux__) && !defined(WOLFSSL_KERNEL_MODE)) || defined(__MACH__) #define DO_MEM_LIST #endif diff --git a/wolfssl/wolfcrypt/memory.h b/wolfssl/wolfcrypt/memory.h index 6acbc2471c3..bb626504019 100644 --- a/wolfssl/wolfcrypt/memory.h +++ b/wolfssl/wolfcrypt/memory.h @@ -29,7 +29,7 @@ #ifndef WOLFSSL_MEMORY_H #define WOLFSSL_MEMORY_H -#if !defined(STRING_USER) && !defined(WOLFSSL_LINUXKM) +#if !defined(STRING_USER) && !defined(NO_STDLIB_H) #include #endif diff --git a/wolfssl/wolfcrypt/settings.h b/wolfssl/wolfcrypt/settings.h index e57d48b85e9..153e301a075 100644 --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h @@ -3652,6 +3652,10 @@ extern void uITRON4_free(void *p) ; /* Linux Kernel Module */ #ifdef WOLFSSL_LINUXKM + #define WOLFSSL_KERNEL_MODE + #ifdef WOLFSSL_LINUXKM_VERBOSE_DEBUG + #define WOLFSSL_KERNEL_VERBOSE_DEBUG + #endif #ifdef HAVE_CONFIG_H #include #undef HAVE_CONFIG_H @@ -3696,8 +3700,13 @@ extern void uITRON4_free(void *p) ; #undef HAVE_PTHREAD /* linuxkm uses linux/string.h, included by linuxkm_wc_port.h. */ #undef HAVE_STRINGS_H + #define NO_STRING_H /* linuxkm uses linux/limits.h, included by linuxkm_wc_port.h. */ #undef HAVE_LIMITS_H + #define NO_LIMITS_H + #define NO_STDLIB_H + #define NO_STDINT_H + #define NO_CTYPE_H #undef HAVE_ERRNO_H #undef HAVE_THREAD_LS #undef HAVE_ATEXIT diff --git a/wolfssl/wolfcrypt/sp.h b/wolfssl/wolfcrypt/sp.h index c116cb0ae09..666bbb9f143 100644 --- a/wolfssl/wolfcrypt/sp.h +++ b/wolfssl/wolfcrypt/sp.h @@ -35,7 +35,7 @@ typedef unsigned __int8 uint8_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; -#elif !defined(WOLFSSL_LINUXKM) +#elif !defined(NO_STDINT_H) #include #endif diff --git a/wolfssl/wolfcrypt/sp_int.h b/wolfssl/wolfcrypt/sp_int.h index eb42d809000..0774fb95f00 100644 --- a/wolfssl/wolfcrypt/sp_int.h +++ b/wolfssl/wolfcrypt/sp_int.h @@ -27,7 +27,7 @@ This library provides single precision (SP) integer math functions. #ifndef WOLF_CRYPT_SP_INT_H #define WOLF_CRYPT_SP_INT_H -#ifndef WOLFSSL_LINUXKM +#ifndef NO_LIMITS_H #include #endif #include diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 1b69a022ba6..0b151862abb 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -374,7 +374,9 @@ typedef struct w64wrapper { #ifdef WC_PTR_TYPE /* Allow user supplied type */ typedef WC_PTR_TYPE wc_ptr_t; #elif defined(HAVE_UINTPTR_T) - #include + #ifndef NO_STDINT_H + #include + #endif typedef uintptr_t wc_ptr_t; #else /* fallback to architecture size_t for pointer size */ #include /* included for getting size_t type */ @@ -786,9 +788,7 @@ enum { #endif #ifndef STRING_USER - #if defined(WOLFSSL_LINUXKM) - #include - #else + #ifndef NO_STRING_H #include #endif @@ -1047,7 +1047,7 @@ binding for XSNPRINTF #endif /* !NO_FILESYSTEM && !NO_STDIO_FILESYSTEM */ #ifndef CTYPE_USER - #ifndef WOLFSSL_LINUXKM + #ifndef NO_CTYPE_H #include #endif #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ @@ -1726,7 +1726,6 @@ WOLFSSL_API word32 CheckRunTimeSettings(void); #define WOLFSSL_THREAD __stdcall #endif - #ifndef SINGLE_THREADED /* Necessary headers should already be included. */ diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index e2ffbf4a80b..bad52a98937 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -176,6 +176,10 @@ #include #include /* required for InetPton */ #endif + #elif defined(__NT__) + #define _WINSOCKAPI_ /* block inclusion of winsock.h header file */ + #include + #undef _WINSOCKAPI_ /* undefine it for MINGW winsock2.h header file */ #elif defined(__OS2__) #define INCL_DOSSEMAPHORES #define INCL_DOSPROCESS @@ -258,6 +262,8 @@ #endif #elif defined(WOLFSSL_CMSIS_RTOS) #include "cmsis_os.h" +#elif defined(MBED) + /* do nothing */ #elif defined(WOLFSSL_TIRTOS) #include #include