|
@@ -239,7 +239,6 @@
|
|
|
#include <wolfssl/wolfcrypt/dh.h>
|
|
|
#include <wolfssl/wolfcrypt/dsa.h>
|
|
|
#include <wolfssl/wolfcrypt/srp.h>
|
|
|
-#include <wolfssl/wolfcrypt/idea.h>
|
|
|
#include <wolfssl/wolfcrypt/chacha.h>
|
|
|
#include <wolfssl/wolfcrypt/chacha20_poly1305.h>
|
|
|
#include <wolfssl/wolfcrypt/pwdbased.h>
|
|
@@ -527,9 +526,6 @@ WOLFSSL_TEST_SUBROUTINE int certext_test(void);
|
|
|
defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN)
|
|
|
WOLFSSL_TEST_SUBROUTINE int decodedCertCache_test(void);
|
|
|
#endif
|
|
|
-#ifdef HAVE_IDEA
|
|
|
-WOLFSSL_TEST_SUBROUTINE int idea_test(void);
|
|
|
-#endif
|
|
|
WOLFSSL_TEST_SUBROUTINE int memory_test(void);
|
|
|
#ifdef HAVE_VALGRIND
|
|
|
WOLFSSL_TEST_SUBROUTINE int mp_test(void);
|
|
@@ -1157,13 +1153,6 @@ options: [-s max_relative_stack_bytes] [-m max_relative_heap_memory_bytes]\n\
|
|
|
TEST_PASS("CAMELLIA test passed!\n");
|
|
|
#endif
|
|
|
|
|
|
-#ifdef HAVE_IDEA
|
|
|
- if ( (ret = idea_test()) != 0)
|
|
|
- return err_sys("IDEA test failed!\n", ret);
|
|
|
- else
|
|
|
- TEST_PASS("IDEA test passed!\n");
|
|
|
-#endif
|
|
|
-
|
|
|
#ifndef NO_RSA
|
|
|
#ifdef WC_RSA_NO_PADDING
|
|
|
if ( (ret = rsa_no_pad_test()) != 0)
|
|
@@ -11019,280 +11008,6 @@ WOLFSSL_TEST_SUBROUTINE int camellia_test(void)
|
|
|
}
|
|
|
#endif /* HAVE_CAMELLIA */
|
|
|
|
|
|
-#ifdef HAVE_IDEA
|
|
|
-WOLFSSL_TEST_SUBROUTINE int idea_test(void)
|
|
|
-{
|
|
|
- int ret;
|
|
|
- word16 i, j;
|
|
|
-
|
|
|
- Idea idea;
|
|
|
- byte data[IDEA_BLOCK_SIZE];
|
|
|
-
|
|
|
- /* Project NESSIE test vectors */
|
|
|
-#define IDEA_NB_TESTS 6
|
|
|
-#define IDEA_NB_TESTS_EXTRA 4
|
|
|
-
|
|
|
- WOLFSSL_SMALL_STACK_STATIC const byte v_key[IDEA_NB_TESTS][IDEA_KEY_SIZE] = {
|
|
|
- { 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37,
|
|
|
- 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37 },
|
|
|
- { 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
|
|
|
- 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 },
|
|
|
- { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F },
|
|
|
- { 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
|
|
|
- 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48 },
|
|
|
- { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F },
|
|
|
- { 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
|
|
|
- 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48 },
|
|
|
- };
|
|
|
-
|
|
|
- WOLFSSL_SMALL_STACK_STATIC const byte v1_plain[IDEA_NB_TESTS][IDEA_BLOCK_SIZE] = {
|
|
|
- { 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37 },
|
|
|
- { 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57 },
|
|
|
- { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
|
|
|
- { 0xEA, 0x02, 0x47, 0x14, 0xAD, 0x5C, 0x4D, 0x84 },
|
|
|
- { 0xDB, 0x2D, 0x4A, 0x92, 0xAA, 0x68, 0x27, 0x3F },
|
|
|
- { 0xF1, 0x29, 0xA6, 0x60, 0x1E, 0xF6, 0x2A, 0x47 },
|
|
|
- };
|
|
|
-
|
|
|
- WOLFSSL_SMALL_STACK_STATIC const byte v1_cipher[IDEA_NB_TESTS][IDEA_BLOCK_SIZE] = {
|
|
|
- { 0x54, 0xCF, 0x21, 0xE3, 0x89, 0xD8, 0x73, 0xEC },
|
|
|
- { 0x85, 0x52, 0x4D, 0x41, 0x0E, 0xB4, 0x28, 0xAE },
|
|
|
- { 0xF5, 0x26, 0xAB, 0x9A, 0x62, 0xC0, 0xD2, 0x58 },
|
|
|
- { 0xC8, 0xFB, 0x51, 0xD3, 0x51, 0x66, 0x27, 0xA8 },
|
|
|
- { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },
|
|
|
- { 0xEA, 0x02, 0x47, 0x14, 0xAD, 0x5C, 0x4D, 0x84 },
|
|
|
- };
|
|
|
-
|
|
|
- WOLFSSL_SMALL_STACK_STATIC const byte v1_cipher_100[IDEA_NB_TESTS_EXTRA][IDEA_BLOCK_SIZE] = {
|
|
|
- { 0x12, 0x46, 0x2F, 0xD0, 0xFB, 0x3A, 0x63, 0x39 },
|
|
|
- { 0x15, 0x61, 0xE8, 0xC9, 0x04, 0x54, 0x8B, 0xE9 },
|
|
|
- { 0x42, 0x12, 0x2A, 0x94, 0xB0, 0xF6, 0xD2, 0x43 },
|
|
|
- { 0x53, 0x4D, 0xCD, 0x48, 0xDD, 0xD5, 0xF5, 0x9C },
|
|
|
- };
|
|
|
-
|
|
|
- WOLFSSL_SMALL_STACK_STATIC const byte v1_cipher_1000[IDEA_NB_TESTS_EXTRA][IDEA_BLOCK_SIZE] = {
|
|
|
- { 0x44, 0x1B, 0x38, 0x5C, 0x77, 0x29, 0x75, 0x34 },
|
|
|
- { 0xF0, 0x4E, 0x58, 0x88, 0x44, 0x99, 0x22, 0x2D },
|
|
|
- { 0xB3, 0x5F, 0x93, 0x7F, 0x6A, 0xA0, 0xCD, 0x1F },
|
|
|
- { 0x9A, 0xEA, 0x46, 0x8F, 0x42, 0x9B, 0xBA, 0x15 },
|
|
|
- };
|
|
|
-
|
|
|
- /* CBC test */
|
|
|
- const char *message = "International Data Encryption Algorithm";
|
|
|
- byte msg_enc[40], msg_dec[40];
|
|
|
-
|
|
|
- for (i = 0; i < IDEA_NB_TESTS; i++) {
|
|
|
- /* Set encryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE,
|
|
|
- NULL, IDEA_ENCRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (enc) failed\n");
|
|
|
- return -6800;
|
|
|
- }
|
|
|
-
|
|
|
- /* Data encryption */
|
|
|
- ret = wc_IdeaCipher(&idea, data, v1_plain[i]);
|
|
|
- if (ret != 0 || XMEMCMP(&v1_cipher[i], data, IDEA_BLOCK_SIZE)) {
|
|
|
- printf("Bad encryption\n");
|
|
|
- return -6801;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set decryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE,
|
|
|
- NULL, IDEA_DECRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (dec) failed\n");
|
|
|
- return -6802;
|
|
|
- }
|
|
|
-
|
|
|
- /* Data decryption */
|
|
|
- ret = wc_IdeaCipher(&idea, data, data);
|
|
|
- if (ret != 0 || XMEMCMP(v1_plain[i], data, IDEA_BLOCK_SIZE)) {
|
|
|
- printf("Bad decryption\n");
|
|
|
- return -6803;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set encryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE,
|
|
|
- v_key[i], IDEA_ENCRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (enc) failed\n");
|
|
|
- return -6804;
|
|
|
- }
|
|
|
-
|
|
|
- XMEMSET(msg_enc, 0, sizeof(msg_enc));
|
|
|
- ret = wc_IdeaCbcEncrypt(&idea, msg_enc, (byte *)message,
|
|
|
- (word32)XSTRLEN(message)+1);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaCbcEncrypt failed\n");
|
|
|
- return -6805;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set decryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE,
|
|
|
- v_key[i], IDEA_DECRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (dec) failed\n");
|
|
|
- return -6806;
|
|
|
- }
|
|
|
-
|
|
|
- XMEMSET(msg_dec, 0, sizeof(msg_dec));
|
|
|
- ret = wc_IdeaCbcDecrypt(&idea, msg_dec, msg_enc,
|
|
|
- (word32)XSTRLEN(message)+1);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaCbcDecrypt failed\n");
|
|
|
- return -6807;
|
|
|
- }
|
|
|
-
|
|
|
- if (XMEMCMP(message, msg_dec, (word32)XSTRLEN(message))) {
|
|
|
- printf("Bad CBC decryption\n");
|
|
|
- return -6808;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for (i = 0; i < IDEA_NB_TESTS_EXTRA; i++) {
|
|
|
- /* Set encryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE,
|
|
|
- NULL, IDEA_ENCRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (enc) failed\n");
|
|
|
- return -6809;
|
|
|
- }
|
|
|
-
|
|
|
- /* 100 times data encryption */
|
|
|
- XMEMCPY(data, v1_plain[i], IDEA_BLOCK_SIZE);
|
|
|
- for (j = 0; j < 100; j++) {
|
|
|
- ret = wc_IdeaCipher(&idea, data, data);
|
|
|
- if (ret != 0) {
|
|
|
- return -6810;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (XMEMCMP(v1_cipher_100[i], data, IDEA_BLOCK_SIZE)) {
|
|
|
- printf("Bad encryption (100 times)\n");
|
|
|
- return -6811;
|
|
|
- }
|
|
|
-
|
|
|
- /* 1000 times data encryption */
|
|
|
- XMEMCPY(data, v1_plain[i], IDEA_BLOCK_SIZE);
|
|
|
- for (j = 0; j < 1000; j++) {
|
|
|
- ret = wc_IdeaCipher(&idea, data, data);
|
|
|
- if (ret != 0) {
|
|
|
- return -6812;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (XMEMCMP(v1_cipher_1000[i], data, IDEA_BLOCK_SIZE)) {
|
|
|
- printf("Bad encryption (100 times)\n");
|
|
|
- return -6813;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-#ifndef WC_NO_RNG
|
|
|
- /* random test for CBC */
|
|
|
- {
|
|
|
- WC_RNG rng;
|
|
|
- byte key[IDEA_KEY_SIZE], iv[IDEA_BLOCK_SIZE],
|
|
|
- *rnd, *enc, *dec;
|
|
|
-
|
|
|
-#define IDEA_SCRATCH_BUFFER_SIZE 1000
|
|
|
- rnd = (byte *)XMALLOC(IDEA_SCRATCH_BUFFER_SIZE, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- enc = (byte *)XMALLOC(IDEA_SCRATCH_BUFFER_SIZE, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- dec = (byte *)XMALLOC(IDEA_SCRATCH_BUFFER_SIZE, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
-
|
|
|
- if ((rnd == NULL) || (enc == NULL) || (dec == NULL)) {
|
|
|
- if (rnd)
|
|
|
- XFREE(rnd, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- if (enc)
|
|
|
- XFREE(enc, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- if (dec)
|
|
|
- XFREE(dec, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- return -6823;
|
|
|
- }
|
|
|
-
|
|
|
- /* random values */
|
|
|
- #ifndef HAVE_FIPS
|
|
|
- ret = wc_InitRng_ex(&rng, HEAP_HINT, devId);
|
|
|
- #else
|
|
|
- ret = wc_InitRng(&rng);
|
|
|
- #endif
|
|
|
- if (ret != 0)
|
|
|
- return -6814;
|
|
|
-
|
|
|
- for (i = 0; i < 1000; i++) {
|
|
|
- /* random key */
|
|
|
- ret = wc_RNG_GenerateBlock(&rng, key, sizeof(key));
|
|
|
- if (ret != 0)
|
|
|
- return -6815;
|
|
|
-
|
|
|
- /* random iv */
|
|
|
- ret = wc_RNG_GenerateBlock(&rng, iv, sizeof(iv));
|
|
|
- if (ret != 0)
|
|
|
- return -6816;
|
|
|
-
|
|
|
- /* random data */
|
|
|
- ret = wc_RNG_GenerateBlock(&rng, rnd, IDEA_SCRATCH_BUFFER_SIZE);
|
|
|
- if (ret != 0)
|
|
|
- return -6817;
|
|
|
-
|
|
|
- /* Set encryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, key, IDEA_KEY_SIZE, iv, IDEA_ENCRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (enc) failed\n");
|
|
|
- return -6818;
|
|
|
- }
|
|
|
-
|
|
|
- /* Data encryption */
|
|
|
- XMEMSET(enc, 0, IDEA_SCRATCH_BUFFER_SIZE);
|
|
|
- ret = wc_IdeaCbcEncrypt(&idea, enc, rnd, IDEA_SCRATCH_BUFFER_SIZE);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaCbcEncrypt failed\n");
|
|
|
- return -6819;
|
|
|
- }
|
|
|
-
|
|
|
- /* Set decryption key */
|
|
|
- XMEMSET(&idea, 0, sizeof(Idea));
|
|
|
- ret = wc_IdeaSetKey(&idea, key, IDEA_KEY_SIZE, iv, IDEA_DECRYPTION);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaSetKey (enc) failed\n");
|
|
|
- return -6820;
|
|
|
- }
|
|
|
-
|
|
|
- /* Data decryption */
|
|
|
- XMEMSET(dec, 0, IDEA_SCRATCH_BUFFER_SIZE);
|
|
|
- ret = wc_IdeaCbcDecrypt(&idea, dec, enc, IDEA_SCRATCH_BUFFER_SIZE);
|
|
|
- if (ret != 0) {
|
|
|
- printf("wc_IdeaCbcDecrypt failed\n");
|
|
|
- return -6821;
|
|
|
- }
|
|
|
-
|
|
|
- if (XMEMCMP(rnd, dec, IDEA_SCRATCH_BUFFER_SIZE)) {
|
|
|
- printf("Bad CBC decryption\n");
|
|
|
- return -6822;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- XFREE(rnd, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- XFREE(enc, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
- XFREE(dec, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
|
|
-#undef IDEA_SCRATCH_BUFFER_SIZE
|
|
|
-
|
|
|
- wc_FreeRng(&rng);
|
|
|
- }
|
|
|
-#endif /* WC_NO_RNG */
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#endif /* HAVE_IDEA */
|
|
|
-
|
|
|
#ifdef HAVE_XCHACHA
|
|
|
WOLFSSL_TEST_SUBROUTINE int XChaCha_test(void) {
|
|
|
int ret = -6830;
|