1# =========================================================================== 2# https://www.gnu.org/software/autoconf-archive/ax_lib_gcrypt.html 3# =========================================================================== 4# 5# SYNOPSIS 6# 7# AX_LIB_GCRYPT([yes|no|auto]) 8# 9# DESCRIPTION 10# 11# Searches for the 'gcrypt' library with the --with... option. 12# 13# If found, define HAVE_GCRYPT and macro GCRYPT_LIBS and GCRYPT_CFLAGS. 14# Also defines GCRYPT_WITH_<algo> for the algorithms found available. 15# Possible algorithms are: AES ARCFOUR BLOWFISH CAST5 DES IDEA RFC2268 16# SERPENT TWOFISH CRC HAVAL MD2 MD4 MD5 RMD160 SHA0 SHA1 SHA224 SHA256 17# SHA384 SHA512 TIGER WHIRLPOOL DSA ELGAMAL RSA 18# 19# The argument is used if no --with...-gcrypt option is set. Value "yes" 20# requires the configuration by default. Value "no" does not require it by 21# default. Value "auto" configures the library only if available. 22# 23# See also AX_LIB_BEECRYPT and AX_LIB_CRYPTO. 24# 25# LICENSE 26# 27# Copyright (c) 2009 Fabien Coelho <autoconf.archive@coelho.net> 28# 29# Copying and distribution of this file, with or without modification, are 30# permitted in any medium without royalty provided the copyright notice 31# and this notice are preserved. This file is offered as-is, without any 32# warranty. 33 34#serial 12 35 36# AX_CHECK_GCRYPT_ALGO([algo]) 37# generate convenient defines for each algorithm 38AC_DEFUN([AX_CHECK_GCRYPT_ALGO],[ 39 AC_REQUIRE([AC_PROG_EGREP]) 40 AC_MSG_CHECKING([for $1 in gcrypt]) 41 if echo $gcrypt_algos | $EGREP -i ":.*( $1 | $1$)" > /dev/null ; then 42 AC_DEFINE([GCRYPT_WITH_$1],[1],[Algorithm $1 in gcrypt library]) 43 AC_MSG_RESULT([yes]) 44 else 45 AC_MSG_RESULT([no]) 46 fi 47]) 48 49# AX_LIB_GCRYPT([yes|no|auto]) 50AC_DEFUN([AX_LIB_GCRYPT],[ 51 AC_MSG_CHECKING([whether gcrypt is enabled]) 52 AC_ARG_WITH([gcrypt],[ --with-gcrypt require gcrypt library 53 --without-gcrypt disable gcrypt library],[ 54 AC_MSG_RESULT([$withval]) 55 ac_with_gcrypt=$withval 56 ],[ 57 AC_MSG_RESULT($1) 58 ac_with_gcrypt=$1 59 ]) 60 if test "$ac_with_gcrypt" = "yes" -o "$ac_with_gcrypt" = "auto" ; then 61 AM_PATH_LIBGCRYPT([1.2.0],[ 62 AC_DEFINE([HAVE_GCRYPT],[1],[Gcrypt library is available]) 63 HAVE_GCRYPT=1 64 # checking for available algorithms... 65 gcrypt_algos=`$LIBGCRYPT_CONFIG --algorithms` 66 # ciphers 67 # this does not work with a "for" loop: nothing generated in config.h:-( 68 AX_CHECK_GCRYPT_ALGO([AES]) 69 AX_CHECK_GCRYPT_ALGO([ARCFOUR]) 70 AX_CHECK_GCRYPT_ALGO([BLOWFISH]) 71 AX_CHECK_GCRYPT_ALGO([CAST5]) 72 AX_CHECK_GCRYPT_ALGO([DES]) 73 AX_CHECK_GCRYPT_ALGO([IDEA]) 74 AX_CHECK_GCRYPT_ALGO([RFC2268]) 75 AX_CHECK_GCRYPT_ALGO([SERPENT]) 76 AX_CHECK_GCRYPT_ALGO([TWOFISH]) 77 # digests 78 AX_CHECK_GCRYPT_ALGO([CRC]) 79 AX_CHECK_GCRYPT_ALGO([HAVAL]) 80 AX_CHECK_GCRYPT_ALGO([MD2]) 81 AX_CHECK_GCRYPT_ALGO([MD4]) 82 AX_CHECK_GCRYPT_ALGO([MD5]) 83 AX_CHECK_GCRYPT_ALGO([RMD160]) 84 AX_CHECK_GCRYPT_ALGO([SHA0]) 85 AX_CHECK_GCRYPT_ALGO([SHA1]) 86 AX_CHECK_GCRYPT_ALGO([SHA224]) 87 AX_CHECK_GCRYPT_ALGO([SHA256]) 88 AX_CHECK_GCRYPT_ALGO([SHA384]) 89 AX_CHECK_GCRYPT_ALGO([SHA512]) 90 AX_CHECK_GCRYPT_ALGO([TIGER]) 91 AX_CHECK_GCRYPT_ALGO([WHIRLPOOL]) 92 # others 93 AX_CHECK_GCRYPT_ALGO([DSA]) 94 AX_CHECK_GCRYPT_ALGO([ELGAMAL]) 95 AX_CHECK_GCRYPT_ALGO([RSA]) 96 # CMAC support 97 AC_MSG_CHECKING([for CMAC_AES in gcrypt]) 98 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gcrypt.h>]], [[ 99int ok = GCRY_MAC_CMAC_AES; 100(void)ok; 101 ]])],[ 102 AC_MSG_RESULT([yes]) 103 AC_DEFINE([GCRYPT_WITH_CMAC_AES],[1],[Algorithm CMAC_AES in gcrypt library]) 104 HAVE_CMAC=yes 105 ], [ 106 AC_MSG_RESULT([no]) 107 HAVE_CMAC=no 108 ]) 109 # conclusion 110 GCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags` 111 GCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs` 112 AC_SUBST(GCRYPT_CFLAGS) 113 AC_SUBST(GCRYPT_LIBS) 114 ],[ 115 # complain only if explicitly required 116 if test "$ac_with_gcrypt" = "yes" ; then 117 AC_MSG_ERROR([cannot configure required gcrypt library]) 118 fi 119 ]) 120 fi 121]) 122