aboutsummaryrefslogtreecommitdiff
path: root/hal_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'hal_internal.h')
-rw-r--r--hal_internal.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/hal_internal.h b/hal_internal.h
index 9896ac0..0c38c00 100644
--- a/hal_internal.h
+++ b/hal_internal.h
@@ -250,7 +250,7 @@ extern const hal_rpc_pkey_dispatch_t hal_rpc_local_pkey_dispatch, hal_rpc_remote
* one for RSA keys, one for EC keys, because the RSA keys are so much
* larger than the EC keys. This led to unnecessarily complex and
* duplicated code, so for now we treat all keys the same, and waste
- * the unneded space in the case of EC keys.
+ * the unneeded space in the case of EC keys.
*
* Sizes for ASN.1-encoded keys, this may not be exact due to ASN.1
* INTEGER encoding rules but should be good enough for buffer sizing:
@@ -277,15 +277,19 @@ extern const hal_rpc_pkey_dispatch_t hal_rpc_local_pkey_dispatch, hal_rpc_remote
#define HAL_STATIC_PKEY_STATE_BLOCKS 0
#endif
+/* This struct is ordered such that all metadata appears before the
+ * big buffers, in order for all metadata to be loaded with a single
+ * page read from e.g. the ks_flash module.
+ */
typedef struct {
hal_key_type_t type;
hal_curve_name_t curve;
hal_key_flags_t flags;
- uint8_t name[HAL_RPC_PKEY_NAME_MAX];
+ uint8_t in_use;
size_t name_len;
- uint8_t der[HAL_KS_WRAPPED_KEYSIZE];
size_t der_len;
- uint8_t in_use;
+ uint8_t name[HAL_RPC_PKEY_NAME_MAX];
+ uint8_t der[HAL_KS_WRAPPED_KEYSIZE];
} hal_ks_key_t;
#ifndef HAL_PIN_SALT_LENGTH
@@ -302,6 +306,8 @@ typedef struct {
#if HAL_STATIC_PKEY_STATE_BLOCKS > 0
hal_ks_key_t keys[HAL_STATIC_PKEY_STATE_BLOCKS];
+#else
+ #warning No keys in keydb
#endif
hal_ks_pin_t wheel_pin;