]> git.pld-linux.org Git - packages/opensc.git/blob - opensc-libassuan-2.patch
- time to move to new libassuan - added libassuan-2 patch from upstream trac
[packages/opensc.git] / opensc-libassuan-2.patch
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
7 Index: 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/'`
20 Index: 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.037298 seconds and 3 git commands to generate.