summaryrefslogtreecommitdiff
path: root/ta/pkcs11/src/persistent_token.c
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2020-04-09 13:18:58 +0200
committerJérôme Forissier <jerome@forissier.org>2020-04-16 15:42:19 +0200
commite86828f46493b322e7a595f91fa8a73855f9a6a7 (patch)
tree209af162b26dfa36ad3a513a0b5466d59bfa4169 /ta/pkcs11/src/persistent_token.c
parent40bbca268ef47a54c5184f2fe3aa9ece0f74f66e (diff)
ta: pkcs11: helper to update token persistent database
update_persistent_db() updates the persistent database or panics on failure. Acked-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> Co-developed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'ta/pkcs11/src/persistent_token.c')
-rw-r--r--ta/pkcs11/src/persistent_token.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ta/pkcs11/src/persistent_token.c b/ta/pkcs11/src/persistent_token.c
index 29c701e7..d3c1fbae 100644
--- a/ta/pkcs11/src/persistent_token.c
+++ b/ta/pkcs11/src/persistent_token.c
@@ -73,6 +73,26 @@ static TEE_Result open_pin_file(struct ck_token *token,
0, out_hdl);
}
+void update_persistent_db(struct ck_token *token)
+{
+ TEE_Result res = TEE_ERROR_GENERIC;
+ TEE_ObjectHandle db_hdl = TEE_HANDLE_NULL;
+
+ res = open_db_file(token, &db_hdl);
+ if (res) {
+ EMSG("Failed to open token persistent db: %#"PRIx32, res);
+ TEE_Panic(0);
+ }
+ res = TEE_WriteObjectData(db_hdl, token->db_main,
+ sizeof(*token->db_main));
+ if (res) {
+ EMSG("Failed to write to token persistent db: %#"PRIx32, res);
+ TEE_Panic(0);
+ }
+
+ TEE_CloseObject(db_hdl);
+}
+
static enum pkcs11_rc do_hash(uint32_t user, const uint8_t *pin,
size_t pin_size, uint32_t salt,
uint8_t hash[TEE_MAX_HASH_SIZE])