linuxkm rsa: km_pkcs1_sign should return sig_len on success.

This commit is contained in:
jordan
2025-05-23 22:29:16 -05:00
parent 402ebec3b7
commit da9410565d

View File

@@ -1281,6 +1281,9 @@ static unsigned int km_pkcs1_key_size(struct crypto_sig *tfm)
* - dst is destination signature buffer. * - dst is destination signature buffer.
* - dlen must be >= key_len size. * - dlen must be >= key_len size.
* *
* Returns signature length on success.
* Returns < 0 on error.
*
* See kernel (6.13 or later): * See kernel (6.13 or later):
* - include/crypto/sig.h * - include/crypto/sig.h
*/ */
@@ -1361,7 +1364,7 @@ static int km_pkcs1_sign(struct crypto_sig *tfm,
goto pkcs1_sign_out; goto pkcs1_sign_out;
} }
err = 0; err = sig_len;
pkcs1_sign_out: pkcs1_sign_out:
if (msg != NULL) { free(msg); msg = NULL; } if (msg != NULL) { free(msg); msg = NULL; }
@@ -3098,12 +3101,19 @@ static int linuxkm_test_pkcs1_driver(const char * driver, int nbits,
} }
ret = crypto_sig_sign(tfm, hash, hash_len, km_sig, key_len); ret = crypto_sig_sign(tfm, hash, hash_len, km_sig, key_len);
if (ret) { if (ret < 0) {
pr_err("error: crypto_sig_sign returned: %d\n", ret); pr_err("error: crypto_sig_sign returned: %d\n", ret);
test_rc = BAD_FUNC_ARG; test_rc = BAD_FUNC_ARG;
goto test_pkcs1_end; goto test_pkcs1_end;
} }
if ((word32) ret != sig_len) {
pr_err("error: crypto_sig_sign returned %d, expected %d\n", ret,
sig_len);
test_rc = BAD_FUNC_ARG;
goto test_pkcs1_end;
}
n_diff = memcmp(km_sig, sig, sig_len); n_diff = memcmp(km_sig, sig, sig_len);
if (n_diff) { if (n_diff) {
pr_err("error: km-sig doesn't match sig: %d\n", n_diff); pr_err("error: km-sig doesn't match sig: %d\n", n_diff);
@@ -3118,7 +3128,6 @@ static int linuxkm_test_pkcs1_driver(const char * driver, int nbits,
goto test_pkcs1_end; goto test_pkcs1_end;
} }
test_rc = 0; test_rc = 0;
test_pkcs1_end: test_pkcs1_end:
if (tfm) { crypto_free_sig(tfm); tfm = NULL; } if (tfm) { crypto_free_sig(tfm); tfm = NULL; }