@@ -29918,6 +29918,58 @@ static wc_test_ret_t ecc_test_nonblock(WC_RNG* rng)
2991829918}
2991929919#endif /* WC_ECC_NONBLOCK && WOLFSSL_HAVE_SP_ECC && WOLFSSL_PUBLIC_MP */
2992029920
29921+ #if !defined(NO_ASN) && !defined(HAVE_SELFTEST) && \
29922+ (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \
29923+ (HAVE_FIPS_VERSION > 2)))
29924+ static int ecc_test_raw_enc_dec(void)
29925+ {
29926+ int ret;
29927+ unsigned char r[1];
29928+ word32 rSz;
29929+ unsigned char s[1];
29930+ word32 sSz;
29931+ unsigned char rZero[] = { 0, 0, 0, 0 };
29932+ unsigned char sOne[] = { 0, 0, 1 };
29933+ unsigned char sigRaw[32];
29934+ word32 sigRawSz;
29935+ unsigned char expSig[] = { 0x30, 0x06, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01 };
29936+
29937+ sigRawSz = sizeof(sigRaw);
29938+ ret = wc_ecc_rs_raw_to_sig(rZero, sizeof(rZero), sOne, sizeof(sOne),
29939+ sigRaw, &sigRawSz);
29940+ if (ret != 0) {
29941+ return WC_TEST_RET_ENC_EC(ret);
29942+ }
29943+ if (sigRawSz != sizeof(expSig)) {
29944+ return WC_TEST_RET_ENC_EC((int)sigRawSz);
29945+ }
29946+ if (XMEMCMP(sigRaw, expSig, sizeof(expSig)) != 0) {
29947+ return WC_TEST_RET_ENC_NC;
29948+ }
29949+
29950+ rSz = sizeof(r);
29951+ sSz = sizeof(s);
29952+ ret = wc_ecc_sig_to_rs(sigRaw, sigRawSz, r, &rSz, s, &sSz);
29953+ if (ret != 0) {
29954+ return WC_TEST_RET_ENC_EC(ret);
29955+ }
29956+ if (rSz != 1) {
29957+ return WC_TEST_RET_ENC_EC((int)rSz);
29958+ }
29959+ if (sSz != 1) {
29960+ return WC_TEST_RET_ENC_EC((int)sSz);
29961+ }
29962+ if (r[0] != 0) {
29963+ return WC_TEST_RET_ENC_EC(r[0]);
29964+ }
29965+ if (s[0] != 1) {
29966+ return WC_TEST_RET_ENC_EC(s[0]);
29967+ }
29968+
29969+ return ret;
29970+ }
29971+ #endif
29972+
2992129973WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_test(void)
2992229974{
2992329975 wc_test_ret_t ret;
@@ -30042,6 +30094,16 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_test(void)
3004230094 }
3004330095#endif
3004430096
30097+ #if !defined(NO_ASN) && !defined(HAVE_SELFTEST) && \
30098+ (!defined(HAVE_FIPS) || (defined(HAVE_FIPS_VERSION) && \
30099+ (HAVE_FIPS_VERSION > 2)))
30100+ ret = ecc_test_raw_enc_dec();
30101+ if (ret != 0) {
30102+ printf("raw sig encode/decode\n");
30103+ goto done;
30104+ }
30105+ #endif
30106+
3004530107#if defined(WOLFSSL_CUSTOM_CURVES)
3004630108 ret = ecc_test_custom_curves(&rng);
3004730109 if (ret != 0) {
0 commit comments