]> git.pld-linux.org Git - packages/opensc.git/blame - opensc-libassuan-2.patch
- time to move to new libassuan - added libassuan-2 patch from upstream trac
[packages/opensc.git] / opensc-libassuan-2.patch
CommitLineData
c9f4880d
JB
1---
2 m4/gpg-error.m4 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
3 m4/libassuan.m4 | 2 -
4 src/signer/dialog.c | 35 +++++++++++++++++-----------
5 3 files changed, 88 insertions(+), 14 deletions(-)
6
7Index: opensc-0.11.13/m4/libassuan.m4
8===================================================================
9--- opensc-0.11.13.orig/m4/libassuan.m4 2009-12-13 10:14:26.000000000 +0100
10+++ opensc-0.11.13/m4/libassuan.m4 2010-04-13 12:26:56.000000000 +0200
11@@ -26,7 +26,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
12 fi
13 AC_PATH_PROG(LIBASSUAN_CONFIG, libassuan-config, no)
14
15- tmp=ifelse([$1], ,1:0.9.2,$1)
16+ tmp=ifelse([$1], ,2:2.0.0,$1)
17 if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
18 req_libassuan_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
19 min_libassuan_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'`
20Index: opensc-0.11.13/src/signer/dialog.c
21===================================================================
22--- opensc-0.11.13.orig/src/signer/dialog.c 2010-02-16 10:03:25.000000000 +0100
23+++ opensc-0.11.13/src/signer/dialog.c 2010-04-13 16:03:10.000000000 +0200
24@@ -15,31 +15,31 @@ struct entry_parm_s {
25 char *buffer;
26 };
27
28-static AssuanError
29+static gpg_error_t
30 getpin_cb (void *opaque, const void *buffer, size_t length)
31 {
32 struct entry_parm_s *parm = (struct entry_parm_s *) opaque;
33
34 /* we expect the pin to fit on one line */
35 if (parm->lines || length >= parm->size)
36- return ASSUAN_Too_Much_Data;
37+ return gpg_error(GPG_ERR_ASS_TOO_MUCH_DATA);
38
39 /* fixme: we should make sure that the assuan buffer is allocated in
40 secure memory or read the response byte by byte */
41 memcpy(parm->buffer, buffer, length);
42 parm->buffer[length] = 0;
43 parm->lines++;
44- return (AssuanError) 0;
45+ return gpg_error(GPG_ERR_NO_ERROR);
46 }
47
48 int ask_and_verify_pin_code(struct sc_pkcs15_card *p15card,
49 struct sc_pkcs15_object *pin)
50 {
51- int r;
52+ gpg_error_t r;
53 size_t len;
54 const char *argv[3];
55 const char *pgmname = PIN_ENTRY;
56- ASSUAN_CONTEXT ctx;
57+ assuan_context_t ctx = NULL;
58 char buf[500];
59 char errtext[100];
60 struct entry_parm_s parm;
61@@ -48,16 +48,26 @@ int ask_and_verify_pin_code(struct sc_pk
62 argv[0] = pgmname;
63 argv[1] = NULL;
64
65- r = assuan_pipe_connect(&ctx, pgmname, (char **) argv, NULL);
66+ assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
67+
68+ r = assuan_new(&ctx);
69+ if (r) {
70+ printf("Can't initialize assuan context: %s\n)",
71+ gpg_strerror(r));
72+ goto err;
73+ }
74+
75+ r = assuan_pipe_connect(ctx, pgmname, (const char **) argv, \
76+ NULL, NULL, NULL, 0);
77 if (r) {
78 printf("Can't connect to the PIN entry module: %s\n",
79- assuan_strerror((AssuanError) r));
80+ gpg_strerror(r));
81 goto err;
82 }
83 sprintf(buf, "SETDESC Enter PIN [%s] for digital signing ", pin->label);
84 r = assuan_transact(ctx, buf, NULL, NULL, NULL, NULL, NULL, NULL);
85 if (r) {
86- printf("SETDESC: %s\n", assuan_strerror((AssuanError) r));
87+ printf("SETDESC: %s\n", gpg_strerror(r));
88 goto err;
89 }
90 errtext[0] = 0;
91@@ -71,12 +81,12 @@ int ask_and_verify_pin_code(struct sc_pk
92 parm.size = sizeof(buf);
93 parm.buffer = buf;
94 r = assuan_transact(ctx, "GETPIN", getpin_cb, &parm, NULL, NULL, NULL, NULL);
95- if (r == ASSUAN_Canceled) {
96- assuan_disconnect(ctx);
97+ if (gpg_err_code(r) == GPG_ERR_ASS_CANCELED) {
98+ assuan_release(ctx);
99 return -2;
100 }
101 if (r) {
102- printf("GETPIN: %s\n", assuan_strerror((AssuanError) r));
103+ printf("GETPIN: %s\n", gpg_strerror(r));
104 goto err;
105 }
106 len = strlen(buf);
107@@ -104,9 +114,9 @@ int ask_and_verify_pin_code(struct sc_pk
108 break;
109 }
110
111- assuan_disconnect(ctx);
112+ assuan_release(ctx);
113 return 0;
114 err:
115- assuan_disconnect(ctx);
116+ assuan_release(ctx);
117 return -1;
118 }
This page took 0.291751 seconds and 4 git commands to generate.