@@ -51595,6 +51595,39 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t lms_test(void)
5159551595 ERROR_OUT(WC_TEST_RET_ENC_I(sigSz), out);
5159651596 }
5159751597
51598+ /* Test wc_LmsKey_Sign input validation. */
51599+ {
51600+ word32 smallSz = 1;
51601+ wc_lms_write_private_key_cb saved_write_cb;
51602+ void* saved_ctx;
51603+
51604+ /* Undersized sig buffer should return BUFFER_E. */
51605+ ret = wc_LmsKey_Sign(&signingKey, sig, &smallSz, (byte *) msg, msgSz);
51606+ if (ret != WC_NO_ERR_TRACE(BUFFER_E)) {
51607+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
51608+ }
51609+
51610+ /* NULL write callback should return BAD_FUNC_ARG. */
51611+ saved_write_cb = signingKey.write_private_key;
51612+ signingKey.write_private_key = NULL;
51613+ ret = wc_LmsKey_Sign(&signingKey, sig, &sigSz, (byte *) msg, msgSz);
51614+ signingKey.write_private_key = saved_write_cb;
51615+ if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) {
51616+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
51617+ }
51618+
51619+ /* NULL context should return BAD_FUNC_ARG. */
51620+ saved_ctx = signingKey.context;
51621+ signingKey.context = NULL;
51622+ ret = wc_LmsKey_Sign(&signingKey, sig, &sigSz, (byte *) msg, msgSz);
51623+ signingKey.context = saved_ctx;
51624+ if (ret != WC_NO_ERR_TRACE(BAD_FUNC_ARG)) {
51625+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
51626+ }
51627+
51628+ ret = 0;
51629+ }
51630+
5159851631 /* 2 ** 5 should be the max number of signatures */
5159951632 for (i = 0; i < 32; ++i) {
5160051633 /* We should have remaining signstures. */
0 commit comments