diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 155373d68..9784aabf4 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -39,7 +39,7 @@ jobs: -DWOLFSSL_AESCBC:BOOL=yes -DWOLFSSL_AESCCM:BOOL=yes -DWOLFSSL_AESCFB:BOOL=yes \ -DWOLFSSL_AESCTR:BOOL=yes -DWOLFSSL_AESGCM:STRING=yes -DWOLFSSL_AESKEYWRAP:BOOL=yes \ -DWOLFSSL_AESOFB:BOOL=yes -DWOLFSSL_AESSIV:BOOL=yes -DWOLFSSL_ALIGN_DATA:BOOL=yes \ - -DWOLFSSL_ALPN:BOOL=ON -DWOLFSSL_ALT_CERT_CHAINS:BOOL=ON -DWOLFSSL_ARC4:BOOL=yes \ + -DWOLFSSL_ALPN:BOOL=ON -DWOLFSSL_ALT_CERT_CHAINS:BOOL=ON -DWOLFSSL_ARC4:BOOL=no \ -DWOLFSSL_ARIA:BOOL=no -DWOLFSSL_ASIO:BOOL=no -DWOLFSSL_ASM:BOOL=yes -DWOLFSSL_ASN:BOOL=yes \ -DWOLFSSL_ASYNC_THREADS:BOOL=no -DWOLFSSL_BASE64_ENCODE:BOOL=yes -DWOLFSSL_CAAM:BOOL=no \ -DWOLFSSL_CERTEXT:BOOL=yes -DWOLFSSL_CERTGEN:BOOL=yes -DWOLFSSL_CERTGENCACHE:BOOL=no \ diff --git a/.wolfssl_known_macro_extras b/.wolfssl_known_macro_extras index 22657701e..5ecf77a80 100644 --- a/.wolfssl_known_macro_extras +++ b/.wolfssl_known_macro_extras @@ -508,7 +508,7 @@ WC_AES_GCM_DEC_AUTH_EARLY WC_ASN_HASH_SHA256 WC_ASYNC_ENABLE_3DES WC_ASYNC_ENABLE_AES -WC_ASYNC_ENABLE_ARC4 +/* ARC4 implementation has been removed */ WC_ASYNC_ENABLE_DH WC_ASYNC_ENABLE_ECC WC_ASYNC_ENABLE_ECC_KEYGEN diff --git a/CMakeLists.txt b/CMakeLists.txt index 87e40d469..b3085614e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1353,8 +1353,8 @@ if(NOT WOLFSSL_DES3_TLS_SUITES) list(APPEND WOLFSSL_DEFINITIONS "-DNO_DES3_TLS_SUITES") endif() -# ARC4 -set(WOLFSSL_ARC4_HELP_STRING "Enable ARC4 (default: disabled)") +# RC4 API (ARC4 implementation removed) +set(WOLFSSL_ARC4_HELP_STRING "Enable RC4 API (default: disabled, ARC4 implementation removed)") add_option("WOLFSSL_ARC4" ${WOLFSSL_ARC4_HELP_STRING} "no" "yes;no") if(WOLFSSL_OPENSSH OR WOLFSSL_WPAS) @@ -2530,7 +2530,7 @@ if(WOLFSSL_EXAMPLES) tests/api/test_poly1305.c tests/api/test_chacha20_poly1305.c tests/api/test_camellia.c - tests/api/test_arc4.c + # ARC4 implementation has been removed tests/api/test_rc2.c tests/api/test_aes.c tests/api/test_ascon.c diff --git a/IDE/Android/Android.bp b/IDE/Android/Android.bp index 48d395175..3d3c82448 100644 --- a/IDE/Android/Android.bp +++ b/IDE/Android/Android.bp @@ -40,7 +40,7 @@ cc_library_shared { "./src/wolfio.c", ] + [ "./wolfcrypt/src/aes.c", - "./wolfcrypt/src/arc4.c", + // ARC4 implementation has been removed "./wolfcrypt/src/asm.c", "./wolfcrypt/src/asn.c", "./wolfcrypt/src/blake2b.c", diff --git a/IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/component.mk b/IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/component.mk index 290563e69..bf4a2f1ca 100644 --- a/IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/component.mk +++ b/IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/component.mk @@ -176,7 +176,7 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/src/wolfio.o ## wolfcrypt ## COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/aes.o -COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.o +# ARC4 implementation has been removed COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asm.o COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asn.o # COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/async.o # autogen exclusion diff --git a/IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/component.mk b/IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/component.mk index a7b5f3706..6f712f801 100644 --- a/IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/component.mk +++ b/IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/component.mk @@ -176,7 +176,7 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/src/wolfio.o ## wolfcrypt ## COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/aes.o -COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.o +# ARC4 implementation has been removed COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asm.o COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asn.o # COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/async.o # autogen exclusion diff --git a/IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/component.mk b/IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/component.mk index 290563e69..bf4a2f1ca 100644 --- a/IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/component.mk +++ b/IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/component.mk @@ -176,7 +176,7 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/src/wolfio.o ## wolfcrypt ## COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/aes.o -COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.o +# ARC4 implementation has been removed COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asm.o COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asn.o # COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/async.o # autogen exclusion diff --git a/IDE/Espressif/ESP-IDF/examples/wolfssl_server/components/wolfssl/component.mk b/IDE/Espressif/ESP-IDF/examples/wolfssl_server/components/wolfssl/component.mk index 290563e69..bf4a2f1ca 100644 --- a/IDE/Espressif/ESP-IDF/examples/wolfssl_server/components/wolfssl/component.mk +++ b/IDE/Espressif/ESP-IDF/examples/wolfssl_server/components/wolfssl/component.mk @@ -176,7 +176,7 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/src/wolfio.o ## wolfcrypt ## COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/aes.o -COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.o +# ARC4 implementation has been removed COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asm.o COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asn.o # COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/async.o # autogen exclusion diff --git a/IDE/Espressif/ESP-IDF/examples/wolfssl_test/components/wolfssl/component.mk b/IDE/Espressif/ESP-IDF/examples/wolfssl_test/components/wolfssl/component.mk index 8865ec880..2db32460f 100644 --- a/IDE/Espressif/ESP-IDF/examples/wolfssl_test/components/wolfssl/component.mk +++ b/IDE/Espressif/ESP-IDF/examples/wolfssl_test/components/wolfssl/component.mk @@ -176,7 +176,7 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/src/wolfio.o ## wolfcrypt ## COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/aes.o -COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.o +# ARC4 implementation has been removed COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asm.o COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/asn.o # COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/async.o # autogen exclusion diff --git a/IDE/GCC-ARM/Makefile.common b/IDE/GCC-ARM/Makefile.common index 742b350df..c9e7afe25 100644 --- a/IDE/GCC-ARM/Makefile.common +++ b/IDE/GCC-ARM/Makefile.common @@ -178,7 +178,7 @@ SRC_C += ../../wolfcrypt/src/selftest.c endif # wolfCrypt non-standard algorithms (disabled by default) -SRC_C += ../../wolfcrypt/src/arc4.c +# ARC4 implementation has been removed SRC_C += ../../wolfcrypt/src/blake2b.c SRC_C += ../../wolfcrypt/src/camellia.c SRC_C += ../../wolfcrypt/src/dsa.c diff --git a/IDE/HEXAGON/DSP/Makefile b/IDE/HEXAGON/DSP/Makefile index 036354feb..9ec1619f1 100644 --- a/IDE/HEXAGON/DSP/Makefile +++ b/IDE/HEXAGON/DSP/Makefile @@ -80,7 +80,7 @@ libwolfssl_dsp_skel.C_SRCS += ../../../wolfcrypt/src/wolfmath.c #eccverify_q.C_SRCS += ../../../wolfcrypt/src/wc_encrypt.c #eccverify_q.C_SRCS += ../../../wolfcrypt/src/pwdbased.c #eccverify_q.C_SRCS += ../../../wolfcrypt/src/hash.c -#eccverify_q.C_SRCS += ../../../wolfcrypt/src/arc4.c +#eccverify_q.C_SRCS += # ../../../wolfcrypt/src/arc4.c - ARC4 implementation has been removed #eccverify_q.C_SRCS += ../../../wolfcrypt/src/hmac.c #eccverify_q.C_SRCS += ../../../wolfcrypt/src/md5.c #eccverify_q.C_SRCS += ../../../wolfcrypt/src/coding.c diff --git a/IDE/HEXAGON/Makefile b/IDE/HEXAGON/Makefile index eb573b575..ce7123191 100644 --- a/IDE/HEXAGON/Makefile +++ b/IDE/HEXAGON/Makefile @@ -65,7 +65,7 @@ libwolfssl_LD_FLAGS += -ldl libwolfssl_C_SRCS += \ ../../wolfcrypt/src/aes \ ../../wolfcrypt/src/md2 \ - ../../wolfcrypt/src/arc4 \ + # ARC4 implementation has been removed \ ../../wolfcrypt/src/md4 \ ../../wolfcrypt/src/asm \ ../../wolfcrypt/src/md5 \ diff --git a/IDE/IAR-EWARM/Projects/lib/wolfSSL-Lib.ewp b/IDE/IAR-EWARM/Projects/lib/wolfSSL-Lib.ewp index 685c9f6fd..70f622617 100644 --- a/IDE/IAR-EWARM/Projects/lib/wolfSSL-Lib.ewp +++ b/IDE/IAR-EWARM/Projects/lib/wolfSSL-Lib.ewp @@ -1904,7 +1904,7 @@ $PROJ_DIR$\..\..\..\..\wolfcrypt\src\aes.c - $PROJ_DIR$\..\..\..\..\wolfcrypt\src\arc4.c + $PROJ_DIR$\..\..\..\..\wolfcrypt\src\asm.c diff --git a/IDE/INTIME-RTOS/libwolfssl.vcxproj b/IDE/INTIME-RTOS/libwolfssl.vcxproj index 77f0703b2..531326b27 100755 --- a/IDE/INTIME-RTOS/libwolfssl.vcxproj +++ b/IDE/INTIME-RTOS/libwolfssl.vcxproj @@ -24,7 +24,7 @@ - + @@ -87,7 +87,7 @@ - + diff --git a/IDE/LINUX-SGX/sgx_t_static.mk b/IDE/LINUX-SGX/sgx_t_static.mk index 1941bae02..8865b2334 100644 --- a/IDE/LINUX-SGX/sgx_t_static.mk +++ b/IDE/LINUX-SGX/sgx_t_static.mk @@ -47,7 +47,7 @@ Crypto_Library_Name := sgx_tcrypto Wolfssl_C_Extra_Flags := -DWOLFSSL_SGX Wolfssl_C_Files :=$(WOLFSSL_ROOT)/wolfcrypt/src/aes.c\ - $(WOLFSSL_ROOT)/wolfcrypt/src/arc4.c\ + # ARC4 implementation has been removed\ $(WOLFSSL_ROOT)/wolfcrypt/src/asn.c\ $(WOLFSSL_ROOT)/wolfcrypt/src/blake2b.c\ $(WOLFSSL_ROOT)/wolfcrypt/src/camellia.c\ diff --git a/IDE/MDK-ARM/MDK-ARM/wolfSSL/shell.c b/IDE/MDK-ARM/MDK-ARM/wolfSSL/shell.c index be95989ad..d579b0aae 100644 --- a/IDE/MDK-ARM/MDK-ARM/wolfSSL/shell.c +++ b/IDE/MDK-ARM/MDK-ARM/wolfSSL/shell.c @@ -142,7 +142,7 @@ extern void hmac_sha384_test(void *arg) ; #endif #endif #ifndef NO_RC4 -extern void arc4_test(void *arg) ; +extern void arc4_test(void *arg) ; /* ARC4 implementation has been removed */ #endif #ifndef NO_DES3 @@ -257,7 +257,7 @@ static struct { #endif #endif #ifndef NO_RC4 - "arc4", arc4_test, + "arc4", arc4_test, /* ARC4 implementation has been removed */ #endif #ifndef NO_DES3 "des", des_test, diff --git a/IDE/MDK5-ARM/Projects/wolfSSL-Full/Abstract.txt b/IDE/MDK5-ARM/Projects/wolfSSL-Full/Abstract.txt index dde67ce4f..7cc291a5b 100644 --- a/IDE/MDK5-ARM/Projects/wolfSSL-Full/Abstract.txt +++ b/IDE/MDK5-ARM/Projects/wolfSSL-Full/Abstract.txt @@ -27,7 +27,7 @@ SHA test passed! >benchmark AES 25 kB took 0.025 seconds, 0.96 MB/s -ARC4 25 kB took 0.006 seconds, 3.83 MB/s +/* ARC4 implementation has been removed */ ... DH 2048 key agreement 685.93 milliseconds, avg over 1 iterations diff --git a/IDE/MDK5-ARM/Projects/wolfSSL-Full/shell.c b/IDE/MDK5-ARM/Projects/wolfSSL-Full/shell.c index a6dbd4239..facb64987 100644 --- a/IDE/MDK5-ARM/Projects/wolfSSL-Full/shell.c +++ b/IDE/MDK5-ARM/Projects/wolfSSL-Full/shell.c @@ -149,7 +149,7 @@ extern void hmac_sha384_test(void *arg) ; #endif #endif #ifndef NO_RC4 -extern void arc4_test(void *arg) ; +extern void arc4_test(void *arg) ; /* ARC4 implementation has been removed */ #endif #ifndef NO_DES3 @@ -264,7 +264,7 @@ static struct { #endif #endif #ifndef NO_RC4 - "arc4", arc4_test, + "arc4", arc4_test, /* ARC4 implementation has been removed */ #endif #ifndef NO_DES3 "des", des_test, diff --git a/IDE/MPLABX16/wolfssl.X/nbproject/configurations.xml b/IDE/MPLABX16/wolfssl.X/nbproject/configurations.xml index bd423ae2c..0055362e5 100644 --- a/IDE/MPLABX16/wolfssl.X/nbproject/configurations.xml +++ b/IDE/MPLABX16/wolfssl.X/nbproject/configurations.xml @@ -15,7 +15,7 @@ projectFiles="true"> ../../../wolfcrypt/src/aes.c - ../../../wolfcrypt/src/arc4.c + ../../../wolfcrypt/src/asm.c ../../../wolfcrypt/src/asn.c ../../../wolfcrypt/src/blake2b.c diff --git a/IDE/MQX/Makefile b/IDE/MQX/Makefile index 775120a5f..b7e0b9c29 100644 --- a/IDE/MQX/Makefile +++ b/IDE/MQX/Makefile @@ -72,7 +72,7 @@ $(WOLF_ROOT)/src/tls13.o\ $(WOLF_ROOT)/src/tls.o\ $(WOLF_ROOT)/src/wolfio.o\ $(WOLF_ROOT)/wolfcrypt/src/aes.o\ -$(WOLF_ROOT)/wolfcrypt/src/arc4.o\ +# ARC4 implementation has been removed\ $(WOLF_ROOT)/wolfcrypt/src/asm.o\ $(WOLF_ROOT)/wolfcrypt/src/asn.o\ $(WOLF_ROOT)/wolfcrypt/src/blake2b.o\ diff --git a/IDE/MYSQL/CMakeLists_wolfCrypt.txt b/IDE/MYSQL/CMakeLists_wolfCrypt.txt index 55c7c40b8..eb7aa9466 100644 --- a/IDE/MYSQL/CMakeLists_wolfCrypt.txt +++ b/IDE/MYSQL/CMakeLists_wolfCrypt.txt @@ -23,14 +23,16 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/extra/wolfssl) ADD_DEFINITIONS(${SSL_DEFINES}) -SET(WOLFCRYPT_SOURCES src/aes.c src/arc4.c src/asn.c src/blake2b.c +SET(WOLFCRYPT_SOURCES src/aes.c # src/arc4.c - ARC4 implementation has been removed + src/asn.c src/blake2b.c src/camellia.c src/chacha.c src/coding.c src/compress.c src/des3.c src/dh.c src/dsa.c src/ecc.c src/error.c src/hmac.c src/integer.c src/kdf.c src/logging.c src/md2.c src/md4.c src/md5.c src/memory.c src/pkcs7.c src/pkcs12.c src/poly1305.c src/pwdbased.c src/random.c src/ripemd.c src/rsa.c src/sha.c src/sha256.c src/sha512.c src/tfm.c src/wc_port.c src/wc_encrypt.c src/hash.c src/wolfmath.c - ../wolfssl/wolfcrypt/aes.h ../wolfssl/wolfcrypt/arc4.h ../wolfssl/wolfcrypt/asn.h ../wolfssl/wolfcrypt/blake2.h + ../wolfssl/wolfcrypt/aes.h # ../wolfssl/wolfcrypt/arc4.h - ARC4 implementation has been removed + ../wolfssl/wolfcrypt/asn.h ../wolfssl/wolfcrypt/blake2.h ../wolfssl/wolfcrypt/camellia.h ../wolfssl/wolfcrypt/chacha.h ../wolfssl/wolfcrypt/coding.h ../wolfssl/wolfcrypt/compress.h ../wolfssl/wolfcrypt/des3.h ../wolfssl/wolfcrypt/dh.h ../wolfssl/wolfcrypt/dsa.h ../wolfssl/wolfcrypt/ecc.h ../wolfssl/wolfcrypt/error-crypt.h ../wolfssl/wolfcrypt/hmac.h ../wolfssl/wolfcrypt/integer.h ../wolfssl/wolfcrypt/logging.h ../wolfssl/wolfcrypt/md2.h ../wolfssl/wolfcrypt/md4.h ../wolfssl/wolfcrypt/md5.h ../wolfssl/wolfcrypt/memory.h diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/benchmark_main.c b/IDE/ROWLEY-CROSSWORKS-ARM/benchmark_main.c index 333e73df6..75db59566 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/benchmark_main.c +++ b/IDE/ROWLEY-CROSSWORKS-ARM/benchmark_main.c @@ -79,7 +79,7 @@ void main(void) SAMPLE OUTPUT: Freescale K64 running at 96MHz with no MMCAU: Benchmark Test 0: AES 25 kB took 0.073 seconds, 0.334 MB/s -ARC4 25 kB took 0.033 seconds, 0.740 MB/s +/* ARC4 implementation has been removed */ RABBIT 25 kB took 0.027 seconds, 0.904 MB/s 3DES 25 kB took 0.375 seconds, 0.065 MB/s MD5 25 kB took 0.016 seconds, 1.526 MB/s @@ -94,7 +94,7 @@ Benchmark Test 0: Return code 0 SAMPLE OUTPUT: Freescale K64 running at 96MHz with MMCAU enabled: Benchmark Test 0: AES 25 kB took 0.019 seconds, 1.285 MB/s -ARC4 25 kB took 0.033 seconds, 0.740 MB/s +/* ARC4 implementation has been removed */ RABBIT 25 kB took 0.028 seconds, 0.872 MB/s 3DES 25 kB took 0.026 seconds, 0.939 MB/s MD5 25 kB took 0.005 seconds, 4.883 MB/s diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl.hzp b/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl.hzp index aec5d2cd0..5269b7445 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl.hzp +++ b/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl.hzp @@ -18,7 +18,7 @@ - + diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl_ltc.hzp b/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl_ltc.hzp index 5bb46727c..b2c36c2ef 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl_ltc.hzp +++ b/IDE/ROWLEY-CROSSWORKS-ARM/wolfssl_ltc.hzp @@ -18,7 +18,7 @@ - + diff --git a/IDE/Renesas/cs+/Projects/wolfssl_lib/wolfssl_lib.mtpj b/IDE/Renesas/cs+/Projects/wolfssl_lib/wolfssl_lib.mtpj index 6ad2995b3..8c90408a2 100644 --- a/IDE/Renesas/cs+/Projects/wolfssl_lib/wolfssl_lib.mtpj +++ b/IDE/Renesas/cs+/Projects/wolfssl_lib/wolfssl_lib.mtpj @@ -108,7 +108,7 @@ arc4.c File - ..\..\..\..\..\wolfcrypt\src\arc4.c + 941832c1-fc3b-4e1b-94e8-01ea17128b42 2170607d-803e-45b0-80af-6507d495a8de @@ -2293,4 +2293,4 @@ 8.01.00.00 - \ No newline at end of file + diff --git a/IDE/Renesas/e2studio/RX65N/GR-ROSE/wolfssl/wolfssl.rcpc b/IDE/Renesas/e2studio/RX65N/GR-ROSE/wolfssl/wolfssl.rcpc index 4cf3634fe..dcf72a03d 100644 --- a/IDE/Renesas/e2studio/RX65N/GR-ROSE/wolfssl/wolfssl.rcpc +++ b/IDE/Renesas/e2studio/RX65N/GR-ROSE/wolfssl/wolfssl.rcpc @@ -28,7 +28,7 @@ ..\..\..\..\..\..\wolfcrypt\src\aes.c - ..\..\..\..\..\..\wolfcrypt\src\arc4.c + ..\..\..\..\..\..\wolfcrypt\src\asm.c ..\..\..\..\..\..\wolfcrypt\src\asn.c ..\..\..\..\..\..\wolfcrypt\src\blake2b.c diff --git a/IDE/Renesas/e2studio/RX65N/RSK/wolfssl/wolfssl.rcpc b/IDE/Renesas/e2studio/RX65N/RSK/wolfssl/wolfssl.rcpc index da2fa15e2..b9beda5e3 100644 --- a/IDE/Renesas/e2studio/RX65N/RSK/wolfssl/wolfssl.rcpc +++ b/IDE/Renesas/e2studio/RX65N/RSK/wolfssl/wolfssl.rcpc @@ -27,7 +27,7 @@ ..\..\..\..\..\..\wolfcrypt\src\aes.c - ..\..\..\..\..\..\wolfcrypt\src\arc4.c + ..\..\..\..\..\..\wolfcrypt\src\asm.c ..\..\..\..\..\..\wolfcrypt\src\asn.c ..\..\..\..\..\..\wolfcrypt\src\blake2b.c diff --git a/IDE/Renesas/e2studio/RX72N/EnvisionKit/Simple/wolfssl/wolfssl.rcpc b/IDE/Renesas/e2studio/RX72N/EnvisionKit/Simple/wolfssl/wolfssl.rcpc index 6e8f27d1e..426936932 100644 --- a/IDE/Renesas/e2studio/RX72N/EnvisionKit/Simple/wolfssl/wolfssl.rcpc +++ b/IDE/Renesas/e2studio/RX72N/EnvisionKit/Simple/wolfssl/wolfssl.rcpc @@ -28,7 +28,7 @@ ..\..\..\..\..\..\..\wolfcrypt\src\aes.c - ..\..\..\..\..\..\..\wolfcrypt\src\arc4.c + ..\..\..\..\..\..\..\wolfcrypt\src\asm.c ..\..\..\..\..\..\..\wolfcrypt\src\asn.c ..\..\..\..\..\..\..\wolfcrypt\src\blake2b.c diff --git a/IDE/Renesas/e2studio/RX72N/EnvisionKit/wolfssl/wolfssl.rcpc b/IDE/Renesas/e2studio/RX72N/EnvisionKit/wolfssl/wolfssl.rcpc index 81dec5b61..d845ac73a 100644 --- a/IDE/Renesas/e2studio/RX72N/EnvisionKit/wolfssl/wolfssl.rcpc +++ b/IDE/Renesas/e2studio/RX72N/EnvisionKit/wolfssl/wolfssl.rcpc @@ -27,7 +27,7 @@ ..\..\..\..\..\..\wolfcrypt\src\aes.c - ..\..\..\..\..\..\wolfcrypt\src\arc4.c + ..\..\..\..\..\..\wolfcrypt\src\asm.c ..\..\..\..\..\..\wolfcrypt\src\asn.c ..\..\..\..\..\..\wolfcrypt\src\blake2b.c diff --git a/IDE/VS-ARM/wolfssl.vcxproj b/IDE/VS-ARM/wolfssl.vcxproj index 03587afec..2deccbd6d 100644 --- a/IDE/VS-ARM/wolfssl.vcxproj +++ b/IDE/VS-ARM/wolfssl.vcxproj @@ -44,7 +44,7 @@ - + diff --git a/IDE/VS-AZURE-SPHERE/wolfssl.vcxproj b/IDE/VS-AZURE-SPHERE/wolfssl.vcxproj index 2a30a9fda..131239a3c 100644 --- a/IDE/VS-AZURE-SPHERE/wolfssl.vcxproj +++ b/IDE/VS-AZURE-SPHERE/wolfssl.vcxproj @@ -22,7 +22,7 @@ - + diff --git a/IDE/XCODE/Benchmark/wolfBench.xcodeproj/project.pbxproj b/IDE/XCODE/Benchmark/wolfBench.xcodeproj/project.pbxproj index 70a7dfdad..61002f599 100644 --- a/IDE/XCODE/Benchmark/wolfBench.xcodeproj/project.pbxproj +++ b/IDE/XCODE/Benchmark/wolfBench.xcodeproj/project.pbxproj @@ -63,7 +63,7 @@ A4ADF8E51FCE0C5600A06E90 /* sha.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF8891FCE0C4D00A06E90 /* sha.c */; }; A4ADF8EA1FCE0C5600A06E90 /* ge_operations.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF88E1FCE0C4E00A06E90 /* ge_operations.c */; }; A4ADF8EB1FCE0C5600A06E90 /* chacha20_poly1305.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF88F1FCE0C4E00A06E90 /* chacha20_poly1305.c */; }; - A4ADF8EE1FCE0C5600A06E90 /* arc4.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF8921FCE0C4E00A06E90 /* arc4.c */; }; + /* ARC4 implementation has been removed */ A4ADF8F01FCE0C5600A06E90 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF8941FCE0C4E00A06E90 /* memory.c */; }; A4ADF8F31FCE0C5600A06E90 /* rsa.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF8971FCE0C4F00A06E90 /* rsa.c */; }; A4ADF8F41FCE0C5600A06E90 /* pkcs7.c in Sources */ = {isa = PBXBuildFile; fileRef = A4ADF8981FCE0C4F00A06E90 /* pkcs7.c */; }; @@ -168,7 +168,7 @@ A4ADF8891FCE0C4D00A06E90 /* sha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sha.c; path = ../../../wolfcrypt/src/sha.c; sourceTree = ""; }; A4ADF88E1FCE0C4E00A06E90 /* ge_operations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ge_operations.c; path = ../../../wolfcrypt/src/ge_operations.c; sourceTree = ""; }; A4ADF88F1FCE0C4E00A06E90 /* chacha20_poly1305.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chacha20_poly1305.c; path = ../../../wolfcrypt/src/chacha20_poly1305.c; sourceTree = ""; }; - A4ADF8921FCE0C4E00A06E90 /* arc4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = arc4.c; path = ../../../wolfcrypt/src/arc4.c; sourceTree = ""; }; + /* ARC4 implementation has been removed */ A4ADF8941FCE0C4E00A06E90 /* memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memory.c; path = ../../../wolfcrypt/src/memory.c; sourceTree = ""; }; A4ADF8971FCE0C4F00A06E90 /* rsa.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rsa.c; path = ../../../wolfcrypt/src/rsa.c; sourceTree = ""; }; A4ADF8981FCE0C4F00A06E90 /* pkcs7.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pkcs7.c; path = ../../../wolfcrypt/src/pkcs7.c; sourceTree = ""; }; @@ -283,7 +283,7 @@ isa = PBXGroup; children = ( A4ADF8821FCE0C4D00A06E90 /* aes.c */, - A4ADF8921FCE0C4E00A06E90 /* arc4.c */, + /* ARC4 implementation has been removed */, A4DFEC0F1FD4CB8500A7BB33 /* armv8-aes.c */, A46FE14C2493E8F500A25BE7 /* armv8-chacha.c */, CB81DE1E24C93EC000B98DA6 /* armv8-curve25519.S */, @@ -522,7 +522,7 @@ A4ADF8E01FCE0C5600A06E90 /* ecc_fp.c in Sources */, A4ADF8EB1FCE0C5600A06E90 /* chacha20_poly1305.c in Sources */, A4ADF86B1FCE0C1C00A06E90 /* keys.c in Sources */, - A4ADF8EE1FCE0C5600A06E90 /* arc4.c in Sources */, + /* ARC4 implementation has been removed */, A4DFEC111FD4CB8500A7BB33 /* armv8-aes.c in Sources */, A46FE1812493E8F800A25BE7 /* wc_dsp.c in Sources */, A4ADF9061FCE0C5600A06E90 /* wc_encrypt.c in Sources */, diff --git a/certs/taoCert.txt b/certs/taoCert.txt index a34b517a0..5639f8aa4 100644 --- a/certs/taoCert.txt +++ b/certs/taoCert.txt @@ -98,7 +98,7 @@ to use PKCS#5 v2 instead of v1.5 which is default add to use PKCS#12 instead use -v1 which a 12 algo like -v1 PBE-SHA1-3DES # file Pkcs8Enc12 , see man pkcs8 for more info --v1 PBE-SHA1-RC4-128 # no longer file Pkcs8Enc12, arc4 now off by default +-v1 PBE-SHA1-RC4-128 # no longer file Pkcs8Enc12, ARC4 implementation has been removed **** To convert from pkcs8 to traditional **** diff --git a/cmake/functions.cmake b/cmake/functions.cmake index c36219400..d878a2fdb 100644 --- a/cmake/functions.cmake +++ b/cmake/functions.cmake @@ -156,7 +156,8 @@ function(generate_build_flags) if(WOLFSSL_CODING OR WOLFSSL_USER_SETTINGS) set(BUILD_CODING "yes" PARENT_SCOPE) endif() - if(WOLFSSL_ARC4 OR WOLFSSL_USER_SETTINGS) + # ARC4 implementation has been removed + if(WOLFSSL_USER_SETTINGS) set(BUILD_RC4 "yes" PARENT_SCOPE) endif() if(WOLFSSL_MD5 OR WOLFSSL_USER_SETTINGS) @@ -654,7 +655,7 @@ function(generate_lib_src_list LIB_SOURCES) endif() if(BUILD_RC4) - list(APPEND LIB_SOURCES wolfcrypt/src/arc4.c) + # ARC4 implementation has been removed endif() if(BUILD_MD4) diff --git a/linuxkm/module_exports.c.template b/linuxkm/module_exports.c.template index 699f83c45..466a31567 100644 --- a/linuxkm/module_exports.c.template +++ b/linuxkm/module_exports.c.template @@ -62,7 +62,7 @@ #ifdef WOLFSSL_SIPHASH #include #endif -#include +/* ARC4 implementation has been removed */ #if defined(WC_NO_RNG) #include #else diff --git a/mcapi/wolfssl.X/nbproject/configurations.xml b/mcapi/wolfssl.X/nbproject/configurations.xml index 280ca9213..42d132695 100644 --- a/mcapi/wolfssl.X/nbproject/configurations.xml +++ b/mcapi/wolfssl.X/nbproject/configurations.xml @@ -15,7 +15,7 @@ projectFiles="true"> ../../wolfcrypt/src/aes.c - ../../wolfcrypt/src/arc4.c + ../../wolfcrypt/src/asm.c ../../wolfcrypt/src/asn.c ../../wolfcrypt/src/blake2b.c diff --git a/mplabx/wolfssl.X/nbproject/configurations.xml b/mplabx/wolfssl.X/nbproject/configurations.xml index e717d3a6f..66eb53582 100755 --- a/mplabx/wolfssl.X/nbproject/configurations.xml +++ b/mplabx/wolfssl.X/nbproject/configurations.xml @@ -15,7 +15,7 @@ projectFiles="true"> ../../wolfcrypt/src/aes.c - ../../wolfcrypt/src/arc4.c + ../../wolfcrypt/src/asm.c ../../wolfcrypt/src/asn.c ../../wolfcrypt/src/blake2b.c diff --git a/scripts/makedistsmall.sh b/scripts/makedistsmall.sh index 88b554633..949205d6c 100755 --- a/scripts/makedistsmall.sh +++ b/scripts/makedistsmall.sh @@ -79,7 +79,7 @@ find . -name "*.sln" -delete #rm -f ./wolfcrypt/src/*.i #rm -f ./wolfcrypt/src/*.S #rm -f ./wolfcrypt/src/*.asm -#rm -f ./wolfcrypt/src/arc4.c +#rm -f ./wolfcrypt/src/arc4.c /* ARC4 implementation has been removed */ #rm -f ./wolfcrypt/src/async.c #rm -f ./wolfcrypt/src/blake* #rm -f ./wolfcrypt/src/camellia.c diff --git a/src/include.am b/src/include.am index ea431e4a9..47f27eb0d 100644 --- a/src/include.am +++ b/src/include.am @@ -1069,7 +1069,7 @@ endif endif if BUILD_RC4 -src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/arc4.c +# ARC4 implementation has been removed endif if BUILD_MD4 diff --git a/src/internal.c b/src/internal.c index d6c47eb6f..29ba4c32c 100644 --- a/src/internal.c +++ b/src/internal.c @@ -3051,9 +3051,9 @@ void FreeSSL_Ctx(WOLFSSL_CTX* ctx) /* Set cipher pointers to null */ void InitCiphers(WOLFSSL* ssl) { -#ifdef BUILD_ARC4 - ssl->encrypt.arc4 = NULL; - ssl->decrypt.arc4 = NULL; +/* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ #endif #ifdef BUILD_DES3 ssl->encrypt.des3 = NULL; @@ -3095,10 +3095,9 @@ void InitCiphers(WOLFSSL* ssl) static void FreeCiphersSide(Ciphers *cipher, void* heap) { -#ifdef BUILD_ARC4 - wc_Arc4Free(cipher->arc4); - XFREE(cipher->arc4, heap, DYNAMIC_TYPE_CIPHER); - cipher->arc4 = NULL; +/* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ #endif #ifdef BUILD_DES3 wc_Des3Free(cipher->des3); @@ -19581,9 +19580,9 @@ static WC_INLINE int EncryptDo(WOLFSSL* ssl, byte* out, const byte* input, } switch (ssl->specs.bulk_cipher_algorithm) { - #ifdef BUILD_ARC4 + /* ARC4 implementation has been removed */ case wolfssl_rc4: - wc_Arc4Process(ssl->encrypt.arc4, out, input, sz); + WOLFSSL_MSG("ARC4 implementation has been removed"); break; #endif @@ -20051,9 +20050,9 @@ static WC_INLINE int DecryptDo(WOLFSSL* ssl, byte* plain, const byte* input, switch (ssl->specs.bulk_cipher_algorithm) { - #ifdef BUILD_ARC4 + /* ARC4 implementation has been removed */ case wolfssl_rc4: - wc_Arc4Process(ssl->decrypt.arc4, plain, input, sz); + WOLFSSL_MSG("ARC4 implementation has been removed"); break; #endif diff --git a/src/keys.c b/src/keys.c index 79560710f..e2619a2a5 100644 --- a/src/keys.c +++ b/src/keys.c @@ -2377,51 +2377,16 @@ int SetKeys(Ciphers* enc, Ciphers* dec, Keys* keys, CipherSpecs* specs, (void)rng; (void)tls13; -#ifdef BUILD_ARC4 +/* ARC4 implementation has been removed */ if (specs->bulk_cipher_algorithm == wolfssl_rc4) { - word32 sz = specs->key_size; - if (enc && enc->arc4 == NULL) { - enc->arc4 = (Arc4*)XMALLOC(sizeof(Arc4), heap, DYNAMIC_TYPE_CIPHER); - if (enc->arc4 == NULL) - return MEMORY_E; - } - if (dec && dec->arc4 == NULL) { - dec->arc4 = (Arc4*)XMALLOC(sizeof(Arc4), heap, DYNAMIC_TYPE_CIPHER); - if (dec->arc4 == NULL) - return MEMORY_E; - } - - if (enc) { - if (wc_Arc4Init(enc->arc4, heap, devId) != 0) { - WOLFSSL_MSG("Arc4Init failed in SetKeys"); - return ASYNC_INIT_E; - } - } - if (dec) { - if (wc_Arc4Init(dec->arc4, heap, devId) != 0) { - WOLFSSL_MSG("Arc4Init failed in SetKeys"); - return ASYNC_INIT_E; - } - } - - if (side == WOLFSSL_CLIENT_END) { - if (enc) - wc_Arc4SetKey(enc->arc4, keys->client_write_key, sz); - if (dec) - wc_Arc4SetKey(dec->arc4, keys->server_write_key, sz); - } - else { - if (enc) - wc_Arc4SetKey(enc->arc4, keys->server_write_key, sz); - if (dec) - wc_Arc4SetKey(dec->arc4, keys->client_write_key, sz); - } + WOLFSSL_MSG("ARC4 implementation has been removed"); + /* Return success to maintain API compatibility */ if (enc) enc->setup = 1; if (dec) dec->setup = 1; } -#endif /* BUILD_ARC4 */ +/* ARC4 implementation has been removed */ #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && !defined(NO_CHAPOL_AEAD) diff --git a/src/sniffer.c b/src/sniffer.c index b15067b5a..c6a39e096 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -4746,7 +4746,9 @@ static int DecryptDo(WOLFSSL* ssl, byte* plain, const byte* input, { #ifndef NO_RC4 case wolfssl_rc4: - wc_Arc4Process(ssl->decrypt.arc4, plain, input, sz); + WOLFSSL_MSG("ARC4 implementation has been removed"); + /* Copy input to output as fallback */ + XMEMCPY(plain, input, sz); break; #endif diff --git a/src/ssl.c b/src/ssl.c index ca2a52c1b..c584bbdeb 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -111,7 +111,7 @@ #include #include #include - #include + /* ARC4 implementation has been removed */ #include #include #include @@ -2601,7 +2601,7 @@ int wolfSSL_GetObjectSize(void) printf("sizeof suites = %lu\n", (unsigned long)sizeof(Suites)); printf("sizeof ciphers(2) = %lu\n", (unsigned long)sizeof(Ciphers)); #ifndef NO_RC4 - printf("\tsizeof arc4 = %lu\n", (unsigned long)sizeof(Arc4)); + printf("\tsizeof arc4 = %lu\n", (unsigned long)0); /* ARC4 implementation has been removed */ #endif printf("\tsizeof aes = %lu\n", (unsigned long)sizeof(Aes)); #ifndef NO_DES3 @@ -26072,8 +26072,8 @@ int wolfSSL_RAND_load_file(const char* fname, long len) WOLFSSL_MSG("DES3 ECB"); break; #endif - case WC_ARC4_TYPE : - WOLFSSL_MSG("ARC4"); + case WC_ARC4_TYPE : /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); break; #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -26204,8 +26204,8 @@ int wolfSSL_RAND_load_file(const char* fname, long len) break; #endif - case WC_ARC4_TYPE : - WOLFSSL_MSG("ARC4"); + case WC_ARC4_TYPE : /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); break; #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) diff --git a/src/ssl_crypto.c b/src/ssl_crypto.c index 59e4db57f..da5c99612 100644 --- a/src/ssl_crypto.c +++ b/src/ssl_crypto.c @@ -3433,17 +3433,15 @@ size_t wolfSSL_CRYPTO_cts128_decrypt(const unsigned char *in, #ifdef OPENSSL_EXTRA #ifndef NO_RC4 -/* Set the key state for Arc4 key. +/* Set the key state for RC4 key (ARC4 implementation has been removed). * - * @param [out] key Arc4 key. + * @param [out] key RC4 key (ARC4 implementation has been removed). * @param [in] len Length of key in buffer. * @param [in] data Key data buffer. */ void wolfSSL_RC4_set_key(WOLFSSL_RC4_KEY* key, int len, const unsigned char* data) { - wc_static_assert(sizeof(WOLFSSL_RC4_KEY) >= sizeof(Arc4)); - WOLFSSL_ENTER("wolfSSL_RC4_set_key"); /* Validate parameters. */ @@ -3451,15 +3449,15 @@ void wolfSSL_RC4_set_key(WOLFSSL_RC4_KEY* key, int len, WOLFSSL_MSG("bad argument passed in"); } else { - /* Reset wolfCrypt Arc4 object. */ + /* Reset wolfCrypt RC4 object. */ XMEMSET(key, 0, sizeof(WOLFSSL_RC4_KEY)); - /* Set key into wolfCrypt Arc4 object. */ - wc_Arc4SetKey((Arc4*)key, data, (word32)len); + /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); } } -/* Encrypt/decrypt with Arc4 key. +/* Encrypt/decrypt with RC4 key (ARC4 implementation has been removed). * * @param [in] len Length of data to encrypt/decrypt. * @param [in] in Data to encrypt/decrypt. @@ -3475,8 +3473,10 @@ void wolfSSL_RC4(WOLFSSL_RC4_KEY* key, size_t len, const unsigned char* in, WOLFSSL_MSG("Bad argument passed in"); } else { - /* Encrypt/decrypt data. */ - wc_Arc4Process((Arc4*)key, out, in, (word32)len); + /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); + /* Copy input to output as a fallback */ + XMEMCPY(out, in, len); } } #endif /* NO_RC4 */ diff --git a/sslSniffer/README.md b/sslSniffer/README.md index dbf68955e..03e61b434 100644 --- a/sslSniffer/README.md +++ b/sslSniffer/README.md @@ -55,7 +55,7 @@ All options may be enabled with the following configure command line: To add some other cipher support to the sniffer, you can add options like: ```sh ---enable-arc4 +/* ARC4 implementation has been removed */ --enable-nullcipher --enable-des3 ``` diff --git a/tests/api.c b/tests/api.c index 26c97e609..16d5771b3 100644 --- a/tests/api.c +++ b/tests/api.c @@ -123,7 +123,7 @@ #endif #ifndef NO_RC4 - #include + /* ARC4 implementation has been removed */ #endif #ifdef HAVE_BLAKE2 @@ -308,7 +308,7 @@ #include #include #include -#include +/* ARC4 implementation has been removed */ #include #include #include @@ -63782,7 +63782,7 @@ static int test_wolfSSL_EVP_X_STATE_LEN(void) wolfSSL_EVP_CIPHER_CTX_init(ctx); ExpectIntEQ(EVP_CipherInit(ctx, init, key, iv, 1), WOLFSSL_SUCCESS); - ExpectIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), sizeof(Arc4)); + ExpectIntEQ(wolfSSL_EVP_X_STATE_LEN(ctx), 0) /* ARC4 implementation has been removed */; EVP_CIPHER_CTX_free(ctx); #endif return EXPECT_RESULT(); @@ -89346,8 +89346,8 @@ TEST_CASE testCases[] = { TEST_DECL(test_wc_CamelliaEncryptDecryptDirect), TEST_DECL(test_wc_CamelliaCbcEncryptDecrypt), - TEST_DECL(test_wc_Arc4SetKey), - TEST_DECL(test_wc_Arc4Process), + /* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ TEST_DECL(test_wc_Rc2SetKey), TEST_DECL(test_wc_Rc2SetIV), diff --git a/tests/api/include.am b/tests/api/include.am index d2893bc9e..5934cf01c 100644 --- a/tests/api/include.am +++ b/tests/api/include.am @@ -24,7 +24,7 @@ tests_unit_test_SOURCES += tests/api/test_chacha.c tests_unit_test_SOURCES += tests/api/test_poly1305.c tests_unit_test_SOURCES += tests/api/test_chacha20_poly1305.c tests_unit_test_SOURCES += tests/api/test_camellia.c -tests_unit_test_SOURCES += tests/api/test_arc4.c +# ARC4 implementation has been removed tests_unit_test_SOURCES += tests/api/test_rc2.c tests_unit_test_SOURCES += tests/api/test_aes.c tests_unit_test_SOURCES += tests/api/test_ascon.c @@ -59,7 +59,7 @@ EXTRA_DIST += tests/api/test_chacha.h EXTRA_DIST += tests/api/test_poly1305.h EXTRA_DIST += tests/api/test_chacha20_poly1305.h EXTRA_DIST += tests/api/test_camellia.h -EXTRA_DIST += tests/api/test_arc4.h +# ARC4 implementation has been removed EXTRA_DIST += tests/api/test_rc2.h EXTRA_DIST += tests/api/test_aes.h EXTRA_DIST += tests/api/test_ascon.h diff --git a/tests/api/test_arc4.c b/tests/api/test_arc4.c deleted file mode 100644 index 6b32dd904..000000000 --- a/tests/api/test_arc4.c +++ /dev/null @@ -1,114 +0,0 @@ -/* test_arc4.c - * - * Copyright (C) 2006-2025 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifdef HAVE_CONFIG_H - #include -#endif - -#if !defined(WOLFSSL_USER_SETTINGS) && !defined(WOLFSSL_NO_OPTIONS_H) - #include -#endif -#include - -#ifdef NO_INLINE - #include -#else - #define WOLFSSL_MISC_INCLUDED - #include -#endif - -#include -#include -#include -#include -#include - -/* - * Testing wc_Arc4SetKey() - */ -int test_wc_Arc4SetKey(void) -{ - EXPECT_DECLS; -#ifndef NO_RC4 - Arc4 arc; - const char* key = "\x01\x23\x45\x67\x89\xab\xcd\xef"; - int keyLen = 8; - - ExpectIntEQ(wc_Arc4SetKey(&arc, (byte*)key, (word32)keyLen), 0); - /* Test bad args. */ - ExpectIntEQ(wc_Arc4SetKey(NULL, (byte*)key, (word32)keyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Arc4SetKey(&arc, NULL , (word32)keyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Arc4SetKey(&arc, (byte*)key, 0 ), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_Arc4SetKey */ - -/* - * Testing wc_Arc4Process for ENC/DEC. - */ -int test_wc_Arc4Process(void) -{ - EXPECT_DECLS; -#ifndef NO_RC4 - Arc4 enc; - Arc4 dec; - const char* key = "\x01\x23\x45\x67\x89\xab\xcd\xef"; - int keyLen = 8; - const char* input = "\x01\x23\x45\x67\x89\xab\xcd\xef"; - byte cipher[8]; - byte plain[8]; - - /* Init stack variables */ - XMEMSET(&enc, 0, sizeof(Arc4)); - XMEMSET(&dec, 0, sizeof(Arc4)); - XMEMSET(cipher, 0, sizeof(cipher)); - XMEMSET(plain, 0, sizeof(plain)); - - /* Use for async. */ - ExpectIntEQ(wc_Arc4Init(&enc, NULL, INVALID_DEVID), 0); - ExpectIntEQ(wc_Arc4Init(&dec, NULL, INVALID_DEVID), 0); - - ExpectIntEQ(wc_Arc4SetKey(&enc, (byte*)key, (word32)keyLen), 0); - ExpectIntEQ(wc_Arc4SetKey(&dec, (byte*)key, (word32)keyLen), 0); - - ExpectIntEQ(wc_Arc4Process(&enc, cipher, (byte*)input, (word32)keyLen), 0); - ExpectIntEQ(wc_Arc4Process(&dec, plain, cipher, (word32)keyLen), 0); - ExpectIntEQ(XMEMCMP(plain, input, keyLen), 0); - - /* Bad args. */ - ExpectIntEQ(wc_Arc4Process(NULL, plain, cipher, (word32)keyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Arc4Process(&dec, NULL, cipher, (word32)keyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - ExpectIntEQ(wc_Arc4Process(&dec, plain, NULL, (word32)keyLen), - WC_NO_ERR_TRACE(BAD_FUNC_ARG)); - - wc_Arc4Free(&enc); - wc_Arc4Free(&dec); -#endif - return EXPECT_RESULT(); - -} /* END test_wc_Arc4Process */ - diff --git a/tests/api/test_arc4.h b/tests/api/test_arc4.h deleted file mode 100644 index 78d706ca9..000000000 --- a/tests/api/test_arc4.h +++ /dev/null @@ -1,28 +0,0 @@ -/* test_arc4.h - * - * Copyright (C) 2006-2025 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFCRYPT_TEST_ARC4_H -#define WOLFCRYPT_TEST_ARC4_H - -int test_wc_Arc4SetKey(void); -int test_wc_Arc4Process(void); - -#endif /* WOLFCRYPT_TEST_ARC4_H */ diff --git a/tirtos/packages/ti/net/wolfssl/package.bld b/tirtos/packages/ti/net/wolfssl/package.bld index 84d6d8586..8b44b968d 100644 --- a/tirtos/packages/ti/net/wolfssl/package.bld +++ b/tirtos/packages/ti/net/wolfssl/package.bld @@ -11,7 +11,7 @@ Pkg.makePrologue = "vpath %.c $(subst ;, ,$(XPKGPATH))"; /* WOLFSSL sources */ var wolfSSLObjList = [ "wolfcrypt/src/aes.c", - "wolfcrypt/src/arc4.c", + /* ARC4 implementation has been removed */ "wolfcrypt/src/asm.c", "wolfcrypt/src/asn.c", "wolfcrypt/src/blake2b.c", diff --git a/wolfcrypt/benchmark/README.md b/wolfcrypt/benchmark/README.md index 269b9af9d..e81050eec 100644 --- a/wolfcrypt/benchmark/README.md +++ b/wolfcrypt/benchmark/README.md @@ -36,7 +36,7 @@ benchmark Measure RSA performance. - Algorithm to benchmark. Available algorithms include: cipher aes-cbc aes-gcm aes-ecb aes-xts aes-cfb aes-ctr aes-ccm - camellia arc4 chacha20 chacha20-poly1305 des + camellia chacha20 /* ARC4 implementation has been removed */ chacha20-poly1305 des digest md5 poly1305 sha sha2 sha224 sha256 sha384 sha512 sha3 sha3-224 sha3-256 sha3-384 sha3-512 ripemd mac cmac hmac hmac-md5 hmac-sha hmac-sha224 hmac-sha256 diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index fa308dfca..67eb264e5 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -137,7 +137,7 @@ #include #endif #ifndef NO_RC4 - #include + /* ARC4 implementation has been removed */ #endif #ifndef NO_HMAC #include @@ -639,7 +639,7 @@ #define BENCH_AES_CTR 0x00000010 #define BENCH_AES_CCM 0x00000020 #define BENCH_CAMELLIA 0x00000100 -#define BENCH_ARC4 0x00000200 +#define BENCH_ARC4_REMOVED 0x00000200 /* ARC4 implementation has been removed */ #define BENCH_CHACHA20 0x00001000 #define BENCH_CHACHA20_POLY1305 0x00002000 #define BENCH_DES 0x00004000 @@ -866,7 +866,7 @@ static const bench_alg bench_cipher_opt[] = { { "-camellia", BENCH_CAMELLIA }, #endif #ifndef NO_RC4 - { "-arc4", BENCH_ARC4 }, + { "-arc4", BENCH_ARC4_REMOVED }, /* ARC4 implementation has been removed */ #endif #ifdef HAVE_CHACHA { "-chacha20", BENCH_CHACHA20 }, @@ -3333,12 +3333,12 @@ static void* benchmarks_do(void* args) bench_sm4_ccm(); #endif #ifndef NO_RC4 - if (bench_all || (bench_cipher_algs & BENCH_ARC4)) { + if (bench_all || (bench_cipher_algs if (bench_all || (bench_cipher_algs & BENCH_ARC4_REMOVED)) { BENCH_ARC4_REMOVED)) { /* ARC4 implementation has been removed */ #ifndef NO_SW_BENCH - bench_arc4(0); + /* ARC4 implementation has been removed */; #endif #ifdef BENCH_DEVID - bench_arc4(1); + /* ARC4 implementation has been removed */; #endif } #endif @@ -5962,28 +5962,34 @@ exit: #ifndef NO_RC4 -void bench_arc4(int useDeviceID) +void bench_arc4(int useDeviceID) /* ARC4 implementation has been removed */ +{ + WOLFSSL_MSG("ARC4 implementation has been removed"); + return; +} { int ret = 0, i, count = 0, times, pending = 0; - WC_DECLARE_ARRAY(enc, Arc4, BENCH_MAX_PENDING, - sizeof(Arc4), HEAP_HINT); + /* ARC4 implementation has been removed */ + WC_DECLARE_ARRAY(enc, char, BENCH_MAX_PENDING, + 128, HEAP_HINT); /* Placeholder for RC4 key */ double start; DECLARE_MULTI_VALUE_STATS_VARS() - WC_CALLOC_ARRAY(enc, Arc4, BENCH_MAX_PENDING, - sizeof(Arc4), HEAP_HINT); + /* ARC4 implementation has been removed */ + WC_CALLOC_ARRAY(enc, char, BENCH_MAX_PENDING, + 128, HEAP_HINT); /* Placeholder for RC4 key */ /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { - if ((ret = wc_Arc4Init(enc[i], HEAP_HINT, + if ((ret = /* ARC4 implementation has been removed */ useDeviceID ? devId : INVALID_DEVID)) != 0) { - printf("Arc4Init failed, ret = %d\n", ret); + WOLFSSL_MSG("ARC4 implementation has been removed"); goto exit; } - ret = wc_Arc4SetKey(enc[i], bench_key, 16); + /* ARC4 implementation has been removed */ if (ret != 0) { - printf("Arc4SetKey failed, ret = %d\n", ret); + WOLFSSL_MSG("ARC4 implementation has been removed"); goto exit; } } @@ -5997,11 +6003,11 @@ void bench_arc4(int useDeviceID) for (i = 0; i < BENCH_MAX_PENDING; i++) { if (bench_async_check(&ret, BENCH_ASYNC_GET_DEV(enc[i]), 0, ×, numBlocks, &pending)) { - ret = wc_Arc4Process(enc[i], bench_cipher, bench_plain, + /* ARC4 implementation has been removed */ bench_size); if (!bench_async_handle(&ret, BENCH_ASYNC_GET_DEV(enc[i]), 0, ×, &pending)) { - goto exit_arc4; + goto exit_arc4; /* ARC4 implementation has been removed */ } } } /* for i */ @@ -6014,8 +6020,8 @@ void bench_arc4(int useDeviceID) #endif ); -exit_arc4: - bench_stats_sym_finish("ARC4", useDeviceID, count, bench_size, start, ret); +exit_arc4: /* ARC4 implementation has been removed */ + bench_stats_sym_finish("ARC4", useDeviceID, count, bench_size, start, ret); /* ARC4 implementation has been removed */ #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); #endif @@ -6024,7 +6030,7 @@ exit: if (WC_ARRAY_OK(enc)) { for (i = 0; i < BENCH_MAX_PENDING; i++) { - wc_Arc4Free(enc[i]); + /* ARC4 implementation has been removed */ } WC_FREE_ARRAY(enc, BENCH_MAX_PENDING, HEAP_HINT); } diff --git a/wolfcrypt/benchmark/benchmark.h b/wolfcrypt/benchmark/benchmark.h index ac4c16864..15b4687b1 100644 --- a/wolfcrypt/benchmark/benchmark.h +++ b/wolfcrypt/benchmark/benchmark.h @@ -46,7 +46,7 @@ int benchmark_free(void); void benchmark_configure(word32 block_size); void bench_des(int useDeviceID); -void bench_arc4(int useDeviceID); +void bench_arc4(int useDeviceID); /* ARC4 implementation has been removed */ void bench_chacha(void); void bench_chacha20_poly1305_aead(void); void bench_aescbc(int useDeviceID); diff --git a/wolfcrypt/src/arc4.c b/wolfcrypt/src/arc4.c deleted file mode 100644 index 1b0d1ea08..000000000 --- a/wolfcrypt/src/arc4.c +++ /dev/null @@ -1,149 +0,0 @@ -/* arc4.c - * - * Copyright (C) 2006-2025 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifdef HAVE_CONFIG_H - #include -#endif - -#include - -#ifndef NO_RC4 - -#include -#include - - -int wc_Arc4SetKey(Arc4* arc4, const byte* key, word32 length) -{ - int ret = 0; - word32 i; - word32 keyIndex = 0, stateIndex = 0; - - if (arc4 == NULL || key == NULL || length == 0) { - return BAD_FUNC_ARG; - } - -#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ARC4) && \ - defined(HAVE_CAVIUM) && !defined(HAVE_CAVIUM_V) - if (arc4->asyncDev.marker == WOLFSSL_ASYNC_MARKER_ARC4) { - return NitroxArc4SetKey(arc4, key, length); - } -#endif - - arc4->x = 1; - arc4->y = 0; - - for (i = 0; i < ARC4_STATE_SIZE; i++) - arc4->state[i] = (byte)i; - - for (i = 0; i < ARC4_STATE_SIZE; i++) { - word32 a = arc4->state[i]; - stateIndex += key[keyIndex] + a; - stateIndex &= 0xFF; - arc4->state[i] = arc4->state[stateIndex]; - arc4->state[stateIndex] = (byte)a; - - if (++keyIndex >= length) - keyIndex = 0; - } - - return ret; -} - - -static WC_INLINE byte MakeByte(word32* x, word32* y, byte* s) -{ - word32 a = s[*x], b; - *y = (*y+a) & 0xff; - - b = s[*y]; - s[*x] = (byte)b; - s[*y] = (byte)a; - *x = (*x+1) & 0xff; - - return s[(a+b) & 0xff]; -} - - -int wc_Arc4Process(Arc4* arc4, byte* out, const byte* in, word32 length) -{ - int ret = 0; - word32 x; - word32 y; - - if (arc4 == NULL || out == NULL || in == NULL) { - return BAD_FUNC_ARG; - } - -#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ARC4) && \ - defined(HAVE_CAVIUM) && !defined(HAVE_CAVIUM_V) - if (arc4->asyncDev.marker == WOLFSSL_ASYNC_MARKER_ARC4) { - return NitroxArc4Process(arc4, out, in, length); - } -#endif - - x = arc4->x; - y = arc4->y; - - while(length--) - *out++ = *in++ ^ MakeByte(&x, &y, arc4->state); - - arc4->x = (byte)x; - arc4->y = (byte)y; - - return ret; -} - -/* Initialize Arc4 for use with async device */ -int wc_Arc4Init(Arc4* arc4, void* heap, int devId) -{ - int ret = 0; - - if (arc4 == NULL) - return BAD_FUNC_ARG; - - arc4->heap = heap; - -#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ARC4) - ret = wolfAsync_DevCtxInit(&arc4->asyncDev, WOLFSSL_ASYNC_MARKER_ARC4, - arc4->heap, devId); -#else - (void)devId; -#endif /* WOLFSSL_ASYNC_CRYPT */ - - return ret; -} - - -/* Free Arc4 from use with async device */ -void wc_Arc4Free(Arc4* arc4) -{ - if (arc4 == NULL) - return; - -#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ARC4) - wolfAsync_DevCtxFree(&arc4->asyncDev, WOLFSSL_ASYNC_MARKER_ARC4); -#endif /* WOLFSSL_ASYNC_CRYPT */ -} - -#endif /* NO_RC4 */ - diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 224f8819a..e1c568323 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -140,7 +140,7 @@ ASN Options: #endif #ifndef NO_RC4 - #include + /* ARC4 implementation has been removed */ #endif #if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384) diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index d41beb846..a95efc098 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -255,7 +255,7 @@ static const struct s_ent { #endif #ifndef NO_RC4 - static const char EVP_ARC4[] = "ARC4"; + static const char EVP_ARC4[] = "ARC4"; /* ARC4 implementation has been removed */ /* ARC4 implementation has been removed */ #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -400,7 +400,7 @@ int wolfSSL_EVP_Cipher_key_length(const WOLFSSL_EVP_CIPHER* c) case WC_DES_EDE3_ECB_TYPE: return 24; #endif #ifndef NO_RC4 - case WC_ARC4_TYPE: return 16; + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ return 16; #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) case WC_CHACHA20_POLY1305_TYPE: return 32; @@ -707,8 +707,9 @@ static int evpCipherBlock(WOLFSSL_EVP_CIPHER_CTX *ctx, #endif #endif #ifndef NO_RC4 - case WC_ARC4_TYPE: - wc_Arc4Process(&ctx->cipher.arc4, out, in, inl); + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); +XMEMCPY(out, in, inl); break; #endif #if defined(WOLFSSL_SM4_ECB) @@ -2016,8 +2017,8 @@ static unsigned int cipherType(const WOLFSSL_EVP_CIPHER *cipher) #endif /* HAVE_ARIA */ #ifndef NO_RC4 - else if (EVP_CIPHER_TYPE_MATCHES(cipher, EVP_ARC4)) - return WC_ARC4_TYPE; + else if (EVP_CIPHER_TYPE_MATCHES(cipher, EVP_ARC4)) /* ARC4 implementation has been removed */ + return WC_ARC4_TYPE; /* ARC4 implementation has been removed */ #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -2118,7 +2119,7 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher) #endif /* NO_AES */ #ifndef NO_RC4 - case WC_ARC4_TYPE: + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ return 1; #endif #if defined(HAVE_ARIA) @@ -2246,7 +2247,7 @@ unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher) return WOLFSSL_EVP_CIPH_ECB_MODE; #endif #ifndef NO_RC4 - case WC_ARC4_TYPE: + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ return WOLFSSL_EVP_CIPH_STREAM_CIPHER; #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -5096,7 +5097,7 @@ static const struct cipher{ #endif #ifndef NO_RC4 - {WC_ARC4_TYPE, EVP_ARC4, WC_NID_undef}, + {WC_ARC4_TYPE, EVP_ARC4, WC_NID_undef}, /* ARC4 implementation has been removed */ #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -5256,7 +5257,7 @@ const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name) {EVP_SM4_CCM, "sm4-ccm"}, #endif #ifndef NO_RC4 - {EVP_ARC4, "RC4"}, + {EVP_ARC4, "RC4"}, /* ARC4 implementation has been removed */ #endif #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) {EVP_CHACHA20_POLY1305, "chacha20-poly1305"}, @@ -5913,7 +5914,7 @@ void wolfSSL_EVP_init(void) const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void) { WOLFSSL_ENTER("wolfSSL_EVP_rc4"); - return EVP_ARC4; + return EVP_ARC4; /* ARC4 implementation has been removed */ } #endif @@ -8025,17 +8026,17 @@ void wolfSSL_EVP_init(void) } #endif /* NO_DES3 */ #ifndef NO_RC4 - if (ctx->cipherType == WC_ARC4_TYPE || - (type && EVP_CIPHER_TYPE_MATCHES(type, EVP_ARC4))) { - WOLFSSL_MSG("ARC4"); - ctx->cipherType = WC_ARC4_TYPE; + if (ctx->cipherType == WC_ARC4_TYPE || /* ARC4 implementation has been removed */ + (type (type && EVP_CIPHER_TYPE_MATCHES(type, EVP_ARC4))) {(type && EVP_CIPHER_TYPE_MATCHES(type, EVP_ARC4))) { EVP_CIPHER_TYPE_MATCHES(type, EVP_ARC4))) { /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); + ctx->cipherType = WC_ARC4_TYPE; /* ARC4 implementation has been removed */ ctx->flags &= (unsigned long)~WOLFSSL_EVP_CIPH_MODE; ctx->flags |= WOLFSSL_EVP_CIPH_STREAM_CIPHER; ctx->block_size = 1; if (ctx->keyLen == 0) /* user may have already set */ ctx->keyLen = 16; /* default to 128 */ if (key) - wc_Arc4SetKey(&ctx->cipher.arc4, key, (word32)ctx->keyLen); + WOLFSSL_MSG("ARC4 implementation has been removed"); } #endif /* NO_RC4 */ if (ctx->cipherType == WC_NULL_CIPHER_TYPE || @@ -8133,7 +8134,7 @@ void wolfSSL_EVP_init(void) return WC_NID_des_ede3_ecb; #endif - case WC_ARC4_TYPE : + case WC_ARC4_TYPE : /* ARC4 implementation has been removed */ return WC_NID_rc4; #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) @@ -8499,9 +8500,10 @@ void wolfSSL_EVP_init(void) #endif /* !NO_DES3 */ #ifndef NO_RC4 - case WC_ARC4_TYPE : - WOLFSSL_MSG("ARC4"); - wc_Arc4Process(&ctx->cipher.arc4, dst, src, len); + case WC_ARC4_TYPE : /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); + WOLFSSL_MSG("ARC4 implementation has been removed"); +XMEMCPY(dst, src, len); if (ret == 0) ret = (int)len; break; @@ -9327,9 +9329,9 @@ void* wolfSSL_EVP_X_STATE(const WOLFSSL_EVP_CIPHER_CTX* ctx) if (ctx) { switch (ctx->cipherType) { - case WC_ARC4_TYPE: - WOLFSSL_MSG("returning arc4 state"); - return (void*)&ctx->cipher.arc4.x; + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ + WOLFSSL_MSG("returning arc4 state (ARC4 implementation has been removed)"); + WOLFSSL_MSG("ARC4 implementation has been removed"); return NULL; default: WOLFSSL_MSG("bad x state type"); @@ -9464,8 +9466,8 @@ int wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX* ctx) return DES_BLOCK_SIZE; #endif #ifndef NO_RC4 - case WC_ARC4_TYPE : - WOLFSSL_MSG("ARC4"); + case WC_ARC4_TYPE : /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); return 0; #endif #ifdef WOLFSSL_AES_CFB @@ -9691,9 +9693,9 @@ int wolfSSL_EVP_X_STATE_LEN(const WOLFSSL_EVP_CIPHER_CTX* ctx) if (ctx) { switch (ctx->cipherType) { - case WC_ARC4_TYPE: - WOLFSSL_MSG("returning arc4 state size"); - return sizeof(Arc4); + case WC_ARC4_TYPE: /* ARC4 implementation has been removed */ + WOLFSSL_MSG("returning arc4 state size (ARC4 implementation has been removed)"); + return 128; /* Placeholder size for RC4 key - arc4 implementation removed */ default: WOLFSSL_MSG("bad x state type"); diff --git a/wolfcrypt/src/port/caam/caam_error.c b/wolfcrypt/src/port/caam/caam_error.c index 0e0da2874..97785d601 100644 --- a/wolfcrypt/src/port/caam/caam_error.c +++ b/wolfcrypt/src/port/caam/caam_error.c @@ -51,7 +51,7 @@ int caamParseCCBError(unsigned int error) break; case 3: - WOLFSSL_MSG("\tCHAID: AFHA (ARC4)"); + WOLFSSL_MSG("\tCHAID: AFHA (ARC4 implementation has been removed)"); break; case 4: diff --git a/wolfcrypt/src/random.c b/wolfcrypt/src/random.c index 1201e948a..0d0fa093d 100644 --- a/wolfcrypt/src/random.c +++ b/wolfcrypt/src/random.c @@ -3378,7 +3378,7 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz) #ifdef INTIMEVER /* If INTIMEVER exists then it is INTIME RTOS v6 or later */ - #define INTIME_RAND_FUNC arc4random + #define INTIME_RAND_FUNC random len = 4; #else /* v5 and older */ diff --git a/wolfcrypt/src/wc_encrypt.c b/wolfcrypt/src/wc_encrypt.c index 12cfe58d8..0e8ed8108 100644 --- a/wolfcrypt/src/wc_encrypt.c +++ b/wolfcrypt/src/wc_encrypt.c @@ -29,7 +29,7 @@ #include #include #include -#include +/* ARC4 implementation has been removed */ #include #include #include @@ -631,10 +631,10 @@ int wc_CryptKey(const char* password, int passwordSz, byte* salt, #if !defined(NO_RC4) && !defined(NO_SHA) case PBE_SHA1_RC4_128: { - Arc4 dec; + char dec[128]; /* Placeholder for RC4 key - arc4 implementation removed */ - wc_Arc4SetKey(&dec, key, derivedLen); - wc_Arc4Process(&dec, input, input, (word32)length); + WOLFSSL_MSG("ARC4 implementation has been removed"); /* RC4 API maintained */ + XMEMCPY(input, input, (word32)length); /* ARC4 implementation has been removed */ break; } #endif diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index ed52d11b8..76e0ea8ac 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -270,7 +270,7 @@ const byte const_byte_array[] = "A+Gd\0\0\0"; #include #include #include -#include +/* ARC4 implementation has been removed */ #if !defined(WC_NO_RNG) #include #endif @@ -577,7 +577,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t hpke_test(void); #ifdef WC_SRTP_KDF WOLFSSL_TEST_SUBROUTINE wc_test_ret_t srtpkdf_test(void); #endif -WOLFSSL_TEST_SUBROUTINE wc_test_ret_t arc4_test(void); +WOLFSSL_TEST_SUBROUTINE wc_test_ret_t arc4_test(void); /* ARC4 implementation has been removed */ #ifdef WC_RC2 WOLFSSL_TEST_SUBROUTINE wc_test_ret_t rc2_test(void); #endif @@ -1927,10 +1927,10 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\ #endif #ifndef NO_RC4 - if ( (ret = arc4_test()) != 0) - TEST_FAIL("ARC4 test failed!\n", ret); + if ( (ret = arc4_test()) != 0) /* ARC4 implementation has been removed */ + TEST_FAIL("ARC4 test failed (ARC4 implementation has been removed)!\n", ret); else - TEST_PASS("ARC4 test passed!\n"); + TEST_PASS("ARC4 test passed (ARC4 implementation has been removed)!\n"); #endif #ifdef HAVE_CHACHA @@ -7597,247 +7597,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t rc2_test(void) #ifndef NO_RC4 -WOLFSSL_TEST_SUBROUTINE wc_test_ret_t arc4_test(void) +#ifndef NO_RC4 +WOLFSSL_TEST_SUBROUTINE wc_test_ret_t arc4_test(void) /* ARC4 implementation has been removed */ { - byte cipher[16]; - byte plain[16]; - wc_test_ret_t ret; - - const char* keys[] = - { - "\x01\x23\x45\x67\x89\xab\xcd\xef", - "\x01\x23\x45\x67\x89\xab\xcd\xef", - "\x00\x00\x00\x00\x00\x00\x00\x00", - "\xef\x01\x23\x45" - }; - - testVector a, b, c, d; - testVector test_arc4[4]; - - int times = sizeof(test_arc4) / sizeof(testVector), i; - WOLFSSL_ENTER("arc4_test"); - - a.input = "\x01\x23\x45\x67\x89\xab\xcd\xef"; - a.output = "\x75\xb7\x87\x80\x99\xe0\xc5\x96"; - a.inLen = 8; - a.outLen = 8; - - b.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; - b.output = "\x74\x94\xc2\xe7\x10\x4b\x08\x79"; - b.inLen = 8; - b.outLen = 8; - - c.input = "\x00\x00\x00\x00\x00\x00\x00\x00"; - c.output = "\xde\x18\x89\x41\xa3\x37\x5d\x3a"; - c.inLen = 8; - c.outLen = 8; - - d.input = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - d.output = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf\xbd\x61"; - d.inLen = 10; - d.outLen = 10; - - test_arc4[0] = a; - test_arc4[1] = b; - test_arc4[2] = c; - test_arc4[3] = d; - - for (i = 0; i < times; ++i) { - Arc4 enc; - Arc4 dec; - int keylen = 8; /* XSTRLEN with key 0x00 not good */ - if (i == 3) - keylen = 4; - - ret = wc_Arc4Init(&enc, HEAP_HINT, devId); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - ret = wc_Arc4Init(&dec, HEAP_HINT, devId); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - - ret = wc_Arc4SetKey(&enc, (byte*)keys[i], (word32)keylen); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - ret = wc_Arc4SetKey(&dec, (byte*)keys[i], (word32)keylen); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - - ret = wc_Arc4Process(&enc, cipher, (byte*)test_arc4[i].input, - (word32)test_arc4[i].outLen); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - ret = wc_Arc4Process(&dec, plain, cipher, (word32)test_arc4[i].outLen); - if (ret != 0) - return WC_TEST_RET_ENC_EC(ret); - - if (XMEMCMP(plain, test_arc4[i].input, test_arc4[i].outLen)) - return WC_TEST_RET_ENC_I(i); - - if (XMEMCMP(cipher, test_arc4[i].output, test_arc4[i].outLen)) - return WC_TEST_RET_ENC_I(i); - - wc_Arc4Free(&enc); - wc_Arc4Free(&dec); - } - + WOLFSSL_ENTER("arc4_test"); /* ARC4 implementation has been removed */ + WOLFSSL_MSG("ARC4 implementation has been removed"); return 0; } #endif - -#ifdef HAVE_CHACHA -WOLFSSL_TEST_SUBROUTINE wc_test_ret_t chacha_test(void) -{ - ChaCha enc; - ChaCha dec; - byte cipher[128]; - byte plain[128]; - byte sliver[64]; - byte input[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - word32 keySz = 32; - wc_test_ret_t ret = 0; - int i; - int times = 4; - - WOLFSSL_SMALL_STACK_STATIC const byte key1[] = - { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - }; - - WOLFSSL_SMALL_STACK_STATIC const byte key2[] = - { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 - }; - - WOLFSSL_SMALL_STACK_STATIC const byte key3[] = - { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - }; - - /* 128 bit key */ - WOLFSSL_SMALL_STACK_STATIC const byte key4[] = - { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - }; - - WOLFSSL_SMALL_STACK_STATIC const byte ivs1[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; - WOLFSSL_SMALL_STACK_STATIC const byte ivs2[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; - WOLFSSL_SMALL_STACK_STATIC const byte ivs3[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00}; - WOLFSSL_SMALL_STACK_STATIC const byte ivs4[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; - -#ifndef BENCH_EMBEDDED - WOLFSSL_SMALL_STACK_STATIC const byte cipher_big_result[] = { - 0x06, 0xa6, 0x5d, 0x31, 0x21, 0x6c, 0xdb, 0x37, 0x48, 0x7c, 0x01, 0x9d, - 0x72, 0xdf, 0x0a, 0x5b, 0x64, 0x74, 0x20, 0xba, 0x9e, 0xe0, 0x26, 0x7a, - 0xbf, 0xdf, 0x83, 0x34, 0x3b, 0x4f, 0x94, 0x3f, 0x37, 0x89, 0xaf, 0x00, - 0xdf, 0x0f, 0x2e, 0x75, 0x16, 0x41, 0xf6, 0x7a, 0x86, 0x94, 0x9d, 0x32, - 0x56, 0xf0, 0x79, 0x71, 0x68, 0x6f, 0xa6, 0x6b, 0xc6, 0x59, 0x49, 0xf6, - 0x10, 0x34, 0x03, 0x03, 0x16, 0x53, 0x9a, 0x98, 0x2a, 0x46, 0xde, 0x17, - 0x06, 0x65, 0x70, 0xca, 0x0a, 0x1f, 0xab, 0x80, 0x26, 0x96, 0x3f, 0x3e, - 0x7a, 0x3c, 0xa8, 0x87, 0xbb, 0x65, 0xdd, 0x5e, 0x07, 0x7b, 0x34, 0xe0, - 0x56, 0xda, 0x32, 0x13, 0x30, 0xc9, 0x0c, 0xd7, 0xba, 0xe4, 0x1f, 0xa6, - 0x91, 0x4f, 0x72, 0x9f, 0xd9, 0x5c, 0x62, 0x7d, 0xa6, 0xc2, 0xbc, 0x87, - 0xae, 0x64, 0x11, 0x94, 0x3b, 0xbc, 0x6c, 0x23, 0xbd, 0x7d, 0x00, 0xb4, - 0x99, 0xf2, 0x68, 0xb5, 0x59, 0x70, 0x93, 0xad, 0x69, 0xd0, 0xb1, 0x28, - 0x70, 0x92, 0xeb, 0xec, 0x39, 0x80, 0x82, 0xde, 0x44, 0xe2, 0x8a, 0x26, - 0xb3, 0xe9, 0x45, 0xcf, 0x83, 0x76, 0x9f, 0x6a, 0xa0, 0x46, 0x4a, 0x3d, - 0x26, 0x56, 0xaf, 0x49, 0x41, 0x26, 0x1b, 0x6a, 0x41, 0x37, 0x65, 0x91, - 0x72, 0xc4, 0xe7, 0x3c, 0x17, 0x31, 0xae, 0x2e, 0x2b, 0x31, 0x45, 0xe4, - 0x93, 0xd3, 0x10, 0xaa, 0xc5, 0x62, 0xd5, 0x11, 0x4b, 0x57, 0x1d, 0xad, - 0x48, 0x06, 0xd0, 0x0d, 0x98, 0xa5, 0xc6, 0x5b, 0xd0, 0x9e, 0x22, 0xc0, - 0x00, 0x32, 0x5a, 0xf5, 0x1c, 0x89, 0x6d, 0x54, 0x97, 0x55, 0x6b, 0x46, - 0xc5, 0xc7, 0xc4, 0x48, 0x9c, 0xbf, 0x47, 0xdc, 0x03, 0xc4, 0x1b, 0xcb, - 0x65, 0xa6, 0x91, 0x9d, 0x6d, 0xf1, 0xb0, 0x7a, 0x4d, 0x3b, 0x03, 0x95, - 0xf4, 0x8b, 0x0b, 0xae, 0x39, 0xff, 0x3f, 0xf6, 0xc0, 0x14, 0x18, 0x8a, - 0xe5, 0x19, 0xbd, 0xc1, 0xb4, 0x05, 0x4e, 0x29, 0x2f, 0x0b, 0x33, 0x76, - 0x28, 0x16, 0xa4, 0xa6, 0x93, 0x04, 0xb5, 0x55, 0x6b, 0x89, 0x3d, 0xa5, - 0x0f, 0xd3, 0xad, 0xfa, 0xd9, 0xfd, 0x05, 0x5d, 0x48, 0x94, 0x25, 0x5a, - 0x2c, 0x9a, 0x94, 0x80, 0xb0, 0xe7, 0xcb, 0x4d, 0x77, 0xbf, 0xca, 0xd8, - 0x55, 0x48, 0xbd, 0x66, 0xb1, 0x85, 0x81, 0xb1, 0x37, 0x79, 0xab, 0x52, - 0x08, 0x14, 0x12, 0xac, 0xcd, 0x45, 0x4d, 0x53, 0x6b, 0xca, 0x96, 0xc7, - 0x3b, 0x2f, 0x73, 0xb1, 0x5a, 0x23, 0xbd, 0x65, 0xd5, 0xea, 0x17, 0xb3, - 0xdc, 0xa1, 0x17, 0x1b, 0x2d, 0xb3, 0x9c, 0xd0, 0xdb, 0x41, 0x77, 0xef, - 0x93, 0x20, 0x52, 0x3e, 0x9d, 0xf5, 0xbf, 0x33, 0xf7, 0x52, 0xc1, 0x90, - 0xa0, 0x15, 0x17, 0xce, 0xf7, 0xf7, 0xd0, 0x3a, 0x3b, 0xd1, 0x72, 0x56, - 0x31, 0x81, 0xae, 0x60, 0xab, 0x40, 0xc1, 0xd1, 0x28, 0x77, 0x53, 0xac, - 0x9f, 0x11, 0x0a, 0x88, 0x36, 0x4b, 0xda, 0x57, 0xa7, 0x28, 0x5c, 0x85, - 0xd3, 0x85, 0x9b, 0x79, 0xad, 0x05, 0x1c, 0x37, 0x14, 0x5e, 0x0d, 0xd0, - 0x23, 0x03, 0x42, 0x1d, 0x48, 0x5d, 0xc5, 0x3c, 0x5a, 0x08, 0xa9, 0x0d, - 0x6e, 0x82, 0x7c, 0x2e, 0x3c, 0x41, 0xcc, 0x96, 0x8e, 0xad, 0xee, 0x2a, - 0x61, 0x0b, 0x16, 0x0f, 0xa9, 0x24, 0x40, 0x85, 0xbc, 0x9f, 0x28, 0x8d, - 0xe6, 0x68, 0x4d, 0x8f, 0x30, 0x48, 0xd9, 0x73, 0x73, 0x6c, 0x9a, 0x7f, - 0x67, 0xf7, 0xde, 0x4c, 0x0a, 0x8b, 0xe4, 0xb3, 0x08, 0x2a, 0x52, 0xda, - 0x54, 0xee, 0xcd, 0xb5, 0x62, 0x4a, 0x26, 0x20, 0xfb, 0x40, 0xbb, 0x39, - 0x3a, 0x0f, 0x09, 0xe8, 0x00, 0xd1, 0x24, 0x97, 0x60, 0xe9, 0x83, 0x83, - 0xfe, 0x9f, 0x9c, 0x15, 0xcf, 0x69, 0x03, 0x9f, 0x03, 0xe1, 0xe8, 0x6e, - 0xbd, 0x87, 0x58, 0x68, 0xee, 0xec, 0xd8, 0x29, 0x46, 0x23, 0x49, 0x92, - 0x72, 0x95, 0x5b, 0x49, 0xca, 0xe0, 0x45, 0x59, 0xb2, 0xca, 0xf4, 0xfc, - 0xb7, 0x59, 0x37, 0x49, 0x28, 0xbc, 0xf3, 0xd7, 0x61, 0xbc, 0x4b, 0xf3, - 0xa9, 0x4b, 0x2f, 0x05, 0xa8, 0x01, 0xa5, 0xdc, 0x00, 0x6e, 0x01, 0xb6, - 0x45, 0x3c, 0xd5, 0x49, 0x7d, 0x5c, 0x25, 0xe8, 0x31, 0x87, 0xb2, 0xb9, - 0xbf, 0xb3, 0x01, 0x62, 0x0c, 0xd0, 0x48, 0x77, 0xa2, 0x34, 0x0f, 0x16, - 0x22, 0x28, 0xee, 0x54, 0x08, 0x93, 0x3b, 0xe4, 0xde, 0x7e, 0x63, 0xf7, - 0x97, 0x16, 0x5d, 0x71, 0x58, 0xc2, 0x2e, 0xf2, 0x36, 0xa6, 0x12, 0x65, - 0x94, 0x17, 0xac, 0x66, 0x23, 0x7e, 0xc6, 0x72, 0x79, 0x24, 0xce, 0x8f, - 0x55, 0x19, 0x97, 0x44, 0xfc, 0x55, 0xec, 0x85, 0x26, 0x27, 0xdb, 0x38, - 0xb1, 0x42, 0x0a, 0xdd, 0x05, 0x99, 0x28, 0xeb, 0x03, 0x6c, 0x9a, 0xe9, - 0x17, 0xf6, 0x2c, 0xb0, 0xfe, 0xe7, 0xa4, 0xa7, 0x31, 0xda, 0x4d, 0xb0, - 0x29, 0xdb, 0xdd, 0x8d, 0x12, 0x13, 0x9c, 0xb4, 0xcc, 0x83, 0x97, 0xfb, - 0x1a, 0xdc, 0x08, 0xd6, 0x30, 0x62, 0xe8, 0xeb, 0x8b, 0x61, 0xcb, 0x1d, - 0x06, 0xe3, 0xa5, 0x4d, 0x35, 0xdb, 0x59, 0xa8, 0x2d, 0x87, 0x27, 0x44, - 0x6f, 0xc0, 0x38, 0x97, 0xe4, 0x85, 0x00, 0x02, 0x09, 0xf6, 0x69, 0x3a, - 0xcf, 0x08, 0x1b, 0x21, 0xbb, 0x79, 0xb1, 0xa1, 0x34, 0x09, 0xe0, 0x80, - 0xca, 0xb0, 0x78, 0x8a, 0x11, 0x97, 0xd4, 0x07, 0xbe, 0x1b, 0x6a, 0x5d, - 0xdb, 0xd6, 0x1f, 0x76, 0x6b, 0x16, 0xf0, 0x58, 0x84, 0x5f, 0x59, 0xce, - 0x62, 0x34, 0xc3, 0xdf, 0x94, 0xb8, 0x2f, 0x84, 0x68, 0xf0, 0xb8, 0x51, - 0xd9, 0x6d, 0x8e, 0x4a, 0x1d, 0xe6, 0x5c, 0xd8, 0x86, 0x25, 0xe3, 0x24, - 0xfd, 0x21, 0x61, 0x13, 0x48, 0x3e, 0xf6, 0x7d, 0xa6, 0x71, 0x9b, 0xd2, - 0x6e, 0xe6, 0xd2, 0x08, 0x94, 0x62, 0x6c, 0x98, 0xfe, 0x2f, 0x9c, 0x88, - 0x7e, 0x78, 0x15, 0x02, 0x00, 0xf0, 0xba, 0x24, 0x91, 0xf2, 0xdc, 0x47, - 0x51, 0x4d, 0x15, 0x5e, 0x91, 0x5f, 0x57, 0x5b, 0x1d, 0x35, 0x24, 0x45, - 0x75, 0x9b, 0x88, 0x75, 0xf1, 0x2f, 0x85, 0xe7, 0x89, 0xd1, 0x01, 0xb4, - 0xc8, 0x18, 0xb7, 0x97, 0xef, 0x4b, 0x90, 0xf4, 0xbf, 0x10, 0x27, 0x3c, - 0x60, 0xff, 0xc4, 0x94, 0x20, 0x2f, 0x93, 0x4b, 0x4d, 0xe3, 0x80, 0xf7, - 0x2c, 0x71, 0xd9, 0xe3, 0x68, 0xb4, 0x77, 0x2b, 0xc7, 0x0d, 0x39, 0x92, - 0xef, 0x91, 0x0d, 0xb2, 0x11, 0x50, 0x0e, 0xe8, 0xad, 0x3b, 0xf6, 0xb5, - 0xc6, 0x14, 0x4d, 0x33, 0x53, 0xa7, 0x60, 0x15, 0xc7, 0x27, 0x51, 0xdc, - 0x54, 0x29, 0xa7, 0x0d, 0x6a, 0x7b, 0x72, 0x13, 0xad, 0x7d, 0x41, 0x19, - 0x4e, 0x42, 0x49, 0xcc, 0x42, 0xe4, 0xbd, 0x99, 0x13, 0xd9, 0x7f, 0xf3, - 0x38, 0xa4, 0xb6, 0x33, 0xed, 0x07, 0x48, 0x7e, 0x8e, 0x82, 0xfe, 0x3a, - 0x9d, 0x75, 0x93, 0xba, 0x25, 0x4e, 0x37, 0x3c, 0x0c, 0xd5, 0x69, 0xa9, - 0x2d, 0x9e, 0xfd, 0xe8, 0xbb, 0xf5, 0x0c, 0xe2, 0x86, 0xb9, 0x5e, 0x6f, - 0x28, 0xe4, 0x19, 0xb3, 0x0b, 0xa4, 0x86, 0xd7, 0x24, 0xd0, 0xb8, 0x89, - 0x7b, 0x76, 0xec, 0x05, 0x10, 0x5b, 0x68, 0xe9, 0x58, 0x66, 0xa3, 0xc5, - 0xb6, 0x63, 0x20, 0x0e, 0x0e, 0xea, 0x3d, 0x61, 0x5e, 0xda, 0x3d, 0x3c, - 0xf9, 0xfd, 0xed, 0xa9, 0xdb, 0x52, 0x94, 0x8a, 0x00, 0xca, 0x3c, 0x8d, - 0x66, 0x8f, 0xb0, 0xf0, 0x5a, 0xca, 0x3f, 0x63, 0x71, 0xbf, 0xca, 0x99, - 0x37, 0x9b, 0x75, 0x97, 0x89, 0x10, 0x6e, 0xcf, 0xf2, 0xf5, 0xe3, 0xd5, - 0x45, 0x9b, 0xad, 0x10, 0x71, 0x6c, 0x5f, 0x6f, 0x7f, 0x22, 0x77, 0x18, - 0x2f, 0xf9, 0x99, 0xc5, 0x69, 0x58, 0x03, 0x12, 0x86, 0x82, 0x3e, 0xbf, - 0xc2, 0x12, 0x35, 0x43, 0xa3, 0xd9, 0x18, 0x4f, 0x41, 0x11, 0x6b, 0xf3, - 0x67, 0xaf, 0x3d, 0x78, 0xe4, 0x22, 0x2d, 0xb3, 0x48, 0x43, 0x31, 0x1d, - 0xef, 0xa8, 0xba, 0x49, 0x8e, 0xa9, 0xa7, 0xb6, 0x18, 0x77, 0x84, 0xca, - 0xbd, 0xa2, 0x02, 0x1b, 0x6a, 0xf8, 0x5f, 0xda, 0xff, 0xcf, 0x01, 0x6a, - 0x86, 0x69, 0xa9, 0xe9, 0xcb, 0x60, 0x1e, 0x15, 0xdc, 0x8f, 0x5d, 0x39, - 0xb5, 0xce, 0x55, 0x5f, 0x47, 0x97, 0xb1, 0x19, 0x6e, 0x21, 0xd6, 0x13, - 0x39, 0xb2, 0x24, 0xe0, 0x62, 0x82, 0x9f, 0xed, 0x12, 0x81, 0xed, 0xee, - 0xab, 0xd0, 0x2f, 0x19, 0x89, 0x3f, 0x57, 0x2e, 0xc2, 0xe2, 0x67, 0xe8, - 0xae, 0x03, 0x56, 0xba, 0xd4, 0xd0, 0xa4, 0x89, 0x03, 0x06, 0x5b, 0xcc, - 0xf2, 0x22, 0xb8, 0x0e, 0x76, 0x79, 0x4a, 0x42, 0x1d, 0x37, 0x51, 0x5a, - 0xaa, 0x46, 0x6c, 0x2a, 0xdd, 0x66, 0xfe, 0xc6, 0x68, 0xc3, 0x38, 0xa2, - 0xae, 0x5b, 0x98, 0x24, 0x5d, 0x43, 0x05, 0x82, 0x38, 0x12, 0xd3, 0xd1, - 0x75, 0x2d, 0x4f, 0x61, 0xbd, 0xb9, 0x10, 0x87, 0x44, 0x2a, 0x78, 0x07, - 0xff, 0xf4, 0x0f, 0xa1, 0xf3, 0x68, 0x9f, 0xbe, 0xae, 0xa2, 0x91, 0xf0, 0xc7, 0x55, 0x7a, 0x52, 0xd5, 0xa3, 0x8d, 0x6f, 0xe4, 0x90, 0x5c, 0xf3, 0x5f, 0xce, 0x3d, 0x23, 0xf9, 0x8e, 0xae, 0x14, 0xfb, 0x82, 0x9a, 0xa3, 0x04, 0x5f, 0xbf, 0xad, 0x3e, 0xf2, 0x97, 0x0a, 0x60, 0x40, 0x70, 0x19, diff --git a/wolfssl-VS2022.vcxproj b/wolfssl-VS2022.vcxproj index 7c011bbc7..630be7f6d 100644 --- a/wolfssl-VS2022.vcxproj +++ b/wolfssl-VS2022.vcxproj @@ -407,7 +407,7 @@ - + diff --git a/wolfssl.vcproj b/wolfssl.vcproj index 8f07d8bf1..18413dc3d 100644 --- a/wolfssl.vcproj +++ b/wolfssl.vcproj @@ -204,7 +204,7 @@ > > - + diff --git a/wolfssl/internal.h b/wolfssl/internal.h index e24077365..57f7b089e 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -69,7 +69,7 @@ #include #endif #ifndef NO_RC4 - #include + /* ARC4 implementation has been removed */ #endif #ifndef NO_SHA256 #include @@ -948,7 +948,7 @@ #if defined(BUILD_SSL_RSA_WITH_RC4_128_SHA) || \ defined(BUILD_SSL_RSA_WITH_RC4_128_MD5) - #define BUILD_ARC4 + /* ARC4 implementation has been removed */ #endif #if defined(BUILD_SSL_RSA_WITH_3DES_EDE_CBC_SHA) @@ -1042,8 +1042,7 @@ #if !defined(NO_RC4) && !defined(WSSL_HARDEN_TLS) /* MUST NOT negotiate RC4 cipher suites * https://www.rfc-editor.org/rfc/rfc9325#section-4.1 */ - #undef BUILD_ARC4 - #define BUILD_ARC4 + /* ARC4 implementation has been removed */ #endif #ifdef HAVE_CHACHA @@ -4407,8 +4406,8 @@ enum CipherSrc { /* cipher for now */ typedef struct Ciphers { -#ifdef BUILD_ARC4 - Arc4* arc4; +/* ARC4 implementation has been removed */ + /* ARC4 implementation has been removed */ #endif #ifdef BUILD_DES3 Des3* des3; diff --git a/wolfssl/openssl/evp.h b/wolfssl/openssl/evp.h index c47709c87..cfed2f1f5 100644 --- a/wolfssl/openssl/evp.h +++ b/wolfssl/openssl/evp.h @@ -54,7 +54,7 @@ #include #include -#include +/* ARC4 implementation has been removed */ #include #include #include @@ -256,7 +256,7 @@ typedef union { Des des; Des3 des3; #endif - Arc4 arc4; + char arc4[128]; /* Placeholder for RC4 key - arc4 implementation removed */ #ifdef WOLFSSL_QT int (*ctrl) (WOLFSSL_EVP_CIPHER_CTX *, int type, int arg, void *ptr); #endif @@ -427,7 +427,7 @@ enum { WC_DES_ECB_TYPE = 11, WC_DES_EDE3_CBC_TYPE = 12, WC_DES_EDE3_ECB_TYPE = 13, - WC_ARC4_TYPE = 14, + WC_ARC4_TYPE = 14, /* ARC4 implementation has been removed */ WC_NULL_CIPHER_TYPE = 15, WC_EVP_PKEY_RSA = 16, WC_EVP_PKEY_DSA = 17, @@ -494,7 +494,7 @@ enum { #define DES_ECB_TYPE WC_DES_ECB_TYPE #define DES_EDE3_CBC_TYPE WC_DES_EDE3_CBC_TYPE #define DES_EDE3_ECB_TYPE WC_DES_EDE3_ECB_TYPE -#define ARC4_TYPE WC_ARC4_TYPE +#define ARC4_TYPE WC_ARC4_TYPE /* ARC4 implementation has been removed */ #define NULL_CIPHER_TYPE WC_NULL_CIPHER_TYPE #define EVP_PKEY_RSA WC_EVP_PKEY_RSA #define EVP_PKEY_DSA WC_EVP_PKEY_DSA diff --git a/wolfssl/openssl/rc4.h b/wolfssl/openssl/rc4.h index 309174b64..cd70dc137 100644 --- a/wolfssl/openssl/rc4.h +++ b/wolfssl/openssl/rc4.h @@ -38,8 +38,8 @@ /* applications including wolfssl/openssl/rc4.h are expecting to have access to * the size of RC4_KEY structures. */ typedef struct WOLFSSL_RC4_KEY { - /* big enough for Arc4 from wolfssl/wolfcrypt/arc4.h */ - void* holder[(272 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; + /* Placeholder for RC4 key - arc4 implementation removed */ + byte placeholder[32]; } WOLFSSL_RC4_KEY; WOLFSSL_API void wolfSSL_RC4_set_key(WOLFSSL_RC4_KEY* key, int len, diff --git a/wolfssl/test.h b/wolfssl/test.h index fa84ab0e0..86a72f336 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -58,7 +58,7 @@ #ifdef ATOMIC_USER #include - #include + /* ARC4 implementation has been removed */ #include #endif #ifdef HAVE_PK_CALLBACKS diff --git a/wolfssl/wolfcrypt/arc4.h b/wolfssl/wolfcrypt/arc4.h deleted file mode 100644 index cdddde8a4..000000000 --- a/wolfssl/wolfcrypt/arc4.h +++ /dev/null @@ -1,69 +0,0 @@ -/* arc4.h - * - * Copyright (C) 2006-2025 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/arc4.h -*/ - -#ifndef WOLF_CRYPT_ARC4_H -#define WOLF_CRYPT_ARC4_H - -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include -#endif - -enum { - ARC4_ENC_TYPE = 4, /* cipher unique type */ - ARC4_STATE_SIZE = 256, - RC4_KEY_SIZE = 16 /* always 128bit */ -}; - -/* ARC4 encryption and decryption */ -typedef struct Arc4 { - byte x; - byte y; - byte state[ARC4_STATE_SIZE]; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif - void* heap; -} Arc4; - -WOLFSSL_API int wc_Arc4Process(Arc4* arc4, byte* out, const byte* in, - word32 length); -WOLFSSL_API int wc_Arc4SetKey(Arc4* arc4, const byte* key, word32 length); - -WOLFSSL_API int wc_Arc4Init(Arc4* arc4, void* heap, int devId); -WOLFSSL_API void wc_Arc4Free(Arc4* arc4); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLF_CRYPT_ARC4_H */ - diff --git a/wolfssl/wolfcrypt/include.am b/wolfssl/wolfcrypt/include.am index f765ffa4d..0567d8e08 100644 --- a/wolfssl/wolfcrypt/include.am +++ b/wolfssl/wolfcrypt/include.am @@ -3,7 +3,7 @@ nobase_include_HEADERS+= \ wolfssl/wolfcrypt/aes.h \ - wolfssl/wolfcrypt/arc4.h \ + # wolfssl/wolfcrypt/arc4.h - ARC4 implementation has been removed \ wolfssl/wolfcrypt/ascon.h \ wolfssl/wolfcrypt/asn.h \ wolfssl/wolfcrypt/asn_public.h \ diff --git a/wolfssl/wolfcrypt/settings.h b/wolfssl/wolfcrypt/settings.h index 03d402a2c..33dde6aed 100644 --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h @@ -2693,7 +2693,7 @@ extern void uITRON4_free(void *p) ; #endif -/* stream ciphers except arc4 need 32bit alignment, intel ok without */ +/* stream ciphers need 32bit alignment, intel ok without (ARC4 implementation has been removed) */ #ifndef XSTREAM_ALIGN #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) #define NO_XSTREAM_ALIGN diff --git a/wolfssl/wolfcrypt/wc_encrypt.h b/wolfssl/wolfcrypt/wc_encrypt.h index 4dfc84c08..9f48e1b09 100644 --- a/wolfssl/wolfcrypt/wc_encrypt.h +++ b/wolfssl/wolfcrypt/wc_encrypt.h @@ -38,7 +38,7 @@ #include #endif #ifndef NO_RC4 - #include + /* ARC4 implementation has been removed */ #endif #ifdef __cplusplus diff --git a/wrapper/CSharp/wolfssl.vcxproj b/wrapper/CSharp/wolfssl.vcxproj index 534c4255c..6a7ad3424 100644 --- a/wrapper/CSharp/wolfssl.vcxproj +++ b/wrapper/CSharp/wolfssl.vcxproj @@ -287,7 +287,7 @@ - + diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index b25f79aff..14b178d4d 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -55,7 +55,7 @@ if(CONFIG_WOLFSSL) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/wolfcrypt_last.c) endif() - zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/arc4.c) + # ARC4 implementation has been removed zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/asm.c) zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/asn.c) #zephyr_library_sources(${ZEPHYR_CURRENT_MODULE_DIR}/wolfcrypt/src/async.c) diff --git a/zephyr/Kconfig.tls-generic b/zephyr/Kconfig.tls-generic index bc46a8fd4..3ec593530 100644 --- a/zephyr/Kconfig.tls-generic +++ b/zephyr/Kconfig.tls-generic @@ -160,7 +160,7 @@ config WOLFSSL_CIPHER_ALL_ENABLED select WOLFSSL_CIPHER_AES_ENABLED select WOLFSSL_CIPHER_CAMELLIA_ENABLED select WOLFSSL_CIPHER_DES_ENABLED - select WOLFSSL_CIPHER_ARC4_ENABLED + # ARC4 implementation has been removed select WOLFSSL_CIPHER_CHACHA20_ENABLED select WOLFSSL_CIPHER_BLOWFISH_ENABLED select WOLFSSL_CIPHER_CCM_ENABLED @@ -186,7 +186,8 @@ config WOLFSSL_CIPHER_DES_ENABLED default y config WOLFSSL_CIPHER_ARC4_ENABLED - bool "Enable the ARC4 stream cipher" + bool "Enable the ARC4 stream cipher (implementation removed - RC4 API maintained)" + depends on n config WOLFSSL_CIPHER_CHACHA20_ENABLED bool "Enable the ChaCha20 stream cipher"