diff options
Diffstat (limited to 'ncr-key-storage.c')
-rw-r--r-- | ncr-key-storage.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ncr-key-storage.c b/ncr-key-storage.c index bd39a33..2a6055e 100644 --- a/ncr-key-storage.c +++ b/ncr-key-storage.c @@ -85,6 +85,7 @@ fail: int key_from_storage_data(struct key_item_st* key, const void* data, size_t data_size) { const struct packed_key * pkey = data; + int ret; if (data_size != sizeof(*pkey)) { err(); @@ -101,6 +102,13 @@ int key_from_storage_data(struct key_item_st* key, const void* data, size_t data if (key->type == NCR_KEY_TYPE_SECRET) { key->key.secret.size = pkey->raw_size; memcpy(key->key.secret.data, pkey->raw, pkey->raw_size); + } else if (key->type == NCR_KEY_TYPE_PUBLIC + || key->type == NCR_KEY_TYPE_PRIVATE) { + ret = ncr_pk_unpack( key, pkey->raw, pkey->raw_size); + if (ret < 0) { + err(); + return ret; + } } else { err(); return -EINVAL; |