adapted to changes of OpenPACE
This commit is contained in:
@@ -34,12 +34,23 @@ AC_PATH_PROG(GENGETOPT, doxygen, false // No gengetopt //)
|
|||||||
# If you need to see the details, just run make V=1.
|
# If you need to see the details, just run make V=1.
|
||||||
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
|
|
||||||
# Checks for libraries.
|
# Checks for libraries.
|
||||||
PKG_CHECK_EXISTS([libopensc],
|
PKG_CHECK_EXISTS([libopensc],
|
||||||
[PKG_CHECK_MODULES([OPENSC], [libopensc >= 0.12.1 ])],
|
[PKG_CHECK_MODULES([OPENSC], [libopensc >= 0.12.1 ])],
|
||||||
[AC_MSG_WARN([libopensc >= 0.12.1 not found by pkg-config])])
|
[AC_MSG_WARN([libopensc >= 0.12.1 not found by pkg-config])])
|
||||||
test -z "$OPENSC_LIBS" && OPENSC_LIBS="-lopensc"
|
test -z "$OPENSC_LIBS" && OPENSC_LIBS="-lopensc"
|
||||||
|
|
||||||
|
saved_LIBS="$LIBS"
|
||||||
|
LIBS="$LDFLAGS $OPENSC_LIBS"
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for sc_perform_pace])
|
||||||
|
AC_TRY_LINK_FUNC(sc_perform_pace, [ AC_MSG_RESULT([yes]) ],
|
||||||
|
[ AC_MSG_ERROR([libopensc with PACE (git clone git://github.com/frankmorgner/OpenSC.git) not found, use ./configure OPENSC_LIBS=...]) ])
|
||||||
|
|
||||||
|
LIBS="$saved_LIBS"
|
||||||
|
|
||||||
|
|
||||||
PKG_CHECK_EXISTS([libcrypto],
|
PKG_CHECK_EXISTS([libcrypto],
|
||||||
[PKG_CHECK_MODULES([OPENSSL], [libcrypto])],
|
[PKG_CHECK_MODULES([OPENSSL], [libcrypto])],
|
||||||
[AC_MSG_WARN([libcrypto not found by pkg-config])])
|
[AC_MSG_WARN([libcrypto not found by pkg-config])])
|
||||||
@@ -47,23 +58,32 @@ PKG_CHECK_EXISTS([libcrypto],
|
|||||||
saved_CPPFLAGS="$CPPFLAGS"
|
saved_CPPFLAGS="$CPPFLAGS"
|
||||||
saved_LIBS="$LIBS"
|
saved_LIBS="$LIBS"
|
||||||
CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
|
CPPFLAGS="$CPPFLAGS $OPENSSL_CFLAGS"
|
||||||
LIBS="$LDFLAGS $OPENSC_LIBS $OPENSSL_LIBS"
|
LIBS="$LDFLAGS $OPENSSL_LIBS"
|
||||||
AC_MSG_CHECKING([for sc_perform_pace])
|
|
||||||
AC_TRY_LINK_FUNC(sc_perform_pace, [ AC_MSG_RESULT([yes]) ],
|
|
||||||
[ AC_MSG_ERROR([libopensc with PACE (git clone git://github.com/frankmorgner/OpenSC.git) not found, use ./configure OPENSC_LIBS=...]) ])
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS(openssl/evp.h, [], [ AC_MSG_ERROR([openssl/evp.h not found, install OpenSSL or use ./configure OPENSSL_CFLAGS=...]) ])
|
AC_CHECK_HEADERS(openssl/evp.h, [], [ AC_MSG_ERROR([openssl/evp.h not found, install OpenSSL or use ./configure OPENSSL_CFLAGS=...]) ])
|
||||||
AC_MSG_CHECKING([for EVP_read_pw_string_min])
|
AC_MSG_CHECKING([for EVP_read_pw_string_min])
|
||||||
AC_TRY_LINK_FUNC(EVP_read_pw_string_min, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenSSL not found, use ./configure OPENSSL_LIBS=...]) ])
|
AC_TRY_LINK_FUNC(EVP_read_pw_string_min, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenSSL not found, use ./configure OPENSSL_LIBS=...]) ])
|
||||||
|
|
||||||
AC_CHECK_HEADERS(openssl/eac.h, [], [ AC_MSG_ERROR([openssl/eac.h not found, install OpenPACE or use ./configure OPENSSL_CFLAGS=...]) ])
|
CPPFLAGS="$saved_CPPFLAGS"
|
||||||
|
LIBS="$saved_LIBS"
|
||||||
|
|
||||||
|
|
||||||
|
PKG_CHECK_EXISTS([libeac],
|
||||||
|
[PKG_CHECK_MODULES([OPENPACE], [libeac])],
|
||||||
|
[AC_MSG_WARN([libeac not found by pkg-config])])
|
||||||
|
|
||||||
|
saved_CPPFLAGS="$CPPFLAGS"
|
||||||
|
saved_LIBS="$LIBS"
|
||||||
|
CPPFLAGS="$CPPFLAGS $OPENPACE_CFLAGS"
|
||||||
|
LIBS="$LDFLAGS $OPENPACE_LIBS"
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS(eac/eac.h, [], [ AC_MSG_ERROR([eac/eac.h not found, install OpenPACE or use ./configure OPENSSL_CFLAGS=...]) ])
|
||||||
AC_MSG_CHECKING([for EAC_CTX_init_pace])
|
AC_MSG_CHECKING([for EAC_CTX_init_pace])
|
||||||
AC_TRY_LINK_FUNC(EAC_CTX_init_pace, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenPACE not found, use ./configure OPENSSL_LIBS=...]) ])
|
AC_TRY_LINK_FUNC(EAC_CTX_init_pace, [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([OpenPACE not found, use ./configure OPENPACE_LIBS=...]) ])
|
||||||
|
|
||||||
CPPFLAGS="$saved_CPPFLAGS"
|
CPPFLAGS="$saved_CPPFLAGS"
|
||||||
LIBS="$saved_LIBS"
|
LIBS="$saved_LIBS"
|
||||||
|
|
||||||
AC_DEFINE(BUERGERCLIENT_WORKAROUND, 1, [Always get EF.CardAccess, when connecting to a smart card. This is a workaround for the recent Buergerclient])
|
|
||||||
|
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
@@ -102,6 +122,8 @@ Libraries: ${LIBS}
|
|||||||
OPENSC_LIBS: ${OPENSC_LIBS}
|
OPENSC_LIBS: ${OPENSC_LIBS}
|
||||||
OPENSSL_CFLAGS: ${OPENSSL_CFLAGS}
|
OPENSSL_CFLAGS: ${OPENSSL_CFLAGS}
|
||||||
OPENSSL_LIBS: ${OPENSSL_LIBS}
|
OPENSSL_LIBS: ${OPENSSL_LIBS}
|
||||||
|
OPENPACE_CFLAGS: ${OPENPACE_CFLAGS}
|
||||||
|
OPENPACE_LIBS: ${OPENPACE_LIBS}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ includedir=@includedir@
|
|||||||
Name: lib@PACKAGE_NAME@
|
Name: lib@PACKAGE_NAME@
|
||||||
Description: Library for the new German ID card (neuer Personalausweis, nPA)
|
Description: Library for the new German ID card (neuer Personalausweis, nPA)
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Requires: libcrypto
|
Requires: libeac
|
||||||
Libs: -L${libdir} -lnpa @OPENSC_LIBS@
|
Libs: -L${libdir} -lnpa @OPENSC_LIBS@
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
|||||||
@@ -17,17 +17,17 @@ dist_man1_MANS = npa-tool.1
|
|||||||
AM_CPPFLAGS = -I$(top_srcdir)/src/npa -I$(top_srcdir)/src/opensc/src
|
AM_CPPFLAGS = -I$(top_srcdir)/src/npa -I$(top_srcdir)/src/opensc/src
|
||||||
|
|
||||||
libnpa_la_SOURCES = sm.c scutil.c npa.c sslutil.c
|
libnpa_la_SOURCES = sm.c scutil.c npa.c sslutil.c
|
||||||
libnpa_la_LIBADD = $(OPENSSL_LIBS) $(OPENSC_LIBS)
|
libnpa_la_LIBADD = $(OPENSSL_LIBS) $(OPENPACE_LIBS) $(OPENSC_LIBS)
|
||||||
libnpa_la_CFLAGS = $(OPENSSL_CFLAGS)
|
libnpa_la_CFLAGS = $(OPENSSL_CFLAGS) $(OPENPACE_CFLAGS)
|
||||||
libnpa_la_LDFLAGS = -no-undefined
|
libnpa_la_LDFLAGS = -no-undefined
|
||||||
|
|
||||||
npa_tool_SOURCES = npa-tool.c $(BUILT_SOURCES)
|
npa_tool_SOURCES = npa-tool.c $(BUILT_SOURCES)
|
||||||
npa_tool_LDADD = $(OPENSSL_LIBS) $(OPENSC_LIBS) libnpa.la
|
npa_tool_LDADD = $(OPENSSL_LIBS) $(OPENPACE_LIBS) $(OPENSC_LIBS) libnpa.la
|
||||||
npa_tool_CFLAGS = $(OPENSSL_CFLAGS)
|
npa_tool_CFLAGS = $(OPENSSL_CFLAGS) $(OPENPACE_CFLAGS)
|
||||||
|
|
||||||
example_SOURCES = example.c
|
example_SOURCES = example.c
|
||||||
example_LDADD = $(OPENSSL_LIBS) $(OPENSC_LIBS) libnpa.la
|
example_LDADD = $(OPENSSL_LIBS) $(OPENPACE_LIBS) $(OPENSC_LIBS) libnpa.la
|
||||||
example_CFLAGS = $(OPENSSL_CFLAGS)
|
example_CFLAGS = $(OPENSSL_CFLAGS) $(OPENPACE_CFLAGS)
|
||||||
|
|
||||||
|
|
||||||
npa-tool.c: $(BUILT_SOURCES)
|
npa-tool.c: $(BUILT_SOURCES)
|
||||||
|
|||||||
@@ -18,10 +18,11 @@
|
|||||||
*/
|
*/
|
||||||
#include "cmdline.h"
|
#include "cmdline.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include <eac/pace.h>
|
||||||
#include <libopensc/log.h>
|
#include <libopensc/log.h>
|
||||||
|
#include <libopensc/opensc.h>
|
||||||
#include <npa/npa.h>
|
#include <npa/npa.h>
|
||||||
#include <npa/scutil.h>
|
#include <npa/scutil.h>
|
||||||
#include <openssl/pace.h>
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|||||||
@@ -17,22 +17,22 @@
|
|||||||
* ccid. If not, see <http://www.gnu.org/licenses/>.
|
* ccid. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#include "npa.h"
|
#include "npa.h"
|
||||||
#include "sm.h"
|
|
||||||
#include "scutil.h"
|
#include "scutil.h"
|
||||||
|
#include "sm.h"
|
||||||
#include "sslutil.h"
|
#include "sslutil.h"
|
||||||
|
#include <eac/cv_cert.h>
|
||||||
|
#include <eac/eac.h>
|
||||||
|
#include <eac/pace.h>
|
||||||
|
#include <eac/ta.h>
|
||||||
#include <libopensc/asn1.h>
|
#include <libopensc/asn1.h>
|
||||||
#include <libopensc/log.h>
|
#include <libopensc/log.h>
|
||||||
#include <libopensc/opensc.h>
|
#include <libopensc/opensc.h>
|
||||||
#include <openssl/asn1t.h>
|
#include <openssl/asn1t.h>
|
||||||
#include <openssl/bio.h>
|
#include <openssl/bio.h>
|
||||||
#include <openssl/buffer.h>
|
#include <openssl/buffer.h>
|
||||||
#include <openssl/cv_cert.h>
|
|
||||||
#include <openssl/eac.h>
|
|
||||||
#include <openssl/ta.h>
|
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#include <openssl/objects.h>
|
#include <openssl/objects.h>
|
||||||
#include <openssl/pace.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -173,6 +173,11 @@ struct npa_sm_ctx {
|
|||||||
BUF_MEM *auxiliary_data;
|
BUF_MEM *auxiliary_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* included in OpenPACE, but not propagated */
|
||||||
|
extern BUF_MEM *BUF_MEM_create_init(const void *buf, size_t len);
|
||||||
|
|
||||||
|
|
||||||
static int npa_sm_encrypt(sc_card_t *card, const struct sm_ctx *ctx,
|
static int npa_sm_encrypt(sc_card_t *card, const struct sm_ctx *ctx,
|
||||||
const u8 *data, size_t datalen, u8 **enc);
|
const u8 *data, size_t datalen, u8 **enc);
|
||||||
static int npa_sm_decrypt(sc_card_t *card, const struct sm_ctx *ctx,
|
static int npa_sm_decrypt(sc_card_t *card, const struct sm_ctx *ctx,
|
||||||
|
|||||||
@@ -26,10 +26,10 @@
|
|||||||
#ifndef _CCID_NPA_H
|
#ifndef _CCID_NPA_H
|
||||||
#define _CCID_NPA_H
|
#define _CCID_NPA_H
|
||||||
|
|
||||||
#include <npa/sm.h>
|
#include <eac/eac.h>
|
||||||
|
#include <eac/pace.h>
|
||||||
#include <libopensc/opensc.h>
|
#include <libopensc/opensc.h>
|
||||||
#include <openssl/eac.h>
|
#include <npa/sm.h>
|
||||||
#include <openssl/pace.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
Reference in New Issue
Block a user