From 4ff917bd251752d9fc1859a2d36d131d3126a94f Mon Sep 17 00:00:00 2001 From: Frank Thater Date: Mon, 6 Aug 2012 11:28:35 +0200 Subject: [PATCH] Added obj files to Makefile.mak for windows build Fixed WIN32 compiler errors Adjusted log message calls to short form modified: src/libopensc/Makefile.mak modified: src/libopensc/card-sc-hsm.c modified: src/libopensc/pkcs15-sc-hsm.c --- src/libopensc/Makefile.mak | 3 ++- src/libopensc/card-sc-hsm.c | 44 +++++++++++++++---------------- src/libopensc/pkcs15-sc-hsm.c | 49 ++++++++++++++++++----------------- 3 files changed, 49 insertions(+), 47 deletions(-) diff --git a/src/libopensc/Makefile.mak b/src/libopensc/Makefile.mak index 92135963..9902f871 100644 --- a/src/libopensc/Makefile.mak +++ b/src/libopensc/Makefile.mak @@ -23,12 +23,13 @@ OBJECTS = \ card-rtecp.obj card-westcos.obj card-myeid.obj card-ias.obj \ card-javacard.obj card-itacns.obj card-authentic.obj \ card-iasecc.obj iasecc-sdo.obj iasecc-sm.obj \ + card-sc-hsm.obj \ \ pkcs15-openpgp.obj pkcs15-infocamere.obj pkcs15-starcert.obj \ pkcs15-tcos.obj pkcs15-esteid.obj pkcs15-postecert.obj pkcs15-gemsafeGPK.obj \ pkcs15-actalis.obj pkcs15-atrust-acos.obj pkcs15-tccardos.obj pkcs15-piv.obj \ pkcs15-esinit.obj pkcs15-westcos.obj pkcs15-pteid.obj pkcs15-oberthur.obj \ - pkcs15-itacns.obj pkcs15-gemsafeV1.obj \ + pkcs15-itacns.obj pkcs15-gemsafeV1.obj pkcs15-sc-hsm.obj \ compression.obj p15card-helper.obj \ $(TOPDIR)\win32\versioninfo.res diff --git a/src/libopensc/card-sc-hsm.c b/src/libopensc/card-sc-hsm.c index 59392b07..06b00490 100644 --- a/src/libopensc/card-sc-hsm.c +++ b/src/libopensc/card-sc-hsm.c @@ -109,26 +109,26 @@ static int sc_hsm_read_binary(sc_card_t *card, apdu.resp = recvbuf; r = sc_transmit_apdu(card, &apdu); - SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed"); + LOG_TEST_RET(ctx, r, "APDU transmit failed"); if (apdu.resplen == 0) - SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2)); + LOG_FUNC_RETURN(ctx, sc_check_sw(card, apdu.sw1, apdu.sw2)); memcpy(buf, recvbuf, apdu.resplen); r = sc_check_sw(card, apdu.sw1, apdu.sw2); if (r == SC_ERROR_FILE_END_REACHED) - SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen); - SC_TEST_RET(ctx, SC_LOG_DEBUG_NORMAL, r, "Check SW error"); + LOG_FUNC_RETURN(ctx, apdu.resplen); + LOG_TEST_RET(ctx, r, "Check SW error"); if (apdu.resplen < count) { r = sc_hsm_read_binary(card, idx + apdu.resplen, buf + apdu.resplen, count - apdu.resplen, flags); /* Ignore all but 'corrupted data' errors */ if (r == SC_ERROR_CORRUPTED_DATA) - SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_CORRUPTED_DATA); + LOG_FUNC_RETURN(ctx, SC_ERROR_CORRUPTED_DATA); else if (r > 0) apdu.resplen += r; } - SC_FUNC_RETURN(ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen); + LOG_FUNC_RETURN(ctx, apdu.resplen); } @@ -145,11 +145,11 @@ static int sc_hsm_list_files(sc_card_t *card, u8 * buf, size_t buflen) apdu.resplen = sizeof(recvbuf); apdu.le = 0; r = sc_transmit_apdu(card, &apdu); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "ENUMERATE OBJECTS APDU transmit failed"); + LOG_TEST_RET(card->ctx, r, "ENUMERATE OBJECTS APDU transmit failed"); memcpy(buf, recvbuf, buflen); - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen); + LOG_FUNC_RETURN(card->ctx, apdu.resplen); } @@ -170,7 +170,7 @@ static int sc_hsm_set_security_env(sc_card_t *card, // } else if (env->algorithm_flags & SC_ALGORITHM_RSA_HASH_SHA256) { // priv->algorithm = ALGO_RSA_PKCS1_SHA256; // } else { -// SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS); +// LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS); // } // } else { priv->algorithm = ALGO_RSA_RAW; @@ -188,13 +188,13 @@ static int sc_hsm_set_security_env(sc_card_t *card, } else if (env->algorithm_flags & SC_ALGORITHM_ECDSA_RAW) { priv->algorithm = ALGO_EC_RAW; } else { - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS); + LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS); } break; default: - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_INVALID_ARGUMENTS); + LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_ARGUMENTS); } - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_SUCCESS); + LOG_FUNC_RETURN(card->ctx, SC_SUCCESS); } @@ -212,7 +212,7 @@ static int sc_hsm_compute_signature(sc_card_t *card, assert(card != NULL && data != NULL && out != NULL); if (priv->env == NULL) { - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, SC_ERROR_OBJECT_NOT_FOUND); + LOG_FUNC_RETURN(card->ctx, SC_ERROR_OBJECT_NOT_FOUND); } sc_format_apdu(card, &apdu, SC_APDU_CASE_4, 0x68, priv->env->key_ref[0], priv->algorithm); @@ -226,14 +226,14 @@ static int sc_hsm_compute_signature(sc_card_t *card, apdu.lc = datalen; apdu.datalen = datalen; r = sc_transmit_apdu(card, &apdu); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed"); + LOG_TEST_RET(card->ctx, r, "APDU transmit failed"); if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00) { size_t len = apdu.resplen > outlen ? outlen : apdu.resplen; memcpy(out, apdu.resp, len); - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, len); + LOG_FUNC_RETURN(card->ctx, len); } - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2)); + LOG_FUNC_RETURN(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2)); } @@ -245,7 +245,7 @@ static int sc_hsm_decipher(sc_card_t *card, const u8 * crgram, size_t crgram_len sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data; assert(card != NULL && crgram != NULL && out != NULL); - SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_NORMAL); + LOG_FUNC_CALLED(card->ctx); sc_format_apdu(card, &apdu, SC_APDU_CASE_4, 0x62, priv->env->key_ref[0], 0x21); apdu.cla = 0x80; @@ -262,11 +262,11 @@ static int sc_hsm_decipher(sc_card_t *card, const u8 * crgram, size_t crgram_len r = sc_transmit_apdu(card, &apdu); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "APDU transmit failed"); + LOG_TEST_RET(card->ctx, r, "APDU transmit failed"); if (apdu.sw1 == 0x90 && apdu.sw2 == 0x00) - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, apdu.resplen); + LOG_FUNC_RETURN(card->ctx, apdu.resplen); else - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_VERBOSE, sc_check_sw(card, apdu.sw1, apdu.sw2)); + LOG_FUNC_RETURN(card->ctx, sc_check_sw(card, apdu.sw1, apdu.sw2)); } @@ -276,11 +276,11 @@ static int sc_hsm_init(struct sc_card *card) sc_hsm_private_data_t *priv; int flags,ext_flags; - SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE); + LOG_FUNC_CALLED(card->ctx); priv = calloc(1, sizeof(sc_hsm_private_data_t)); if (!priv) - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_OUT_OF_MEMORY); + LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY); card->drv_data = priv; diff --git a/src/libopensc/pkcs15-sc-hsm.c b/src/libopensc/pkcs15-sc-hsm.c index 8738e5b7..6f7a127b 100644 --- a/src/libopensc/pkcs15-sc-hsm.c +++ b/src/libopensc/pkcs15-sc-hsm.c @@ -46,16 +46,27 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) u8 filelist[MAX_EXT_APDU_LENGTH]; int filelistlength; int r, i; + struct sc_app_info *appinfo; + struct sc_pkcs15_auth_info pin_info; + struct sc_pkcs15_object pin_obj; + struct sc_pkcs15_cert_info cert_info; + struct sc_pkcs15_object cert_obj; + u8 fid[2]; + u8 prkdbin[512]; + sc_pkcs15_object_t prkd; + u8 keyid; + u8 *ptr; + size_t len; - SC_FUNC_CALLED(card->ctx, SC_LOG_DEBUG_VERBOSE); + LOG_FUNC_CALLED(card->ctx); p15card->tokeninfo->label = strdup("SmartCard-HSM"); p15card->tokeninfo->manufacturer_id = strdup("CardContact"); - struct sc_app_info *appinfo = calloc(1, sizeof(struct sc_app_info)); + appinfo = calloc(1, sizeof(struct sc_app_info)); if (appinfo == NULL) { - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_ERROR_OUT_OF_MEMORY); + LOG_FUNC_RETURN(card->ctx, SC_ERROR_OUT_OF_MEMORY); } appinfo->label = strdup(p15card->tokeninfo->label); @@ -70,11 +81,7 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) // ToDo: Extract version number sc_file_free(file); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Could not select SmartCard-HSM application"); - - // Define UserPIN - struct sc_pkcs15_auth_info pin_info; - struct sc_pkcs15_object pin_obj; + LOG_TEST_RET(card->ctx, r, "Could not select SmartCard-HSM application"); memset(&pin_info, 0, sizeof(pin_info)); memset(&pin_obj, 0, sizeof(pin_obj)); @@ -97,10 +104,10 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) r = sc_pkcs15emu_add_pin_obj(p15card, &pin_obj, &pin_info); if (r < 0) - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, r); + LOG_FUNC_RETURN(card->ctx, r); filelistlength = sc_list_files(card, filelist, sizeof(filelist)); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Could not enumerate file and key identifier"); + LOG_TEST_RET(card->ctx, r, "Could not enumerate file and key identifier"); for (i = 0; i < filelistlength; i += 2) { /* Look for private key files */ @@ -108,10 +115,7 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) continue; } - u8 fid[2]; - u8 prkdbin[512]; - sc_pkcs15_object_t prkd; - u8 keyid = filelist[i + 1]; + keyid = filelist[i + 1]; fid[0] = PRKD_PREFIX; fid[1] = keyid; @@ -126,13 +130,13 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) sc_file_free(file); r = sc_read_binary(p15card->card, 0, prkdbin, sizeof(prkdbin), 0); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Could not read EF.PRKD"); + LOG_TEST_RET(card->ctx, r, "Could not read EF.PRKD"); memset(&prkd, 0, sizeof(prkd)); - const u8 *ptr = prkdbin; - size_t len = r; + ptr = prkdbin; + len = r; - sc_pkcs15_decode_prkdf_entry(p15card, &prkd, &ptr, &len); + sc_pkcs15_decode_prkdf_entry(p15card, &prkd, (const u8 **)&ptr, &len); /* All keys require user PIN authentication */ prkd.auth_id.len = 1; @@ -156,7 +160,7 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) } else { r = sc_pkcs15emu_add_ec_prkey(p15card, &prkd, key_info); } - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Could not decode EF.PRKD"); + LOG_TEST_RET(card->ctx, r, "Could not decode EF.PRKD"); /* Check if we also have a certificate for the private key */ fid[0] = EE_CERTIFICATE_PREFIX; @@ -170,9 +174,6 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) sc_file_free(file); - struct sc_pkcs15_cert_info cert_info; - struct sc_pkcs15_object cert_obj; - memset(&cert_info, 0, sizeof(cert_info)); memset(&cert_obj, 0, sizeof(cert_obj)); @@ -183,10 +184,10 @@ static int sc_pkcs15emu_sc_hsm_init (sc_pkcs15_card_t * p15card) strlcpy(cert_obj.label, prkd.label, sizeof(cert_obj.label)); r = sc_pkcs15emu_add_x509_cert(p15card, &cert_obj, &cert_info); - SC_TEST_RET(card->ctx, SC_LOG_DEBUG_NORMAL, r, "Could not add certificate"); + LOG_TEST_RET(card->ctx, r, "Could not add certificate"); } - SC_FUNC_RETURN(card->ctx, SC_LOG_DEBUG_NORMAL, SC_SUCCESS); + LOG_FUNC_RETURN(card->ctx, SC_SUCCESS); }