aboutsummaryrefslogtreecommitdiff
path: root/ks.h
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2017-06-04 12:21:45 -0400
committerRob Austein <sra@hactrn.net>2017-06-04 12:21:45 -0400
commita83d9dfba5f882ca75eaab9a166e6ad9794f2f90 (patch)
treee2032b46e192bbb4f89f30c945e7245f712cfd95 /ks.h
parent61029eb57165c181497c09549cc2dd0fa9928f16 (diff)
Tweak CRC input to be backwards compatabile with ksng.
Except for torture tests, we never really used the hideously complex multi-block capabilities of the ksng version of the flash keystore, among other reasons because the only keys large enough to trigger the multi-block code were slow enough to constitute torture on their own. So we can preserve backwards compatabliity simply by including the former *chunk fields (renamed legacy* here) in the CRC and checking for the expected single-block key values. We probably want to include everything in the CRC in any case except when there's an explicit reason omit something, so, this is cheap, just a bit obscure. At some point in the future we can phase out support for the backwards compatible values, but there's no particular hurry about it unless we want to reuse those fields for some other purpose.
Diffstat (limited to 'ks.h')
-rw-r--r--ks.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/ks.h b/ks.h
index 1c09b53..b95216d 100644
--- a/ks.h
+++ b/ks.h
@@ -86,13 +86,22 @@ typedef enum {
} hal_ks_block_status_t;
/*
- * Common header for all keystore block types.
- * A few of these fields are deliberately omitted from the CRC.
+ * Common header for all keystore block types. A few of these fields
+ * are deliberately omitted from the CRC.
+ *
+ * The legacy_1 and legacy_2 fields were used in the more complex
+ * "chunked" layout used in an earlier iteration of this keystore
+ * design, which proved more complex than it was worth. At the
+ * moment, the only thing we do with these fields is include them in
+ * the CRC and check them for allowed values, to avoid gratuitously
+ * breaking backwards compatability with the earlier design.
*/
typedef struct {
uint8_t block_type;
uint8_t block_status;
+ uint8_t legacy_1;
+ uint8_t legacy_2;
hal_crc32_t crc;
} hal_ks_block_header_t;