1dnl $Id$ 2dnl 3dnl test for crypto libraries: 4dnl - libcrypto (from openssl) 5dnl - own-built libhcrypto 6 7m4_define([test_headers], [ 8 #undef KRB5 /* makes md4.h et al unhappy */ 9 #ifdef HAVE_OPENSSL 10 #ifdef HAVE_SYS_TYPES_H 11 #include <sys/types.h> 12 #endif 13 #include <openssl/evp.h> 14 #include <openssl/md4.h> 15 #include <openssl/md5.h> 16 #include <openssl/sha.h> 17 #include <openssl/des.h> 18 #include <openssl/rc4.h> 19 #include <openssl/aes.h> 20 #include <openssl/ec.h> 21 #include <openssl/engine.h> 22 #include <openssl/ui.h> 23 #include <openssl/rand.h> 24 #include <openssl/hmac.h> 25 #include <openssl/pkcs12.h> 26 #else 27 #include <hcrypto/evp.h> 28 #include <hcrypto/md4.h> 29 #include <hcrypto/md5.h> 30 #include <hcrypto/sha.h> 31 #include <hcrypto/des.h> 32 #include <hcrypto/rc4.h> 33 #include <hcrypto/aes.h> 34 #include <hcrypto/engine.h> 35 #include <hcrypto/hmac.h> 36 #include <hcrypto/pkcs12.h> 37 #endif 38 ]) 39m4_define([test_body], [ 40 void *schedule = 0; 41 EVP_MD_CTX mdctx; 42 43 EVP_md4(); 44 EVP_md5(); 45 EVP_sha1(); 46 EVP_sha256(); 47 48 EVP_MD_CTX_init(&mdctx); 49 EVP_DigestInit_ex(&mdctx, EVP_sha1(), (ENGINE *)0); 50 EVP_CIPHER_iv_length(((EVP_CIPHER*)0)); 51 UI_UTIL_read_pw_string(0,0,0,0); 52 RAND_status(); 53 #ifdef HAVE_OPENSSL 54 EC_KEY_new(); 55 #endif 56 57 OpenSSL_add_all_algorithms(); 58 AES_encrypt(0,0,0); 59 DES_cbc_encrypt(0, 0, 0, schedule, 0, 0); 60 RC4(0, 0, 0, 0);]) 61 62 63AC_DEFUN([KRB_CRYPTO],[ 64crypto_lib=unknown 65AC_WITH_ALL([openssl]) 66 67DIR_hcrypto= 68 69AC_MSG_CHECKING([for crypto library]) 70 71openssl=no 72 73if test "$crypto_lib" = "unknown" -a "$with_openssl" != "no"; then 74 save_CFLAGS="$CFLAGS" 75 save_LIBS="$LIBS" 76 INCLUDE_hcrypto= 77 LIB_hcrypto= 78 if test "$with_openssl_include" != ""; then 79 INCLUDE_hcrypto="-I${with_openssl_include}" 80 fi 81 if test "$with_openssl_lib" != ""; then 82 LIB_hcrypto="-L${with_openssl_lib}" 83 fi 84 CFLAGS="-DHAVE_OPENSSL ${INCLUDE_hcrypto} ${CFLAGS}" 85 saved_LIB_hcrypto="$LIB_hcrypto" 86 for lres in "" "-ldl" "-lnsl -lsocket" "-lnsl -lsocket -ldl"; do 87 LIB_hcrypto="${saved_LIB_hcrypto} -lcrypto $lres" 88 LIB_hcrypto_a="$LIB_hcrypto" 89 LIB_hcrypto_so="$LIB_hcrypto" 90 LIB_hcrypto_appl="$LIB_hcrypto" 91 LIBS="${LIBS} ${LIB_hcrypto}" 92 AC_LINK_IFELSE([AC_LANG_PROGRAM([test_headers],[test_body])], [ 93 crypto_lib=libcrypto openssl=yes 94 AC_MSG_RESULT([libcrypto]) 95 ]) 96 if test "$crypto_lib" = libcrypto ; then 97 break; 98 fi 99 done 100 CFLAGS="$save_CFLAGS" 101 LIBS="$save_LIBS" 102fi 103 104if test "$crypto_lib" = "unknown"; then 105 106 DIR_hcrypto='hcrypto' 107 LIB_hcrypto='$(top_builddir)/lib/hcrypto/libhcrypto.la' 108 LIB_hcrypto_a='$(top_builddir)/lib/hcrypto/.libs/libhcrypto.a' 109 LIB_hcrypto_so='$(top_builddir)/lib/hcrypto/.libs/libhcrypto.so' 110 LIB_hcrypto_appl="-lhcrypto" 111 112 AC_MSG_RESULT([included libhcrypto]) 113 114fi 115 116if test "$openssl" = "yes"; then 117 AC_DEFINE([HAVE_OPENSSL], 1, [define to use openssl's libcrypto]) 118fi 119AM_CONDITIONAL(HAVE_OPENSSL, test "$openssl" = yes)dnl 120 121AC_SUBST(DIR_hcrypto) 122AC_SUBST(INCLUDE_hcrypto) 123AC_SUBST(LIB_hcrypto) 124AC_SUBST(LIB_hcrypto_a) 125AC_SUBST(LIB_hcrypto_so) 126AC_SUBST(LIB_hcrypto_appl) 127]) 128