[pkg-opensc-commit] [opensc] 78/295: Allow tools to enable card lock (#875)

Eric Dorland eric at moszumanska.debian.org
Sat Jun 24 21:11:18 UTC 2017


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository opensc.

commit 905d78093c3ef462037f6199a43d7271e55b5a14
Author: CardContact Systems GmbH <support at cardcontact.de>
Date:   Mon Sep 19 17:49:34 2016 +0200

    Allow tools to enable card lock (#875)
    
    Closes #868
---
 src/tools/sc-hsm-tool.c |  3 +--
 src/tools/util.c        | 23 ++++++++++++++++-------
 src/tools/util.h        |  3 ++-
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/tools/sc-hsm-tool.c b/src/tools/sc-hsm-tool.c
index 0309273..14664e3 100644
--- a/src/tools/sc-hsm-tool.c
+++ b/src/tools/sc-hsm-tool.c
@@ -1646,7 +1646,7 @@ int main(int argc, char * const argv[])
 		sc_ctx_log_to_file(ctx, "stderr");
 	}
 
-	r = util_connect_card(ctx, &card, opt_reader, opt_wait, verbose);
+	r = util_connect_card_ex(ctx, &card, opt_reader, opt_wait, 0, verbose);
 	if (r != SC_SUCCESS) {
 		if (r < 0) {
 			fprintf(stderr, "Failed to connect to card: %s\n", sc_strerror(err));
@@ -1687,7 +1687,6 @@ fail:
 	err = 1;
 end:
 	if (card) {
-		sc_unlock(card);
 		sc_disconnect_card(card);
 	}
 	if (ctx)
diff --git a/src/tools/util.c b/src/tools/util.c
index e11ffb0..f5a0370 100644
--- a/src/tools/util.c
+++ b/src/tools/util.c
@@ -47,8 +47,8 @@ is_string_valid_atr(const char *atr_str)
 }
 
 int
-util_connect_card(sc_context_t *ctx, sc_card_t **cardp,
-		 const char *reader_id, int do_wait, int verbose)
+util_connect_card_ex(sc_context_t *ctx, sc_card_t **cardp,
+		 const char *reader_id, int do_wait, int do_lock, int verbose)
 {
 	struct sc_reader *reader = NULL, *found = NULL;
 	struct sc_card *card = NULL;
@@ -156,17 +156,26 @@ autofound:
 	if (verbose)
 		printf("Using card driver %s.\n", card->driver->name);
 
-	r = sc_lock(card);
-	if (r < 0) {
-		fprintf(stderr, "Failed to lock card: %s\n", sc_strerror(r));
-		sc_disconnect_card(card);
-		return 1;
+	if (do_lock) {
+		r = sc_lock(card);
+		if (r < 0) {
+			fprintf(stderr, "Failed to lock card: %s\n", sc_strerror(r));
+			sc_disconnect_card(card);
+			return 1;
+		}
 	}
 
 	*cardp = card;
 	return 0;
 }
 
+int
+util_connect_card(sc_context_t *ctx, sc_card_t **cardp,
+		 const char *reader_id, int do_wait, int verbose)
+{
+	return util_connect_card_ex(ctx, cardp, reader_id, do_wait, 1, verbose);
+}
+
 void util_print_binary(FILE *f, const u8 *buf, int count)
 {
 	int i;
diff --git a/src/tools/util.h b/src/tools/util.h
index ac983ce..b907808 100644
--- a/src/tools/util.h
+++ b/src/tools/util.h
@@ -33,7 +33,8 @@ void util_warn(const char *fmt, ...);
 void util_error(const char *fmt, ...);
 void util_fatal(const char *fmt, ...);
 /* All singing all dancing card connect routine */
-int util_connect_card(struct sc_context *, struct sc_card **, const char *reader_id, int wait, int verbose);
+int util_connect_card_ex(struct sc_context *, struct sc_card **, const char *reader_id, int do_wait, int do_lock, int verbose);
+int util_connect_card(struct sc_context *, struct sc_card **, const char *reader_id, int do_wait, int verbose);
 
 int util_getpass (char **lineptr, size_t *n, FILE *stream);
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/opensc.git



More information about the pkg-opensc-commit mailing list