diff options
author | Paul Selkirk <paul@psgd.org> | 2019-02-13 16:05:42 -0500 |
---|---|---|
committer | Paul Selkirk <paul@psgd.org> | 2019-04-09 18:08:45 -0400 |
commit | ddee60a8e5603a47c26b95b2f944427e6013ac03 (patch) | |
tree | f1f224fd88a2a5e6256d5a5f185c0d5e24d19957 | |
parent | 1376b16e3bead769e56e531b1c121ea68b60f49f (diff) |
If a KEK is given to keywrap/unwrap, zero it out of the keywrap core after use.
The key-export mechanism unwraps the key with the KEK from Master Key
Memory, then re-wraps it with a random KEK. If that random KEK stays in
the keywrap core, it will cause problems for all subsequent wrap/unwrap
operations.
-rw-r--r-- | aes_keywrap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/aes_keywrap.c b/aes_keywrap.c index 63e0cf7..1ee857b 100644 --- a/aes_keywrap.c +++ b/aes_keywrap.c @@ -383,6 +383,8 @@ hal_error_t hal_aes_keywrap(hal_core_t *core, } out: + if (K != NULL) + hal_aes_keywrap_zero(core); if (free_core) hal_core_free(core); return err; @@ -483,6 +485,8 @@ hal_error_t hal_aes_keyunwrap(hal_core_t *core, memmove(Q, Q + 8, m); out: + if (K != NULL) + hal_aes_keywrap_zero(core); if (free_core) hal_core_free(core); return err; |