summaryrefslogtreecommitdiff
path: root/unit
diff options
context:
space:
mode:
authorArchie Pusaka <apusaka@chromium.org>2020-04-07 16:56:08 +0800
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2020-04-07 12:52:24 -0700
commit18169e7c239885fe306900f9ba8a13628ecb2f3c (patch)
tree4f6cea1ce14cded90c38c0167984c767f1ef5a74 /unit
parent992ce8be2ccbcf34f6fd21d429d7e2e55144e3f8 (diff)
downloadbluez-18169e7c239885fe306900f9ba8a13628ecb2f3c.tar.gz
unit/test-crypto: test for bt_crypto_verify_att_sign
Adding tests for verifying att signature
Diffstat (limited to 'unit')
-rw-r--r--unit/test-crypto.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/unit/test-crypto.c b/unit/test-crypto.c
index e20b2fa66..46c7c0e5c 100644
--- a/unit/test-crypto.c
+++ b/unit/test-crypto.c
@@ -272,6 +272,58 @@ static void test_gatt_hash(gconstpointer data)
tester_test_passed();
}
+struct verify_sign_test_data {
+ const uint8_t *msg;
+ uint16_t msg_len;
+ const uint8_t *key;
+ bool match;
+};
+
+static const uint8_t msg_to_verify_pass[] = {
+ 0xd2, 0x12, 0x00, 0x13, 0x37, 0x01, 0x00, 0x00, 0x00, 0xF1, 0x87, 0x1E,
+ 0x93, 0x3C, 0x90, 0x0F, 0xf2
+};
+
+static const struct verify_sign_test_data verify_sign_pass_data = {
+ .msg = msg_to_verify_pass,
+ .msg_len = sizeof(msg_to_verify_pass),
+ .key = key_5,
+ .match = true,
+};
+
+static const uint8_t msg_to_verify_bad_sign[] = {
+ 0xd2, 0x12, 0x00, 0x13, 0x37, 0x01, 0x00, 0x00, 0x00, 0xF1, 0x87, 0x1E,
+ 0x93, 0x3C, 0x90, 0x0F, 0xf1
+};
+
+static const struct verify_sign_test_data verify_sign_bad_sign_data = {
+ .msg = msg_to_verify_bad_sign,
+ .msg_len = sizeof(msg_to_verify_bad_sign),
+ .key = key_5,
+ .match = false,
+};
+
+static const uint8_t msg_to_verify_too_short[] = {
+ 0xd2, 0x12, 0x00, 0x13, 0x37
+};
+
+static const struct verify_sign_test_data verify_sign_too_short_data = {
+ .msg = msg_to_verify_too_short,
+ .msg_len = sizeof(msg_to_verify_too_short),
+ .key = key_5,
+ .match = false,
+};
+
+static void test_verify_sign(gconstpointer data)
+{
+ const struct verify_sign_test_data *d = data;
+ bool result = bt_crypto_verify_att_sign(crypto, d->key, d->msg,
+ d->msg_len);
+ g_assert(result == d->match);
+
+ tester_test_passed();
+}
+
int main(int argc, char *argv[])
{
int exit_status;
@@ -292,6 +344,13 @@ int main(int argc, char *argv[])
tester_add("/crypto/gatt_hash", NULL, NULL, test_gatt_hash, NULL);
+ tester_add("/crypto/verify_sign_pass", &verify_sign_pass_data,
+ NULL, test_verify_sign, NULL);
+ tester_add("/crypto/verify_sign_bad_sign", &verify_sign_bad_sign_data,
+ NULL, test_verify_sign, NULL);
+ tester_add("/crypto/verify_sign_too_short", &verify_sign_too_short_data,
+ NULL, test_verify_sign, NULL);
+
exit_status = tester_run();
bt_crypto_unref(crypto);