@@ -12494,6 +12494,7 @@ static int test_wc_Sha256Update(void)
1249412494#ifndef NO_SHA256
1249512495 wc_Sha256 sha256;
1249612496 byte hash[WC_SHA256_DIGEST_SIZE];
12497+ byte hash_unaligned[WC_SHA256_DIGEST_SIZE+1];
1249712498 testVector a, b, c;
1249812499
1249912500 ExpectIntEQ(wc_InitSha256(&sha256), 0);
@@ -12517,6 +12518,11 @@ static int test_wc_Sha256Update(void)
1251712518 ExpectIntEQ(wc_Sha256Final(&sha256, hash), 0);
1251812519 ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA256_DIGEST_SIZE), 0);
1251912520
12521+ /* Unaligned check. */
12522+ ExpectIntEQ(wc_Sha256Update(&sha256, (byte*)a.input+1, (word32)a.inLen-1),
12523+ 0);
12524+ ExpectIntEQ(wc_Sha256Final(&sha256, hash_unaligned + 1), 0);
12525+
1252012526 /* Try passing in bad values */
1252112527 b.input = NULL;
1252212528 b.inLen = 0;
@@ -12721,6 +12727,7 @@ static int test_wc_Sha512Update(void)
1272112727#ifdef WOLFSSL_SHA512
1272212728 wc_Sha512 sha512;
1272312729 byte hash[WC_SHA512_DIGEST_SIZE];
12730+ byte hash_unaligned[WC_SHA512_DIGEST_SIZE + 1];
1272412731 testVector a, b, c;
1272512732
1272612733 ExpectIntEQ(wc_InitSha512(&sha512), 0);
@@ -12747,6 +12754,11 @@ static int test_wc_Sha512Update(void)
1274712754
1274812755 ExpectIntEQ(XMEMCMP(hash, a.output, WC_SHA512_DIGEST_SIZE), 0);
1274912756
12757+ /* Unaligned check. */
12758+ ExpectIntEQ(wc_Sha512Update(&sha512, (byte*)a.input+1, (word32)a.inLen-1),
12759+ 0);
12760+ ExpectIntEQ(wc_Sha512Final(&sha512, hash_unaligned+1), 0);
12761+
1275012762 /* Try passing in bad values */
1275112763 b.input = NULL;
1275212764 b.inLen = 0;
@@ -20091,15 +20103,18 @@ static int test_wc_ed25519_make_key(void)
2009120103#if defined(HAVE_ED25519) && defined(HAVE_ED25519_MAKE_KEY)
2009220104 ed25519_key key;
2009320105 WC_RNG rng;
20094- unsigned char pubkey[ED25519_PUB_KEY_SIZE];
20106+ unsigned char pubkey[ED25519_PUB_KEY_SIZE+1];
20107+ int pubkey_sz = ED25519_PUB_KEY_SIZE;
2009520108
2009620109 XMEMSET(&key, 0, sizeof(ed25519_key));
2009720110 XMEMSET(&rng, 0, sizeof(WC_RNG));
2009820111
2009920112 ExpectIntEQ(wc_ed25519_init(&key), 0);
2010020113 ExpectIntEQ(wc_InitRng(&rng), 0);
2010120114
20102- ExpectIntEQ(wc_ed25519_make_public(&key, pubkey, sizeof(pubkey)),
20115+ ExpectIntEQ(wc_ed25519_make_public(&key, pubkey, pubkey_sz),
20116+ ECC_PRIV_KEY_E);
20117+ ExpectIntEQ(wc_ed25519_make_public(&key, pubkey+1, pubkey_sz),
2010320118 ECC_PRIV_KEY_E);
2010420119 ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0);
2010520120
@@ -20149,18 +20164,18 @@ static int test_wc_ed25519_sign_msg(void)
2014920164 WC_RNG rng;
2015020165 ed25519_key key;
2015120166 byte msg[] = "Everybody gets Friday off.\n";
20152- byte sig[ED25519_SIG_SIZE];
20167+ byte sig[ED25519_SIG_SIZE+1 ];
2015320168 word32 msglen = sizeof(msg);
20154- word32 siglen = sizeof(sig) ;
20155- word32 badSigLen = sizeof(sig) - 1;
20169+ word32 siglen = ED25519_SIG_SIZE ;
20170+ word32 badSigLen = ED25519_SIG_SIZE - 1;
2015620171#ifdef HAVE_ED25519_VERIFY
2015720172 int verify_ok = 0; /*1 = Verify success.*/
2015820173#endif
2015920174
2016020175 /* Initialize stack variables. */
2016120176 XMEMSET(&key, 0, sizeof(ed25519_key));
2016220177 XMEMSET(&rng, 0, sizeof(WC_RNG));
20163- XMEMSET(sig, 0, siglen );
20178+ XMEMSET(sig, 0, sizeof(sig) );
2016420179
2016520180 /* Initialize key. */
2016620181 ExpectIntEQ(wc_ed25519_init(&key), 0);
@@ -20169,6 +20184,8 @@ static int test_wc_ed25519_sign_msg(void)
2016920184
2017020185 ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig, &siglen, &key), 0);
2017120186 ExpectIntEQ(siglen, ED25519_SIG_SIZE);
20187+ ExpectIntEQ(wc_ed25519_sign_msg(msg, msglen, sig+1, &siglen, &key), 0);
20188+ ExpectIntEQ(siglen, ED25519_SIG_SIZE);
2017220189
2017320190 /* Test bad args. */
2017420191 ExpectIntEQ(wc_ed25519_sign_msg(NULL, msglen, sig, &siglen, &key),
@@ -20185,24 +20202,24 @@ static int test_wc_ed25519_sign_msg(void)
2018520202 badSigLen -= 1;
2018620203
2018720204#ifdef HAVE_ED25519_VERIFY
20188- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, &verify_ok,
20205+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen, msg, msglen, &verify_ok,
2018920206 &key), 0);
2019020207 ExpectIntEQ(verify_ok, 1);
2019120208
2019220209 /* Test bad args. */
20193- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen - 1, msg, msglen, &verify_ok ,
20194- &key), BAD_FUNC_ARG);
20195- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen + 1, msg, msglen, &verify_ok ,
20196- &key), BAD_FUNC_ARG);
20210+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen - 1, msg, msglen,
20211+ &verify_ok, & key), BAD_FUNC_ARG);
20212+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen + 1, msg, msglen,
20213+ &verify_ok, & key), BAD_FUNC_ARG);
2019720214 ExpectIntEQ(wc_ed25519_verify_msg(NULL, siglen, msg, msglen, &verify_ok,
2019820215 &key), BAD_FUNC_ARG);
20199- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, NULL, msglen, &verify_ok,
20216+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen, NULL, msglen, &verify_ok,
2020020217 &key), BAD_FUNC_ARG);
20201- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, NULL, &key),
20218+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen, msg, msglen, NULL, &key),
2020220219 BAD_FUNC_ARG);
20203- ExpectIntEQ(wc_ed25519_verify_msg(sig, siglen, msg, msglen, &verify_ok,
20220+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , siglen, msg, msglen, &verify_ok,
2020420221 NULL), BAD_FUNC_ARG);
20205- ExpectIntEQ(wc_ed25519_verify_msg(sig, badSigLen, msg, msglen, &verify_ok,
20222+ ExpectIntEQ(wc_ed25519_verify_msg(sig+1 , badSigLen, msg, msglen, &verify_ok,
2020620223 &key), BAD_FUNC_ARG);
2020720224#endif /* Verify. */
2020820225
0 commit comments