[Cryptech-Commits] [sw/libhal] 02/02: Add hal_rpc_pkey_match() tests to C client test code.

git at cryptech.is git at cryptech.is
Sun Nov 6 06:16:15 UTC 2016


This is an automated email from the git hooks/post-receive script.

sra at hactrn.net pushed a commit to branch ksng
in repository sw/libhal.

commit 9d03d73315cc1cb5d4276409410c55c8fc556675
Author: Rob Austein <sra at hactrn.net>
AuthorDate: Sat Nov 5 21:51:47 2016 -0400

    Add hal_rpc_pkey_match() tests to C client test code.
---
 tests/test-rpc_pkey.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 41 insertions(+), 7 deletions(-)

diff --git a/tests/test-rpc_pkey.c b/tests/test-rpc_pkey.c
index a82978d..789422e 100644
--- a/tests/test-rpc_pkey.c
+++ b/tests/test-rpc_pkey.c
@@ -56,16 +56,20 @@ static inline const char *ecdsa_curve_to_string(const hal_curve_name_t curve)
   }
 }
 
-static int test_attributes(const hal_pkey_handle_t pkey)
+static int test_attributes(const hal_pkey_handle_t pkey,
+                           const hal_uuid_t * const name,
+                           const hal_key_flags_t flags)
 {
   static const size_t sizes[] = { 32, 100, 260, 1000, 2000, 2048, 0 };
+  static const char format[] = "Test attribute %lu";
+
   hal_error_t err;
   size_t n;
 
   for (const size_t *size = sizes; *size; size++) {
     uint8_t buf_1[*size], buf_2[*size];
     memset(buf_1, 0x55, sizeof(buf_1));
-    snprintf((char *) buf_1, sizeof(buf_1), "Test attribute %lu", (unsigned long) *size);
+    snprintf((char *) buf_1, sizeof(buf_1), format, (unsigned long) *size);
 
     if ((err = hal_rpc_pkey_set_attribute(pkey, *size, buf_1, sizeof(buf_1))) != HAL_OK)
       lose("Could not set attribute %lu: %s\n",
@@ -88,7 +92,37 @@ static int test_attributes(const hal_pkey_handle_t pkey)
            (unsigned long) *size, hal_error_string(err));
   }
 
-#warning Still need something to test hal_rpc_pkey_match()
+  {
+    const hal_client_handle_t client = {HAL_HANDLE_NONE};
+    const hal_session_handle_t session = {HAL_HANDLE_NONE};
+    hal_uuid_t result[10], previous_uuid = {{0}};
+    unsigned result_len;
+
+    if ((err = hal_rpc_pkey_match(client, session, HAL_KEY_TYPE_NONE, HAL_CURVE_NONE, flags, NULL, 0,
+                                  result, &result_len, sizeof(result)/sizeof(*result), &previous_uuid)) != HAL_OK)
+      lose("Unrestricted match() failed: %s\n", hal_error_string(err));
+
+    if (result_len == 0)
+      lose("Unrestricted match found no results\n");
+
+    for (const size_t *size = sizes; *size; size++) {
+      uint8_t buf[*size];
+      memset(buf, 0x55, sizeof(buf));
+      snprintf((char *) buf, sizeof(buf), format, (unsigned long) *size);
+      hal_rpc_pkey_attribute_t attribute[1] = {{ *size, sizeof(buf), buf }};
+
+      if ((err = hal_rpc_pkey_match(client, session, HAL_KEY_TYPE_NONE, HAL_CURVE_NONE, flags,
+                                    attribute, sizeof(attribute)/sizeof(*attribute),
+                                    result, &result_len, sizeof(result)/sizeof(*result), &previous_uuid)) != HAL_OK)
+        lose("Restricted match() for attribute %lu failed: %s\n", (unsigned long) *size, hal_error_string(err));
+
+      if (result_len == 0)
+        lose("Restricted match for attribute %lu found no results\n", (unsigned long) *size);
+    }
+
+#warning More hal_rpc_pkey_match() testing here.
+
+  }
 
   return 1;
 
@@ -172,7 +206,7 @@ static int test_rsa_testvec(const rsa_tc_t * const tc, hal_key_flags_t flags)
                                    digestinfo, digestinfo_len, tc->s.val, tc->s.len)) != HAL_OK)
       lose("Could not verify: %s\n", hal_error_string(err));
 
-    if (!test_attributes(private_key) || !test_attributes(public_key))
+    if (!test_attributes(private_key, &private_name, flags) || !test_attributes(public_key, &public_name, flags))
       goto fail;
 
     if ((err = hal_rpc_pkey_delete(private_key)) != HAL_OK)
@@ -259,7 +293,7 @@ static int test_ecdsa_testvec(const ecdsa_tc_t * const tc, hal_key_flags_t flags
                                    tc->H, tc->H_len, sig, len)) != HAL_OK)
       lose("Could not verify own signature: %s\n", hal_error_string(err));
 
-    if (!test_attributes(private_key) || !test_attributes(public_key))
+    if (!test_attributes(private_key, &private_name, flags) || !test_attributes(public_key, &public_name, flags))
       goto fail;
 
     if ((err = hal_rpc_pkey_delete(private_key)) != HAL_OK)
@@ -336,7 +370,7 @@ static int test_rsa_generate(const rsa_tc_t * const tc, hal_key_flags_t flags)
                                    digestinfo, digestinfo_len, sig, len)) != HAL_OK)
       lose("Could not verify: %s\n", hal_error_string(err));
 
-    if (!test_attributes(private_key) || !test_attributes(public_key))
+    if (!test_attributes(private_key, &private_name, flags) || !test_attributes(public_key, &public_name, flags))
       goto fail;
 
     if ((err = hal_rpc_pkey_delete(private_key)) != HAL_OK)
@@ -404,7 +438,7 @@ static int test_ecdsa_generate(const ecdsa_tc_t * const tc, hal_key_flags_t flag
                                    tc->H, tc->H_len, sig, len)) != HAL_OK)
       lose("Could not verify own signature: %s\n", hal_error_string(err));
 
-    if (!test_attributes(private_key) || !test_attributes(public_key))
+    if (!test_attributes(private_key, &private_name, flags) || !test_attributes(public_key, &public_name, flags))
       goto fail;
 
     if ((err = hal_rpc_pkey_delete(private_key)) != HAL_OK)



More information about the Commits mailing list