diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2020-04-09 13:18:58 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome@forissier.org> | 2020-04-16 15:42:19 +0200 |
commit | e86828f46493b322e7a595f91fa8a73855f9a6a7 (patch) | |
tree | 209af162b26dfa36ad3a513a0b5466d59bfa4169 /ta/pkcs11/src/persistent_token.c | |
parent | 40bbca268ef47a54c5184f2fe3aa9ece0f74f66e (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.c | 20 |
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]) |