]> git.pld-linux.org Git - packages/opensc.git/commitdiff
- time to move to new libassuan - added libassuan-2 patch from upstream trac
authorJakub Bogusz <qboosh@pld-linux.org>
Mon, 9 Aug 2010 07:10:32 +0000 (07:10 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
- added pcsc patch to build with current pcsc
- package westcos-tool

Changed files:
    opensc-libassuan-2.patch -> 1.1
    opensc-pcsc.patch -> 1.1
    opensc.spec -> 1.69

opensc-libassuan-2.patch [new file with mode: 0644]
opensc-pcsc.patch [new file with mode: 0644]
opensc.spec

diff --git a/opensc-libassuan-2.patch b/opensc-libassuan-2.patch
new file mode 100644 (file)
index 0000000..66d6807
--- /dev/null
@@ -0,0 +1,118 @@
+---
+ m4/gpg-error.m4     |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ m4/libassuan.m4     |    2 -
+ src/signer/dialog.c |   35 +++++++++++++++++-----------
+ 3 files changed, 88 insertions(+), 14 deletions(-)
+
+Index: opensc-0.11.13/m4/libassuan.m4
+===================================================================
+--- opensc-0.11.13.orig/m4/libassuan.m4        2009-12-13 10:14:26.000000000 +0100
++++ opensc-0.11.13/m4/libassuan.m4     2010-04-13 12:26:56.000000000 +0200
+@@ -26,7 +26,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+   fi
+   AC_PATH_PROG(LIBASSUAN_CONFIG, libassuan-config, no)
+-  tmp=ifelse([$1], ,1:0.9.2,$1)
++  tmp=ifelse([$1], ,2:2.0.0,$1)
+   if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
+     req_libassuan_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
+     min_libassuan_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'`
+Index: opensc-0.11.13/src/signer/dialog.c
+===================================================================
+--- opensc-0.11.13.orig/src/signer/dialog.c    2010-02-16 10:03:25.000000000 +0100
++++ opensc-0.11.13/src/signer/dialog.c 2010-04-13 16:03:10.000000000 +0200
+@@ -15,31 +15,31 @@ struct entry_parm_s {
+   char *buffer;
+ };
+-static AssuanError
++static gpg_error_t
+ getpin_cb (void *opaque, const void *buffer, size_t length)
+ {
+   struct entry_parm_s *parm = (struct entry_parm_s *) opaque;
+   /* we expect the pin to fit on one line */
+   if (parm->lines || length >= parm->size)
+-    return ASSUAN_Too_Much_Data;
++    return gpg_error(GPG_ERR_ASS_TOO_MUCH_DATA);
+   /* fixme: we should make sure that the assuan buffer is allocated in
+      secure memory or read the response byte by byte */
+   memcpy(parm->buffer, buffer, length);
+   parm->buffer[length] = 0;
+   parm->lines++;
+-  return (AssuanError) 0;
++  return gpg_error(GPG_ERR_NO_ERROR);
+ }
+ int ask_and_verify_pin_code(struct sc_pkcs15_card *p15card,
+                           struct sc_pkcs15_object *pin)
+ {
+-      int r;
++      gpg_error_t r;
+       size_t len;
+       const char *argv[3];
+       const char *pgmname = PIN_ENTRY;
+-      ASSUAN_CONTEXT ctx;
++      assuan_context_t ctx = NULL;
+       char buf[500];
+       char errtext[100];
+       struct entry_parm_s parm;
+@@ -48,16 +48,26 @@ int ask_and_verify_pin_code(struct sc_pk
+       argv[0] = pgmname;
+       argv[1] = NULL;
+       
+-      r = assuan_pipe_connect(&ctx, pgmname, (char **) argv, NULL);
++      assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT);
++
++      r = assuan_new(&ctx);
++      if (r) {
++              printf("Can't initialize assuan context: %s\n)",
++                      gpg_strerror(r));
++              goto err;
++      }
++      
++      r = assuan_pipe_connect(ctx, pgmname, (const char **) argv, \
++                              NULL, NULL, NULL, 0);
+       if (r) {
+               printf("Can't connect to the PIN entry module: %s\n",
+-                     assuan_strerror((AssuanError) r));
++                     gpg_strerror(r));
+               goto err;
+       }
+       sprintf(buf, "SETDESC Enter PIN [%s] for digital signing  ", pin->label);
+       r = assuan_transact(ctx, buf, NULL, NULL, NULL, NULL, NULL, NULL);
+       if (r) {
+-              printf("SETDESC: %s\n", assuan_strerror((AssuanError) r));
++              printf("SETDESC: %s\n", gpg_strerror(r));
+               goto err;
+       }
+       errtext[0] = 0;
+@@ -71,12 +81,12 @@ int ask_and_verify_pin_code(struct sc_pk
+               parm.size = sizeof(buf);
+               parm.buffer = buf;
+               r = assuan_transact(ctx, "GETPIN", getpin_cb, &parm, NULL, NULL, NULL, NULL);
+-              if (r == ASSUAN_Canceled) {
+-                      assuan_disconnect(ctx);
++              if (gpg_err_code(r) == GPG_ERR_ASS_CANCELED) {
++                      assuan_release(ctx);
+                       return -2;
+               }
+               if (r) {
+-                      printf("GETPIN: %s\n", assuan_strerror((AssuanError) r));
++                      printf("GETPIN: %s\n", gpg_strerror(r));
+                       goto err;
+               }
+               len = strlen(buf);
+@@ -104,9 +114,9 @@ int ask_and_verify_pin_code(struct sc_pk
+                       break;
+       }
+-      assuan_disconnect(ctx); 
++      assuan_release(ctx);
+       return 0;
+ err:  
+-      assuan_disconnect(ctx);
++      assuan_release(ctx);
+       return -1;
+ }
diff --git a/opensc-pcsc.patch b/opensc-pcsc.patch
new file mode 100644 (file)
index 0000000..2db36b7
--- /dev/null
@@ -0,0 +1,60 @@
+--- opensc-0.11.13/src/libopensc/reader-pcsc.c.orig    2010-02-16 10:03:28.000000000 +0100
++++ opensc-0.11.13/src/libopensc/reader-pcsc.c 2010-08-09 08:30:20.494823295 +0200
+@@ -80,7 +80,7 @@ struct pcsc_private_data {
+ struct pcsc_slot_data {
+       SCARDHANDLE pcsc_card;
+-      SCARD_READERSTATE_A reader_state;
++      SCARD_READERSTATE reader_state;
+       DWORD verify_ioctl;
+       DWORD verify_ioctl_start;
+       DWORD verify_ioctl_finish;
+@@ -353,7 +353,7 @@ static int pcsc_wait_for_event(sc_reader
+       sc_context_t *ctx;
+       SCARDCONTEXT pcsc_ctx;
+       LONG ret;
+-      SCARD_READERSTATE_A rgReaderStates[SC_MAX_READERS];
++      SCARD_READERSTATE rgReaderStates[SC_MAX_READERS];
+       unsigned long on_bits, off_bits;
+       time_t end_time, now, delta;
+       size_t i;
+@@ -401,7 +401,7 @@ static int pcsc_wait_for_event(sc_reader
+       /* Wait for a status change and return if it's a card insert/removal
+        */
+       for( ; ; ) {
+-              SCARD_READERSTATE_A *rsp;
++              SCARD_READERSTATE *rsp;
+               /* Scan the current state of all readers to see if they
+                * match any of the events we're polling for */
+--- opensc-0.11.13/src/libopensc/internal-winscard.h.orig      2010-02-16 10:03:28.000000000 +0100
++++ opensc-0.11.13/src/libopensc/internal-winscard.h   2010-08-09 08:32:13.282823295 +0200
+@@ -77,7 +77,7 @@ typedef struct
+       unsigned long cbAtr;
+       unsigned char rgbAtr[MAX_ATR_SIZE];
+ }
+-SCARD_READERSTATE_A;
++SCARD_READERSTATE;
+ typedef struct _SCARD_IO_REQUEST
+ {
+@@ -87,8 +87,8 @@ typedef struct _SCARD_IO_REQUEST
+ SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
+ typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
+-typedef SCARD_READERSTATE_A SCARD_READERSTATE, *PSCARD_READERSTATE_A,
+-      *LPSCARD_READERSTATE_A;
++typedef SCARD_READERSTATE *PSCARD_READERSTATE,
++      *LPSCARD_READERSTATE;
+ #endif        /* HAVE_SCARD_H */
+@@ -113,7 +113,7 @@ typedef LONG (PCSC_API *SCardEndTransact
+ typedef LONG (PCSC_API *SCardStatus_t)(SCARDHANDLE hCard, LPSTR mszReaderNames, LPDWORD pcchReaderLen,
+       LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen);
+ typedef LONG (PCSC_API *SCardGetStatusChange_t)(SCARDCONTEXT hContext, DWORD dwTimeout,
+-      LPSCARD_READERSTATE_A rgReaderStates, DWORD cReaders);
++      SCARD_READERSTATE *rgReaderStates, DWORD cReaders);
+ typedef LONG (PCSC_API *SCardControlOLD_t)(SCARDHANDLE hCard, LPCVOID pbSendBuffer, DWORD cbSendLength,
+       LPVOID pbRecvBuffer, LPDWORD lpBytesReturned);
+ typedef LONG (PCSC_API *SCardControl_t)(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID pbSendBuffer,
index d9579c57e5bbc5110e1ccac4db4b4365dec86d78..b12a0ff890dae74e3446c297949b00a11a4f9fef 100644 (file)
@@ -12,22 +12,25 @@ Source1:    %{name}-initramfs-hook
 Source2:       %{name}-initramfs-local-bottom
 Source3:       %{name}-initramfs-local-top
 Source4:       %{name}-initramfs-README
+Patch0:                %{name}-libassuan-2.patch
+Patch1:                %{name}-pcsc.patch
 URL:           http://www.opensc-project.org/
 BuildRequires: autoconf >= 2.60
 BuildRequires: automake >= 1:1.10
-BuildRequires: libassuan1-devel >= 0.6.0
+BuildRequires: libassuan-devel >= 1:2.0.0
 BuildRequires: libltdl-devel
 BuildRequires: libtool >= 1:1.4.2-9
 BuildRequires: libxslt-progs
 BuildRequires: openct-devel
 BuildRequires: openldap-devel >= 2.4.6
 BuildRequires: openssl-devel >= 0.9.7d
-BuildRequires: pcsc-lite-devel
+BuildRequires: pcsc-lite-devel >= 1.6.0
 BuildRequires: pkgconfig >= 1:0.9.0
 BuildRequires: readline-devel
 BuildRequires: rpmbuild(macros) >= 1.364
 BuildRequires: xorg-lib-libXt-devel
 BuildRequires: zlib-devel
+Requires:      pcsc-lite-libs >= 1.6.0
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 # datadir is used for config files and (editable) profiles
@@ -61,7 +64,7 @@ Requires:     %{name} = %{epoch}:%{version}-%{release}
 Requires:      libltdl-devel
 Requires:      openct-devel
 Requires:      openssl-devel
-Requires:      pcsc-lite-devel
+Requires:      pcsc-lite-devel >= 1.6.0
 
 %description devel
 OpenSC development files.
@@ -117,6 +120,8 @@ Skrypty dla initramfs-tools ze wsparciem dla OpenSC.
 
 %prep
 %setup -q
+%patch0 -p1
+%patch1 -p1
 
 install %{SOURCE4} README.initramfs
 
@@ -187,6 +192,7 @@ fi
 %attr(755,root,root) %{_bindir}/pkcs11-tool
 %attr(755,root,root) %{_bindir}/pkcs15-*
 %attr(755,root,root) %{_bindir}/rutoken-tool
+%attr(755,root,root) %{_bindir}/westcos-tool
 %attr(755,root,root) %{_libdir}/libopensc.so.*.*.*
 %attr(755,root,root) %ghost %{_libdir}/libopensc.so.2
 %attr(755,root,root) %{_libdir}/libpkcs15init.so.*.*.*
@@ -202,7 +208,7 @@ fi
 %attr(755,root,root) %{_libdir}/pkcs11/opensc-pkcs11.so
 %attr(755,root,root) %{_libdir}/pkcs11/pkcs11-spy.so
 %dir %{_datadir}/opensc
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/opensc.conf
 %config(noreplace) %verify(not md5 mtime size) %{_datadir}/opensc/*.profile
 %{_mandir}/man1/cardos-tool.1*
 %{_mandir}/man1/cryptoflex-tool.1*
@@ -211,6 +217,7 @@ fi
 %{_mandir}/man1/opensc-tool.1*
 %{_mandir}/man1/pkcs11-tool.1*
 %{_mandir}/man1/pkcs15-*.1*
+%{_mandir}/man1/westcos-tool.1*
 %{_mandir}/man5/pkcs15-profile.5*
 
 %files devel
This page took 0.085407 seconds and 4 git commands to generate.