diff options
author | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2023-10-23 15:30:26 +0200 |
---|---|---|
committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2023-10-23 15:30:26 +0200 |
commit | eab006e5910e831ef043ce7cfdc42aebfa36fd40 (patch) | |
tree | cc34fb6e5144e3286c6937bdedb1b9629f307f04 | |
parent | d1a974a3b7059bd87d28bca3dc66519ba8d0eafc (diff) | |
parent | bb3b0c0b09ff1d969ddd49b99642740ce2a07064 (diff) |
Merge "fix(cert-create): fix key loading logic" into integration
-rw-r--r-- | tools/cert_create/include/key.h | 2 | ||||
-rw-r--r-- | tools/cert_create/src/key.c | 50 | ||||
-rw-r--r-- | tools/cert_create/src/main.c | 3 |
3 files changed, 26 insertions, 29 deletions
diff --git a/tools/cert_create/include/key.h b/tools/cert_create/include/key.h index 56f1c21d0..e0ecdaed2 100644 --- a/tools/cert_create/include/key.h +++ b/tools/cert_create/include/key.h @@ -74,7 +74,7 @@ key_t *key_get_by_opt(const char *opt); int key_new(key_t *key); #endif int key_create(key_t *key, int type, int key_bits); -int key_load(key_t *key, unsigned int *err_code); +unsigned int key_load(key_t *key); int key_store(key_t *key); void key_cleanup(void); diff --git a/tools/cert_create/src/key.c b/tools/cert_create/src/key.c index 14c8e18ad..04214aacb 100644 --- a/tools/cert_create/src/key.c +++ b/tools/cert_create/src/key.c @@ -239,38 +239,34 @@ err: } -int key_load(key_t *key, unsigned int *err_code) +unsigned int key_load(key_t *key) { - FILE *fp; + if (key->fn == NULL) { + VERBOSE("Key not specified\n"); + return KEY_ERR_FILENAME; + } - if (key->fn) { - if (!strncmp(key->fn, "pkcs11:", 7)) { - /* Load key through pkcs11 */ - key->key = key_load_pkcs11(key->fn); - } else { - /* Load key from file */ - fp = fopen(key->fn, "r"); - if (fp) { - key->key = PEM_read_PrivateKey(fp, NULL, NULL, NULL); - fclose(fp); - } else { - WARN("Cannot open file %s\n", key->fn); - *err_code = KEY_ERR_OPEN; - } - } - if (key->key) { - *err_code = KEY_ERR_NONE; - return 1; - } else { - ERROR("Cannot load key from %s\n", key->fn); - *err_code = KEY_ERR_LOAD; - } + if (strncmp(key->fn, "pkcs11:", 7) == 0) { + /* Load key through pkcs11 */ + key->key = key_load_pkcs11(key->fn); } else { - VERBOSE("Key not specified\n"); - *err_code = KEY_ERR_FILENAME; + /* Load key from file */ + FILE *fp = fopen(key->fn, "r"); + if (fp == NULL) { + WARN("Cannot open file %s\n", key->fn); + return KEY_ERR_OPEN; + } + + key->key = PEM_read_PrivateKey(fp, NULL, NULL, NULL); + fclose(fp); } - return 0; + if (key->key == NULL) { + ERROR("Cannot load key from %s\n", key->fn); + return KEY_ERR_LOAD; + } + + return KEY_ERR_NONE; } int key_store(key_t *key) diff --git a/tools/cert_create/src/main.c b/tools/cert_create/src/main.c index 2ab6bcfd9..f10a768bc 100644 --- a/tools/cert_create/src/main.c +++ b/tools/cert_create/src/main.c @@ -441,7 +441,8 @@ int main(int argc, char *argv[]) #endif /* First try to load the key from disk */ - if (key_load(&keys[i], &err_code)) { + err_code = key_load(&keys[i]); + if (err_code == KEY_ERR_NONE) { /* Key loaded successfully */ continue; } |