These changes follow the same style as earlier patches, e.g. the selinux
patch. Pkg-config is now being used to detect pkcs11-helper afaics.
Also, pkcs11-helper now disabled by default, which I think makes sense.

I don't see why this shouldn't be included, so it's an ACK.

-- 
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock


> Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com>
> ---
>  configure.ac               |   49 ++++++++++++++++---------------------------
>  distro/rpm/openvpn.spec.in |    5 ++-
>  src/openvpn/Makefile.am    |    4 +++
>  src/openvpn/ssl.c          |    2 +-
>  src/openvpn/syshead.h      |    7 ------
>  5 files changed, 26 insertions(+), 41 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 2388f17..baa66b2 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -111,9 +111,9 @@ AC_ARG_ENABLE(
>  
>  AC_ARG_ENABLE(
>       [pkcs11],
> -     [AS_HELP_STRING([--disable-pkcs11], [disable pkcs11 support])],
> +     [AS_HELP_STRING([--enable-pkcs11], [enable pkcs11 support])],
>       ,
> -     [enable_pkcs11="yes"]
> +     [enable_pkcs11="no"]
>  )
>  
>  AC_ARG_ENABLE(
> @@ -254,19 +254,6 @@ AC_ARG_WITH(
>  )
>  
>  AC_ARG_WITH(
> -     [pkcs11-helper-headers],
> -     [AS_HELP_STRING([--with-pkcs11-helper-headers=DIR], [pkcs11-helper 
> Include files location])],
> -     [PKCS11_HELPER_HDR_DIR="$withval"]
> -     [CPPFLAGS="$CPPFLAGS -I$withval"] 
> -)
> -
> -AC_ARG_WITH(
> -     [pkcs11-helper-lib],
> -     [AS_HELP_STRING([--with-pkcs11-helper-lib=DIR], [pkcs11-helper Library 
> location])],
> -     [LDFLAGS="$LDFLAGS -L$withval"] 
> -)
> -
> -AC_ARG_WITH(
>       [mem-check],
>       [AS_HELP_STRING([--with-mem-check=TYPE], [build with debug memory 
> checking, TYPE=dmalloc|valgrind|ssl])],
>       [
> @@ -719,22 +706,12 @@ if test "${enable_lzo_stub}" = "yes"; then
>       AC_DEFINE([LZO_STUB], [1], [Enable LZO stub capability])
>  fi
>  
> -dnl
> -dnl enable pkcs11 capability
> -dnl
> -if test "${enable_pkcs11}" = "yes"; then
> -   AC_CHECKING([for pkcs11-helper Library and Header files])
> -   AC_CHECK_HEADER(pkcs11-helper-1.0/pkcs11h-core.h,
> -     [AC_CHECK_LIB(pkcs11-helper, pkcs11h_initialize,
> -         [
> -                AC_DEFINE(USE_PKCS11, 1, [Enable PKCS11 capability])
> -                LIBS="${LIBS} -lpkcs11-helper"
> -         ],
> -         [AC_MSG_RESULT([pkcs11-helper library not found.])]
> -     )],
> -     [AC_MSG_RESULT([pkcs11-helper headers not found.])]
> -   )
> -fi
> +PKG_CHECK_MODULES(
> +     [PKCS11_HELPER],
> +     [libpkcs11-helper-1 >= 1.02],
> +     [have_pkcs11_helper="yes"],
> +     []
> +)
>  
>  dnl
>  dnl check for SSL-crypto library
> @@ -890,6 +867,14 @@ if test "${enable_selinux}" = "yes"; then
>       AC_DEFINE([ENABLE_SELINUX], [1], [SELinux support])
>  fi
>  
> +if test "${enable_pkcs11}" = "yes"; then
> +     test "${have_pkcs11_helper}" != "yes" && AC_MSG_ERROR([PKCS11 enabled 
> but libpkcs11-helper is missing])
> +     test "${enable_ssl}" != "yes" && AC_MSG_ERROR([PKCS11 can be enabled 
> only if SSL is enabled])
> +     OPTIONAL_PKCS11_HELPER_CFLAGS="${PKCS11_HELPER_CFLAGS}"
> +     OPTIONAL_PKCS11_HELPER_LIBS="${PKCS11_HELPER_LIBS}"
> +     AC_DEFINE([ENABLE_PKCS11], [1], [Enable PKCS11])
> +fi
> +
>  if test "${enable_pedantic}" = "yes"; then
>       enable_strict="yes"
>       CFLAGS="${CFLAGS} -ansi -pedantic"
> @@ -917,6 +902,8 @@ AC_SUBST([TAP_WIN_MIN_MINOR])
>  
>  AC_SUBST([OPTIONAL_DL_LIBS])
>  AC_SUBST([OPTIONAL_SELINUX_LIBS])
> +AC_SUBST([OPTIONAL_PKCS11_HELPER_CFLAGS])
> +AC_SUBST([OPTIONAL_PKCS11_HELPER_LIBS])
>  
>  AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
>  
> diff --git a/distro/rpm/openvpn.spec.in b/distro/rpm/openvpn.spec.in
> index 455f739..8db5172 100644
> --- a/distro/rpm/openvpn.spec.in
> +++ b/distro/rpm/openvpn.spec.in
> @@ -52,8 +52,8 @@ Requires:      openssl       >= 0.9.6
>  %{!?without_pam:BuildRequires: pam-devel}
>  %{!?without_pam:Requires:      pam}
>  
> -%{!?with_pkcs11:BuildRequires: pkcs11-helper-devel}
> -%{!?with_pkcs11:Requires:      pkcs11-helper}
> +%{?with_pkcs11:BuildRequires: pkcs11-helper-devel}
> +%{?with_pkcs11:Requires:      pkcs11-helper}
>  
>  #
>  # Description
> @@ -111,6 +111,7 @@ Development support for OpenVPN.
>       --docdir="%{_docdir}/%{name}-%{version}" \
>       %{?with_password_save:--enable-password-save} \
>       %{?without_lzo:--disable-lzo} \
> +     %{?with_pkcs11:--enable-pkcs11} \
>       %{?with_kerberos:--with-ssl-headers=/usr/kerberos/include}
>  %__make
>  
> diff --git a/src/openvpn/Makefile.am b/src/openvpn/Makefile.am
> index a3f8b3a..fd92225 100644
> --- a/src/openvpn/Makefile.am
> +++ b/src/openvpn/Makefile.am
> @@ -16,6 +16,9 @@ MAINTAINERCLEANFILES = \
>  
>  INCLUDES = -I$(top_srcdir)/include
>  
> +AM_CFLAGS = \
> +     $(OPTIONAL_PKCS11_HELPER_CFLAGS)
> +
>  sbin_PROGRAMS = openvpn
>  
>  openvpn_SOURCES = \
> @@ -97,6 +100,7 @@ openvpn_SOURCES = \
>       cryptoapi.h cryptoapi.c
>  openvpn_LDADD = \
>       $(SOCKETS_LIBS) \
> +     $(OPTIONAL_PKCS11_HELPER_LIBS) \
>       $(OPTIONAL_SELINUX_LIBS) \
>       $(OPTIONAL_DL_LIBS)
>  if WIN32
> diff --git a/src/openvpn/ssl.c b/src/openvpn/ssl.c
> index c26756e..e260718 100644
> --- a/src/openvpn/ssl.c
> +++ b/src/openvpn/ssl.c
> @@ -264,7 +264,7 @@ ssl_purge_auth (const bool auth_user_pass_only)
>  {
>    if (!auth_user_pass_only)
>      {
> -#ifdef USE_PKCS11
> +#ifdef ENABLE_PKCS11
>        pkcs11_logout ();
>  #endif
>        purge_user_pass (&passbuf, true);
> diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h
> index cac4757..53b7580 100644
> --- a/src/openvpn/syshead.h
> +++ b/src/openvpn/syshead.h
> @@ -590,13 +590,6 @@ socket_defined (const socket_descriptor_t sd)
>  #endif
>  
>  /*
> - * Do we have PKCS11 capability?
> - */
> -#if defined(USE_PKCS11) && defined(USE_CRYPTO) && defined(USE_SSL)
> -#define ENABLE_PKCS11
> -#endif
> -
> -/*
>   * Do we have CryptoAPI capability?
>   */
>  #if defined(WIN32) && defined(USE_CRYPTO) && defined(USE_SSL) && 
> defined(USE_OPENSSL)



Reply via email to