[Cryptech-Commits] [sw/libhal] 02/02: Tweak keystore API to allow update-in-place, so hal_ks_rename() will work.

git at cryptech.is git at cryptech.is
Mon May 16 04:12:10 UTC 2016


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

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

commit 19de5cd21bde4dcee12c40cd53d5592cbd91bc7b
Author: Rob Austein <sra at hactrn.net>
AuthorDate: Sun May 15 23:49:03 2016 -0400

    Tweak keystore API to allow update-in-place, so hal_ks_rename() will work.
---
 hal_internal.h | 3 ++-
 ks.c           | 4 ++--
 ks_flash.c     | 5 +++--
 ks_mmap.c      | 5 +++--
 ks_volatile.c  | 5 +++--
 5 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/hal_internal.h b/hal_internal.h
index 4b572eb..253dc09 100644
--- a/hal_internal.h
+++ b/hal_internal.h
@@ -298,7 +298,8 @@ typedef struct {
 extern const hal_ks_keydb_t *hal_ks_get_keydb(void);
 
 extern hal_error_t hal_ks_set_keydb(const hal_ks_key_t * const key,
-                                    const int loc);
+                                    const int loc,
+                                    const int updating);
 
 extern hal_error_t hal_ks_del_keydb(const int loc);
 
diff --git a/ks.c b/ks.c
index 758162b..15dcaf3 100644
--- a/ks.c
+++ b/ks.c
@@ -113,7 +113,7 @@ hal_error_t hal_ks_store(const hal_key_type_t type,
   k.curve = curve;
   k.flags = flags;
 
-  if ((err = hal_ks_set_keydb(&k, *hint)) != HAL_OK)
+  if ((err = hal_ks_set_keydb(&k, *hint, 0)) != HAL_OK)
     return err;
 
   return HAL_OK;
@@ -273,7 +273,7 @@ hal_error_t hal_ks_rename(const hal_key_type_t type,
   memcpy(k.name, new_name, new_name_len);
   k.name_len = new_name_len;
 
-  return hal_ks_set_keydb(&k, *hint);
+  return hal_ks_set_keydb(&k, *hint, 1);
 }
 
 hal_error_t hal_ks_list(hal_pkey_info_t *result,
diff --git a/ks_flash.c b/ks_flash.c
index eee259b..95aa6ed 100644
--- a/ks_flash.c
+++ b/ks_flash.c
@@ -46,9 +46,10 @@ const hal_ks_keydb_t *hal_ks_get_keydb(void)
 }
 
 hal_error_t hal_ks_set_keydb(const hal_ks_key_t * const key,
-                             const int loc)
+                             const int loc,
+                             const int updating)
 {
-  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || key->in_use)
+  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || (!key->in_use != !updating))
     return HAL_ERROR_BAD_ARGUMENTS;
 
 #error Not sure what goes here yet either
diff --git a/ks_mmap.c b/ks_mmap.c
index e62aa46..cca9d3f 100644
--- a/ks_mmap.c
+++ b/ks_mmap.c
@@ -104,9 +104,10 @@ const hal_ks_keydb_t *hal_ks_get_keydb(void)
 }
 
 hal_error_t hal_ks_set_keydb(const hal_ks_key_t * const key,
-                             const int loc)
+                             const int loc,
+                             const int updating)
 {
-  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || key->in_use)
+  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || (!key->in_use != !updating))
     return HAL_ERROR_BAD_ARGUMENTS;
 
   db->keys[loc] = *key;
diff --git a/ks_volatile.c b/ks_volatile.c
index 9a47d52..00f656a 100644
--- a/ks_volatile.c
+++ b/ks_volatile.c
@@ -72,9 +72,10 @@ const hal_ks_keydb_t *hal_ks_get_keydb(void)
 }
 
 hal_error_t hal_ks_set_keydb(const hal_ks_key_t * const key,
-                             const int loc)
+                             const int loc,
+                             const int updating)
 {
-  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || key->in_use)
+  if (key == NULL || loc < 0 || loc >= sizeof(db->keys)/sizeof(*db->keys) || (!key->in_use != !updating))
     return HAL_ERROR_BAD_ARGUMENTS;
 
   db->keys[loc] = *key;



More information about the Commits mailing list