From 07668a30ff27cb34f89941515237d2fd8a328c58 Mon Sep 17 00:00:00 2001 From: aj Date: Fri, 25 Apr 2003 10:03:09 +0000 Subject: [PATCH] Nils Larsch: here is a patch to remove a bug in card-starcos.c and two warnings: card-starcos.c: fix apdu.le value pkcs15-pin.c: remove unused labels => avoid compiler warnings pkcs11-tool.c : remove memory leak (a RSA_free() was missing) and simplify code (+ remove warning). git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1072 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/libopensc/card-starcos.c | 2 +- src/libopensc/pkcs15-pin.c | 4 ++-- src/tools/pkcs11-tool.c | 8 ++------ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/libopensc/card-starcos.c b/src/libopensc/card-starcos.c index 06184062..f97e17c2 100644 --- a/src/libopensc/card-starcos.c +++ b/src/libopensc/card-starcos.c @@ -320,7 +320,7 @@ static int starcos_select_fid(struct sc_card *card, sc_format_apdu(card, &apdu, SC_APDU_CASE_4_SHORT, 0xA4, 0x00, 0x00); apdu.resp = (u8*)resp; apdu.resplen = SC_MAX_APDU_BUFFER_SIZE; - apdu.le = 0; + apdu.le = 256; apdu.lc = 2; apdu.data = (u8*)data; apdu.datalen = 2; diff --git a/src/libopensc/pkcs15-pin.c b/src/libopensc/pkcs15-pin.c index c68c679c..fb27ae1f 100644 --- a/src/libopensc/pkcs15-pin.c +++ b/src/libopensc/pkcs15-pin.c @@ -267,7 +267,7 @@ int sc_pkcs15_change_pin(struct sc_pkcs15_card *p15card, memset(pinbuf, pin->pad_char, pin->max_length * 2); memcpy(pinbuf, oldpin, oldpinlen); memcpy(pinbuf + pin->max_length, newpin, newpinlen); -change_pin: + r = sc_change_reference_data(card, SC_AC_CHV, pin->reference, pinbuf, pin->max_length, pinbuf+pin->max_length, pin->max_length, &pin->tries_left); @@ -309,7 +309,7 @@ int sc_pkcs15_unblock_pin(struct sc_pkcs15_card *p15card, sc_unlock(card); return r; } -unblock_pin: + r = sc_reset_retry_counter (card, SC_AC_CHV, pin->reference, puk, puklen, newpin, newpinlen); sc_unlock(card); diff --git a/src/tools/pkcs11-tool.c b/src/tools/pkcs11-tool.c index 47d56c6b..d8cc5710 100644 --- a/src/tools/pkcs11-tool.c +++ b/src/tools/pkcs11-tool.c @@ -1116,7 +1116,6 @@ EVP_PKEY *get_public_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE privKeyObje CK_OBJECT_HANDLE pubkeyObject; unsigned char *pubkey, *pubkey_sav; CK_ULONG pubkeyLen; - RSA *rsa; EVP_PKEY *pkey; id = NULL; @@ -1140,18 +1139,15 @@ EVP_PKEY *get_public_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE privKeyObje } pubkey_sav = pubkey; /* The function below may change pubkey */ - rsa = d2i_RSAPublicKey(NULL, &pubkey, pubkeyLen); + pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &pubkey, pubkeyLen); free(pubkey_sav); - if (rsa == NULL) { + if (pkey == NULL) { printf(" couldn't parse pubkey, no verification done\n"); /* ERR_print_errors_fp(stderr); */ return NULL; } - pkey = EVP_PKEY_new(); - EVP_PKEY_set1_RSA(pkey, rsa); - return pkey; } #endif