From ea7cc9ea606dd879e4cdfae06a6f13d8fa3afff4 Mon Sep 17 00:00:00 2001 From: Ingo Franzki Date: Fri, 14 Jun 2019 09:48:45 +0200 Subject: [PATCH] zkey: Add function to obtain the mkvp of a secure key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A secure AES key token contains the master key verification pattern of the master key it is encrypted with. Add a function to obtain the master key verification pattern of a secure key token. Signed-off-by: Ingo Franzki Reviewed-by: Harald Freudenberger Signed-off-by: Jan Höppner --- zkey/pkey.c | 21 +++++++++++++++++++++ zkey/pkey.h | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/zkey/pkey.c b/zkey/pkey.c index c34203a5..8471f3d0 100644 --- a/zkey/pkey.c +++ b/zkey/pkey.c @@ -769,3 +769,24 @@ out: return rc; } + +int get_master_key_verification_pattern(const u8 *secure_key, + size_t secure_key_size, u64 *mkvp, + bool verbose) +{ + struct secaeskeytoken *token = (struct secaeskeytoken *)secure_key; + + util_assert(secure_key != NULL, "Internal error: secure_key is NULL"); + util_assert(mkvp != NULL, "Internal error: mkvp is NULL"); + + if (secure_key_size < SECURE_KEY_SIZE) { + pr_verbose(verbose, "Size of secure key is too small: " + "%lu expected %lu", secure_key_size, + SECURE_KEY_SIZE); + return -EINVAL; + } + + *mkvp = token->mkvp; + + return 0; +} diff --git a/zkey/pkey.h b/zkey/pkey.h index f1dc3014..c0aac2e8 100644 --- a/zkey/pkey.h +++ b/zkey/pkey.h @@ -112,4 +112,8 @@ int validate_secure_key(int pkey_fd, int generate_key_verification_pattern(const char *key, size_t key_size, char *vp, size_t vp_len, bool verbose); +int get_master_key_verification_pattern(const u8 *secure_key, + size_t secure_key_size, u64 *mkvp, + bool verbose); + #endif