summaryrefslogtreecommitdiffstats
path: root/build/crypto.m4
diff options
context:
space:
mode:
Diffstat (limited to 'build/crypto.m4')
-rw-r--r--build/crypto.m4290
1 files changed, 290 insertions, 0 deletions
diff --git a/build/crypto.m4 b/build/crypto.m4
new file mode 100644
index 0000000..3e856e4
--- /dev/null
+++ b/build/crypto.m4
@@ -0,0 +1,290 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Copyright 2006 The Apache Software Foundation or its licensors, as
+dnl applicable.
+dnl
+dnl Licensed under the Apache License, Version 2.0 (the "License");
+dnl you may not use this file except in compliance with the License.
+dnl You may obtain a copy of the License at
+dnl
+dnl http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl
+dnl Crypto module
+dnl
+
+dnl
+dnl APU_CHECK_CRYPTO: look for crypto libraries and headers
+dnl
+AC_DEFUN([APU_CHECK_CRYPTO], [
+ apu_have_crypto=0
+ apu_have_openssl=0
+ apu_have_nss=0
+ apu_have_commoncrypto=0
+
+ old_libs="$LIBS"
+ old_cppflags="$CPPFLAGS"
+ old_ldflags="$LDFLAGS"
+
+ AC_ARG_WITH([crypto], [APR_HELP_STRING([--with-crypto], [enable crypto support])],
+ [
+ cryptolibs="openssl nss commoncrypto"
+
+ if test "$withval" = "yes"; then
+
+ crypto_library_enabled=0
+ for cryptolib in $cryptolibs; do
+ eval v=\$with_$cryptolib
+ if test "$v" != "" -a "$v" != "no"; then
+ crypto_library_enabled=1
+ fi
+ done
+
+ if test "$crypto_library_enabled" = "0"; then
+ for cryptolib in $cryptolibs; do
+ eval v=\$with_$cryptolib
+ if test "$v" != "no"; then
+ eval with_$cryptolib=yes
+ crypto_library_enabled=1
+ fi
+ done
+ if test "$crypto_library_enabled" = "1"; then
+ AC_MSG_NOTICE([Crypto was requested but no crypto library was found; autodetecting possible libraries])
+ else
+ AC_ERROR([Crypto was requested but all possible crypto libraries were disabled.])
+ fi
+ fi
+
+ APU_CHECK_CRYPTO_OPENSSL
+ APU_CHECK_CRYPTO_NSS
+ APU_CHECK_CRYPTO_COMMONCRYPTO
+ dnl add checks for other varieties of ssl here
+ if test "$apu_have_crypto" = "0"; then
+ AC_ERROR([Crypto was requested but no crypto library could be enabled; specify the location of a crypto library using --with-openssl, --with-nss, and/or --with-commoncrypto.])
+ fi
+ fi
+ ], [
+ apu_have_crypto=0
+ ])
+
+ AC_SUBST(apu_have_crypto)
+
+])
+dnl
+
+AC_DEFUN([APU_CHECK_CRYPTO_OPENSSL], [
+ openssl_have_headers=0
+ openssl_have_libs=0
+
+ old_libs="$LIBS"
+ old_cppflags="$CPPFLAGS"
+ old_ldflags="$LDFLAGS"
+
+ AC_ARG_WITH([openssl],
+ [APR_HELP_STRING([--with-openssl=DIR], [specify location of OpenSSL])],
+ [
+ if test "$withval" = "yes"; then
+ AC_CHECK_HEADERS(openssl/x509.h, [openssl_have_headers=1])
+ AC_CHECK_LIB(crypto, EVP_CIPHER_CTX_new, AC_CHECK_LIB(ssl, SSL_accept, [openssl_have_libs=1],,-lcrypto))
+ if test "$openssl_have_headers" != "0" && test "$openssl_have_libs" != "0"; then
+ apu_have_openssl=1
+ fi
+ elif test "$withval" = "no"; then
+ apu_have_openssl=0
+ else
+
+ openssl_CPPFLAGS="-I$withval/include"
+ openssl_LDFLAGS="-L$withval/lib "
+
+ APR_ADDTO(CPPFLAGS, [$openssl_CPPFLAGS])
+ APR_ADDTO(LDFLAGS, [$openssl_LDFLAGS])
+
+ AC_MSG_NOTICE(checking for openssl in $withval)
+ AC_CHECK_HEADERS(openssl/x509.h, [openssl_have_headers=1])
+ AC_CHECK_LIB(crypto, EVP_CIPHER_CTX_new, AC_CHECK_LIB(ssl, SSL_accept, [openssl_have_libs=1],,-lcrypto))
+ if test "$openssl_have_headers" != "0" && test "$openssl_have_libs" != "0"; then
+ apu_have_openssl=1
+ APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
+ APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include])
+ fi
+
+ AC_CHECK_DECLS([EVP_PKEY_CTX_new], [], [],
+ [#include <openssl/evp.h>])
+
+ fi
+ ], [
+ apu_have_openssl=0
+ ])
+
+ AC_SUBST(apu_have_openssl)
+
+ dnl Since we have already done the AC_CHECK_LIB tests, if we have it,
+ dnl we know the library is there.
+ if test "$apu_have_openssl" = "1"; then
+ APR_ADDTO(LDADD_crypto_openssl, [$openssl_LDFLAGS -lssl -lcrypto])
+ apu_have_crypto=1
+
+ AC_MSG_CHECKING([for const input buffers in OpenSSL])
+ AC_TRY_COMPILE([#include <openssl/rsa.h>],
+ [ const unsigned char * buf;
+ unsigned char * outbuf;
+ RSA rsa;
+
+ RSA_private_decrypt(1,
+ buf,
+ outbuf,
+ &rsa,
+ RSA_PKCS1_PADDING);
+
+ ],
+ [AC_MSG_RESULT([yes])]
+ [AC_DEFINE([CRYPTO_OPENSSL_CONST_BUFFERS], 1, [Define that OpenSSL uses const buffers])],
+ [AC_MSG_RESULT([no])])
+
+ fi
+ AC_SUBST(LDADD_crypto_openssl)
+ AC_SUBST(apu_have_crypto)
+
+ LIBS="$old_libs"
+ CPPFLAGS="$old_cppflags"
+ LDFLAGS="$old_ldflags"
+])
+
+AC_DEFUN([APU_CHECK_CRYPTO_NSS], [
+ nss_have_libs=0
+
+ old_libs="$LIBS"
+ old_cppflags="$CPPFLAGS"
+ old_ldflags="$LDFLAGS"
+
+ AC_ARG_WITH([nss],
+ [APR_HELP_STRING([--with-nss=DIR], [specify location of NSS])],
+ [
+ if test "$withval" = "yes"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+ if test -n "$PKG_CONFIG"; then
+ nss_CPPFLAGS=`$PKG_CONFIG --cflags-only-I nss`
+ nss_LDFLAGS=`$PKG_CONFIG --libs nss`
+ APR_ADDTO(CPPFLAGS, [$nss_CPPFLAGS])
+ APR_ADDTO(LDFLAGS, [$nss_LDFLAGS])
+ fi
+ nss_have_prerrorh=0
+ nss_have_nssh=0
+ nss_have_pk11pubh=0
+ AC_CHECK_HEADERS(prerror.h, [nss_have_prerrorh=1])
+ AC_CHECK_HEADERS(nss/nss.h nss.h, [nss_have_nssh=1])
+ AC_CHECK_HEADERS(nss/pk11pub.h pk11pub.h, [nss_have_pk11pubh=1])
+ nss_have_headers=${nss_have_prerrorh}${nss_have_nssh}${nss_have_pk11pubh}
+ AC_CHECK_LIB(nspr4, PR_Initialize, AC_CHECK_LIB(nss3, PK11_CreatePBEV2AlgorithmID, [nss_have_libs=1],,-lnspr4))
+ if test "$nss_have_headers" = "111" && test "$nss_have_libs" != "0"; then
+ apu_have_nss=1
+ fi
+ elif test "$withval" = "no"; then
+ apu_have_nss=0
+ elif test "x$withval" != "x"; then
+
+ nss_CPPFLAGS="-I$withval/include/nss -I$withval/include/nss3 -I$withval/include/nspr -I$withval/include/nspr4 -I$withval/include -I$withval/../public"
+ nss_LDFLAGS="-L$withval/lib "
+
+ APR_ADDTO(CPPFLAGS, [$nss_CPPFLAGS])
+ APR_ADDTO(LDFLAGS, [$nss_LDFLAGS])
+
+ AC_MSG_NOTICE(checking for nss in $withval)
+ nss_have_prerrorh=0
+ nss_have_nssh=0
+ nss_have_pk11pubh=0
+ AC_CHECK_HEADERS(prerror.h, [nss_have_prerrorh=1])
+ AC_CHECK_HEADERS(nss/nss.h nss.h, [nss_have_nssh=1])
+ AC_CHECK_HEADERS(nss/pk11pub.h pk11pub.h, [nss_have_pk11pubh=1])
+ nss_have_headers=${nss_have_prerrorh}${nss_have_nssh}${nss_have_pk11pubh}
+ AC_CHECK_LIB(nspr4, PR_Initialize, AC_CHECK_LIB(nss3, PK11_CreatePBEV2AlgorithmID, [nss_have_libs=1],,-lnspr4))
+ if test "$nss_have_headers" = "111" && test "$nss_have_libs" != "0"; then
+ apu_have_nss=1
+ fi
+
+ fi
+ if test "$apu_have_nss" != "0"; then
+ APR_ADDTO(APRUTIL_PRIV_INCLUDES, [$nss_CPPFLAGS])
+ fi
+ ], [
+ apu_have_nss=0
+ ])
+
+ AC_SUBST(apu_have_nss)
+
+ dnl Since we have already done the AC_CHECK_LIB tests, if we have it,
+ dnl we know the library is there.
+ if test "$apu_have_nss" = "1"; then
+ APR_ADDTO(LDADD_crypto_nss, [$nss_LDFLAGS -lnspr4 -lnss3])
+ apu_have_crypto=1
+ fi
+ AC_SUBST(LDADD_crypto_nss)
+ AC_SUBST(apu_have_crypto)
+
+ LIBS="$old_libs"
+ CPPFLAGS="$old_cppflags"
+ LDFLAGS="$old_ldflags"
+])
+
+AC_DEFUN([APU_CHECK_CRYPTO_COMMONCRYPTO], [
+ apu_have_commoncrypto=0
+ commoncrypto_have_headers=0
+ commoncrypto_have_libs=0
+
+ old_libs="$LIBS"
+ old_cppflags="$CPPFLAGS"
+ old_ldflags="$LDFLAGS"
+
+ AC_ARG_WITH([commoncrypto],
+ [APR_HELP_STRING([--with-commoncrypto=DIR], [specify location of CommonCrypto])],
+ [
+ if test "$withval" = "yes"; then
+ AC_CHECK_HEADERS(CommonCrypto/CommonKeyDerivation.h, [commoncrypto_have_headers=1])
+ AC_CHECK_LIB(System, CCKeyDerivationPBKDF, AC_CHECK_LIB(System, CCCryptorCreate, [commoncrypto_have_libs=1]))
+ if test "$commoncrypto_have_headers" != "0" && test "$commoncrypto_have_libs" != "0"; then
+ apu_have_commoncrypto=1
+ fi
+ elif test "$withval" = "no"; then
+ apu_have_commoncrypto=0
+ else
+
+ commoncrypto_CPPFLAGS="-I$withval/include"
+ commoncrypto_LDFLAGS="-L$withval/lib "
+
+ APR_ADDTO(CPPFLAGS, [$commoncrypto_CPPFLAGS])
+ APR_ADDTO(LDFLAGS, [$commoncrypto_LDFLAGS])
+
+ AC_MSG_NOTICE(checking for commoncrypto in $withval)
+ AC_CHECK_HEADERS(CommonCrypto/CommonKeyDerivation.h, [commoncrypto_have_headers=1])
+ AC_CHECK_LIB(System, CCKeyDerivationPBKDF, AC_CHECK_LIB(System, CCCryptorCreate, [commoncrypto_have_libs=1]))
+ if test "$commoncrypto_have_headers" != "0" && test "$commoncrypto_have_libs" != "0"; then
+ apu_have_commoncrypto=1
+ APR_ADDTO(LDFLAGS, [-L$withval/lib])
+ APR_ADDTO(INCLUDES, [-I$withval/include])
+ fi
+
+ fi
+ ], [
+ apu_have_commoncrypto=0
+ ])
+
+ dnl Since we have already done the AC_CHECK_LIB tests, if we have it,
+ dnl we know the library is there.
+ if test "$apu_have_commoncrypto" = "1"; then
+ apu_have_crypto=1
+ fi
+ AC_SUBST(apu_have_commoncrypto)
+ AC_SUBST(LDADD_crypto_commoncrypto)
+ AC_SUBST(apu_have_crypto)
+
+ LIBS="$old_libs"
+ CPPFLAGS="$old_cppflags"
+ LDFLAGS="$old_ldflags"
+])
+
+dnl