From aeb9c47c7ea01b8905174e8ac817195430c24ed5 Mon Sep 17 00:00:00 2001 From: nils Date: Mon, 19 Jul 2004 16:58:27 +0000 Subject: [PATCH] try to get the card serialnr via sc_card_ctl (unless it has been explicitly specified by the user) git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1842 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/pkcs15init/pkcs15-lib.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pkcs15init/pkcs15-lib.c b/src/pkcs15init/pkcs15-lib.c index afedd116..265f1cf1 100644 --- a/src/pkcs15init/pkcs15-lib.c +++ b/src/pkcs15init/pkcs15-lib.c @@ -554,8 +554,20 @@ sc_pkcs15init_add_app(struct sc_card *card, struct sc_profile *profile, app->aid_len = p15spec->file_app->namelen; memcpy(app->aid, p15spec->file_app->name, app->aid_len); } + /* set serial number if explicitly specified */ if (args->serial) sc_pkcs15init_set_serial(profile, args->serial); + else { + /* otherwise try to get the serial number from the card */ + sc_serial_number_t serialnr; + r = sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serialnr); + if (r == SC_SUCCESS) { + char hex_serial[SC_MAX_SERIALNR * 2 + 1]; + sc_bin_to_hex(serialnr.value, serialnr.len, + hex_serial, sizeof(hex_serial), 0); + sc_pkcs15init_set_serial(profile, hex_serial); + } + } if (args->label) { if (p15spec->label)