pkcs15init: set key_info->guid value before calling card specific handlers

This commit is contained in:
Viktor Tarasov 2013-12-29 20:04:03 +01:00
parent 7853d67c12
commit 9251d35635
1 changed files with 1 additions and 12 deletions

View File

@ -1299,6 +1299,7 @@ sc_pkcs15init_generate_key(struct sc_pkcs15_card *p15card, struct sc_profile *pr
LOG_TEST_RET(ctx, r, "Set up private key object error");
key_info = (struct sc_pkcs15_prkey_info *) object->data;
if (keygen_args->prkey_args.guid && keygen_args->prkey_args.guid_len) {
key_info->cmap_record.guid = malloc(keygen_args->prkey_args.guid_len);
if (!key_info->cmap_record.guid)
@ -1435,18 +1436,6 @@ sc_pkcs15init_store_private_key(struct sc_pkcs15_card *p15card, struct sc_profil
r = sc_pkcs15init_add_object(p15card, profile, SC_PKCS15_PRKDF, object);
LOG_TEST_RET(ctx, r, "Failed to add new private key PKCS#15 object");
if (keyargs->guid) {
struct sc_pkcs15_prkey_info *key_info = (struct sc_pkcs15_prkey_info *) object->data;
key_info->cmap_record.guid = strdup(keyargs->guid);
if (!key_info->cmap_record.guid)
LOG_TEST_RET(ctx, SC_ERROR_OUT_OF_MEMORY, "Cannot allocate guid");
memcpy(key_info->cmap_record.guid, keyargs->guid, keyargs->guid_len);
key_info->cmap_record.guid_len = keyargs->guid_len;
sc_log(ctx, "new key GUID: 0x'%s'", sc_dump_hex(key_info->cmap_record.guid, key_info->cmap_record.guid_len));
key_info->cmap_record.flags = SC_MD_CONTAINER_MAP_VALID_CONTAINER;
}
if (!r && profile->ops->emu_store_data) {
r = profile->ops->emu_store_data(p15card, profile, object, NULL, NULL);
if (r == SC_ERROR_NOT_IMPLEMENTED)