dsa: check that key was created before export.

This commit is contained in:
jordan
2026-06-09 12:27:08 -05:00
parent 8b8603c702
commit f063721fac
2 changed files with 8 additions and 0 deletions
+3
View File
@@ -555,6 +555,9 @@ int test_wc_DsaExportKeyRaw(void)
ExpectIntEQ(wc_InitDsaKey(&key), 0);
ExpectIntEQ(wc_InitRng(&rng), 0);
ExpectIntEQ(wc_MakeDsaParameters(&rng, 1024, &key), 0);
/* export before make key should return error. */
ExpectIntEQ(wc_DsaExportKeyRaw(&key, xOut, &xOutSz, yOut, &yOutSz),
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
ExpectIntEQ(wc_MakeDsaKey(&rng, &key), 0);
/* try successful export */
+5
View File
@@ -709,6 +709,11 @@ int wc_DsaExportKeyRaw(DsaKey* dsa, byte* x, word32* xSz, byte* y, word32* ySz)
if (dsa == NULL || xSz == NULL || ySz == NULL)
return BAD_FUNC_ARG;
/* check we have a key to export */
if (mp_iszero(&dsa->x) || mp_iszero(&dsa->y)) {
return BAD_FUNC_ARG;
}
/* get required output buffer sizes */
xLen = (word32)mp_unsigned_bin_size(&dsa->x);
yLen = (word32)mp_unsigned_bin_size(&dsa->y);