public-key: Add optional parameters argument to verify() method

This commit is contained in:
Tobias Brunner
2017-11-08 16:48:10 +01:00
parent 677072accc
commit a413571f3b
28 changed files with 60 additions and 46 deletions
+3 -2
View File
@@ -59,7 +59,7 @@ static void test_good_sig(private_key_t *privkey, public_key_t *pubkey)
}
fail_unless(privkey->sign(privkey, schemes[i].scheme, data, &sig),
"sign %N", signature_scheme_names, schemes[i].scheme);
fail_unless(pubkey->verify(pubkey, schemes[i].scheme, data, sig),
fail_unless(pubkey->verify(pubkey, schemes[i].scheme, NULL, data, sig),
"verify %N", signature_scheme_names, schemes[i].scheme);
free(sig.ptr);
}
@@ -121,7 +121,8 @@ static void test_bad_sigs(public_key_t *pubkey)
for (i = 0; i < countof(invalid_sigs); i++)
{
fail_if(
pubkey->verify(pubkey, schemes[s].scheme, data, invalid_sigs[i]),
pubkey->verify(pubkey, schemes[s].scheme, NULL, data,
invalid_sigs[i]),
"bad %N sig accepted %B",
signature_scheme_names, schemes[s].scheme,
&invalid_sigs[i]);
+13 -9
View File
@@ -302,8 +302,8 @@ START_TEST(test_ed25519_sign)
ck_assert(chunk_equals(sig, sig_tests[_i].sig));
/* verify */
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, sig_tests[_i].msg,
sig_tests[_i].sig));
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, NULL, sig_tests[_i].msg,
sig_tests[_i].sig));
/* cleanup */
key->destroy(key);
@@ -375,10 +375,10 @@ START_TEST(test_ed25519_gen)
ck_assert(!pubkey->encrypt(pubkey, ENCRYPT_UNKNOWN, msg, NULL));
/* verify with wrong signature scheme */
ck_assert(!pubkey->verify(pubkey, SIGN_ED448, msg, sig));
ck_assert(!pubkey->verify(pubkey, SIGN_ED448, NULL, msg, sig));
/* verify with correct signature scheme */
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, msg, sig));
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, NULL, msg, sig));
/* cleanup */
key->destroy(key);
@@ -407,7 +407,7 @@ START_TEST(test_ed25519_speed)
ck_assert(key->sign(key, SIGN_ED25519, msg, &sig));
pubkey = key->get_public_key(key);
ck_assert(pubkey != NULL);
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, msg, sig));
ck_assert(pubkey->verify(pubkey, SIGN_ED25519, NULL, msg, sig));
key->destroy(key);
pubkey->destroy(pubkey);
chunk_free(&sig);
@@ -476,25 +476,29 @@ START_TEST(test_ed25519_fail)
BUILD_BLOB_ASN1_DER, sig_tests[0].pubkey, BUILD_END);
ck_assert(pubkey != NULL);
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, chunk_empty, chunk_empty));
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, NULL, chunk_empty,
chunk_empty));
/* malformed signature */
sig = chunk_create(sig1, 64);
memcpy(sig1, sig_tests[0].sig.ptr, 64);
sig1[63] |= 0xe0;
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, sig_tests[0].msg, sig));
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, NULL, sig_tests[0].msg,
sig));
/* wrong signature */
memcpy(sig1, sig_tests[0].sig.ptr, 64);
sig1[0] = 0xe4;
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, sig_tests[0].msg, sig));
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, NULL, sig_tests[0].msg,
sig));
/* detect all-zeroes public key */
pubkey->destroy(pubkey);
pubkey = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_ED25519,
BUILD_BLOB_ASN1_DER, zero_pk, BUILD_END);
ck_assert(pubkey != NULL);
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, sig_tests[0].msg, sig));
ck_assert(!pubkey->verify(pubkey, SIGN_ED25519, NULL, sig_tests[0].msg,
sig));
pubkey->destroy(pubkey);
}
END_TEST
+2 -2
View File
@@ -49,7 +49,7 @@ static void test_good_sig(private_key_t *privkey, public_key_t *pubkey)
}
fail_unless(privkey->sign(privkey, schemes[i], data, &sig),
"sign %N", signature_scheme_names, schemes[i]);
fail_unless(pubkey->verify(pubkey, schemes[i], data, sig),
fail_unless(pubkey->verify(pubkey, schemes[i], NULL, data, sig),
"verify %N", signature_scheme_names, schemes[i]);
free(sig.ptr);
}
@@ -106,7 +106,7 @@ static void test_bad_sigs(public_key_t *pubkey)
for (i = 0; i < countof(invalid_sigs); i++)
{
fail_if(
pubkey->verify(pubkey, schemes[s], data, invalid_sigs[i]),
pubkey->verify(pubkey, schemes[s], NULL, data, invalid_sigs[i]),
"bad %N sig accepted %B", signature_scheme_names, schemes[s],
&invalid_sigs[i]);
}