summaryrefslogtreecommitdiff
path: root/tests/vb20_rsa_padding_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vb20_rsa_padding_tests.c')
-rw-r--r--tests/vb20_rsa_padding_tests.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/vb20_rsa_padding_tests.c b/tests/vb20_rsa_padding_tests.c
index 8a0d58af..03a38ee1 100644
--- a/tests/vb20_rsa_padding_tests.c
+++ b/tests/vb20_rsa_padding_tests.c
@@ -14,6 +14,14 @@
#include "test_common.h"
#include "vb2_common.h"
+vb2_error_t hwcrypto_modexp_return_value = VB2_SUCCESS;
+vb2_error_t vb2ex_hwcrypto_modexp(const struct vb2_public_key *key,
+ uint8_t *inout,
+ uint32_t *workbuf32, int exp) {
+ return hwcrypto_modexp_return_value;
+}
+
+
/**
* Test valid and invalid signatures.
*/
@@ -67,6 +75,20 @@ static void test_verify_digest(struct vb2_public_key *key) {
TEST_EQ(vb2_rsa_verify_digest(key, NULL, test_message_sha1_hash, &wb),
VB2_ERROR_RSA_VERIFY_PARAM, "vb2_rsa_verify_digest() bad arg");
+ key->allow_hwcrypto = 1;
+ memcpy(sig, signatures[0], sizeof(sig));
+ vb2_workbuf_init(&wb, workbuf, sizeof(workbuf));
+ hwcrypto_modexp_return_value = VB2_SUCCESS;
+ TEST_NEQ(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
+ VB2_SUCCESS, "vb2_rsa_verify_digest() hwcrypto modexp fails");
+
+ memcpy(sig, signatures[0], sizeof(sig));
+ vb2_workbuf_init(&wb, workbuf, sizeof(workbuf));
+ hwcrypto_modexp_return_value = VB2_ERROR_EX_HWCRYPTO_UNSUPPORTED;
+ TEST_SUCC(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
+ "vb2_rsa_verify_digest() hwcrypto modexp fallback to sw");
+ key->allow_hwcrypto = 0;
+
memcpy(sig, signatures[0], sizeof(sig));
vb2_workbuf_init(&wb, workbuf, sizeof(sig) * 3 - 1);
TEST_EQ(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),