1dnl Checks for libcrypto required headers and functions 2dnl 3dnl Version: 20210623 4 5dnl Function to detect whether openssl/evp.h can be used in combination with zlib.h 6AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_ZLIB_COMPATIBILE], 7 [AC_CACHE_CHECK( 8 [if openssl/evp.h can be used in combination with zlib.h], 9 [ac_cv_openssl_evp_zlib_compatible], 10 [AC_LANG_PUSH(C) 11 AC_LINK_IFELSE( 12 [AC_LANG_PROGRAM( 13 [[#include <zlib.h> 14#include <openssl/evp.h>]], 15 [[ ]] )], 16 [ac_cv_openssl_evp_zlib_compatible=yes], 17 [ac_cv_openssl_evp_zlib_compatible=no]) 18 AC_LANG_POP(C)]) 19 ]) 20 21dnl Function to detect whether EVP_CipherInit_ex can be used with duplicate keys. 22AC_DEFUN([AX_LIBCRYPTO_CHECK_XTS_DUPLICATE_KEYS_SUPPORT], 23 [AC_CACHE_CHECK( 24 [if `EVP_CipherInit_ex' can be used with duplicate keys], 25 [ac_cv_openssl_xts_duplicate_keys], 26 [AC_LANG_PUSH(C) 27 ac_cv_libcrypto_backup_LIBS="$LIBS" 28 LIBS="$LIBS $ac_cv_libcrypto_LIBADD" 29 AC_RUN_IFELSE( 30 [AC_LANG_PROGRAM( 31 [[#include <openssl/err.h> 32#include <openssl/evp.h>]], 33 [[unsigned char key[ 16 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; 34int result = 0; 35 36#if defined( HAVE_EVP_CIPHER_CTX_INIT ) 37EVP_CIPHER_CTX ctx; 38 39EVP_CIPHER_CTX_init( &ctx ); 40#else 41EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); 42#endif 43 44result = EVP_CipherInit_ex(ctx, EVP_aes_128_xts(), NULL, key, key, 0); 45 46#if defined( HAVE_EVP_CIPHER_CTX_INIT ) 47EVP_CIPHER_CTX_cleanup( &ctx ); 48#else 49EVP_CIPHER_CTX_free( ctx ); 50#endif 51 52return( result == 1 ); ]] )], 53 [ac_cv_openssl_xts_duplicate_keys=yes], 54 [ac_cv_openssl_xts_duplicate_keys=no]) 55 LIBS="$ac_cv_libcrypto_backup_LIBS" 56 AC_LANG_POP(C)]) 57 ]) 58 59dnl Function to detect if libcrypto (openssl) EVP functions are available 60AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP], 61 [AC_CHECK_HEADERS([openssl/evp.h]) 62 63 AS_IF( 64 [test "x$ac_cv_header_openssl_evp_h" = xno], 65 [ac_cv_libcrypto=no 66 ac_cv_libcrypto_evp=no], 67 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_ZLIB_COMPATIBILE 68 69 AS_IF( 70 [test "x$ac_cv_openssl_evp_zlib_compatible" = xyes], 71 [ac_cv_libcrypto=yes 72 ac_cv_libcrypto_evp=yes], 73 [ac_cv_libcrypto=no 74 ac_cv_libcrypto_evp=no]) 75 ]) 76 ]) 77 78dnl Function to detect if libcrypto (openssl) EVP MD functions are available 79AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD], 80 [ac_cv_libcrypto_evp_md=yes 81 82 AC_CHECK_LIB( 83 crypto, 84 EVP_MD_CTX_new, 85 [ac_cv_libcrypto_dummy=yes], 86 [ac_cv_libcrypto_dummy=no]) 87 88 AS_IF( 89 [test "x$ac_cv_lib_crypto_EVP_MD_CTX_new" = xyes], 90 [dnl Check for the new EVP API functions 91 AC_CHECK_LIB( 92 crypto, 93 EVP_MD_CTX_free, 94 [ac_cv_libcrypto_dummy=yes], 95 [ac_cv_libcrypto_evp_md=no]) 96 ], 97 [dnl Check for the old EVP API functions 98 AC_CHECK_LIB( 99 crypto, 100 EVP_MD_CTX_init, 101 [ac_cv_libcrypto_dummy=yes], 102 [ac_cv_libcrypto_evp_md=no]) 103 AC_CHECK_LIB( 104 crypto, 105 EVP_MD_CTX_cleanup, 106 [ac_cv_libcrypto_dummy=yes], 107 [ac_cv_libcrypto_evp_md=no]) 108 109 AC_CHECK_LIB( 110 crypto, 111 ERR_remove_thread_state, 112 [ac_cv_libcrypto_dummy=yes], 113 [ac_cv_libcrypto_evp_md=no]) 114 ]) 115 116 AC_CHECK_LIB( 117 crypto, 118 EVP_DigestInit_ex, 119 [ac_cv_libcrypto_dummy=yes], 120 [ac_cv_libcrypto_evp_md=no]) 121 AC_CHECK_LIB( 122 crypto, 123 EVP_DigestUpdate, 124 [ac_cv_libcrypto_dummy=yes], 125 [ac_cv_libcrypto_evp_md=no]) 126 AC_CHECK_LIB( 127 crypto, 128 EVP_DigestFinal_ex, 129 [ac_cv_libcrypto_dummy=yes], 130 [ac_cv_libcrypto_evp_md=no]) 131 132 AS_IF( 133 [test "x$ac_cv_enable_openssl_evp_md" = xyes && test "x$ac_cv_libcrypto_evp_md" = xno], 134 [AC_MSG_FAILURE( 135 [Missing OpenSSL EVP MD support], 136 [1]) 137 ]) 138 139 AS_IF( 140 [test "x$ac_cv_lib_crypto_EVP_MD_CTX_init" = xyes], 141 [AC_DEFINE( 142 [HAVE_EVP_MD_CTX_INIT], 143 [1], 144 [Define to 1 if you have the `EVP_MD_CTX_init' function".]) 145 ]) 146 147 AS_IF( 148 [test "x$ac_cv_lib_crypto_EVP_MD_CTX_cleanup" = xyes], 149 [AC_DEFINE( 150 [HAVE_EVP_MD_CTX_CLEANUP], 151 [1], 152 [Define to 1 if you have the `EVP_MD_CTX_cleanup' function".]) 153 ]) 154 ]) 155 156dnl Function to detect if openssl EVP MD5 functions are available 157AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD5], 158 [AC_CHECK_LIB( 159 crypto, 160 EVP_md5, 161 [ac_cv_libcrypto_md5=libcrypto_evp], 162 [ac_cv_libcrypto_md5=no]) 163 164 AS_IF( 165 [test "x$ac_cv_libcrypto_md5" = xlibcrypto_evp], 166 [AC_DEFINE( 167 [HAVE_EVP_MD5], 168 [1], 169 [Define to 1 if you have the `EVP_md5' function".]) 170 ]) 171 ]) 172 173dnl Function to detect if openssl EVP SHA1 functions are available 174AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA1], 175 [AC_CHECK_LIB( 176 crypto, 177 EVP_sha1, 178 [ac_cv_libcrypto_sha1=libcrypto_evp], 179 [ac_cv_libcrypto_sha1=no]) 180 181 AS_IF( 182 [test "x$ac_cv_libcrypto_sha1" = xlibcrypto_evp], 183 [AC_DEFINE( 184 [HAVE_EVP_SHA1], 185 [1], 186 [Define to 1 if you have the `EVP_sha1' function".]) 187 ]) 188 ]) 189 190dnl Function to detect if openssl EVP SHA224 functions are available 191AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA224], 192 [AC_CHECK_LIB( 193 crypto, 194 EVP_sha224, 195 [ac_cv_libcrypto_sha224=libcrypto_evp], 196 [ac_cv_libcrypto_sha224=no]) 197 198 AS_IF( 199 [test "x$ac_cv_libcrypto_sha224" = xlibcrypto_evp], 200 [AC_DEFINE( 201 [HAVE_EVP_SHA224], 202 [1], 203 [Define to 1 if you have the `EVP_sha224' function".]) 204 ]) 205 ]) 206 207dnl Function to detect if openssl EVP SHA256 functions are available 208AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA256], 209 [AC_CHECK_LIB( 210 crypto, 211 EVP_sha256, 212 [ac_cv_libcrypto_sha256=libcrypto_evp], 213 [ac_cv_libcrypto_sha256=no]) 214 215 AS_IF( 216 [test "x$ac_cv_libcrypto_sha256" = xlibcrypto_evp], 217 [AC_DEFINE( 218 [HAVE_EVP_SHA256], 219 [1], 220 [Define to 1 if you have the `EVP_sha256' function".]) 221 ]) 222 ]) 223 224dnl Function to detect if openssl EVP SHA512 functions are available 225AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA512], 226 [AC_CHECK_LIB( 227 crypto, 228 EVP_sha512, 229 [ac_cv_libcrypto_sha512=libcrypto_evp], 230 [ac_cv_libcrypto_sha512=no]) 231 232 AS_IF( 233 [test "x$ac_cv_libcrypto_sha512" = xlibcrypto_evp], 234 [AC_DEFINE( 235 [HAVE_EVP_SHA512], 236 [1], 237 [Define to 1 if you have the `EVP_sha512' function".]) 238 ]) 239 ]) 240 241dnl Function to detect if openssl MD5 functions are available 242AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_MD5], 243 [AC_CHECK_HEADERS([openssl/md5.h]) 244 245 AS_IF( 246 [test "x$ac_cv_header_openssl_md5_h" = xno], 247 [ac_cv_libcrypto_md5=no], 248 [ac_cv_libcrypto_md5=libcrypto 249 250 AC_CHECK_LIB( 251 crypto, 252 MD5_Init, 253 [ac_cv_libcrypto_dummy=yes], 254 [ac_cv_libcrypto_md5=no]) 255 AC_CHECK_LIB( 256 crypto, 257 MD5_Update, 258 [ac_cv_libcrypto_dummy=yes], 259 [ac_cv_libcrypto_md5=no]) 260 AC_CHECK_LIB( 261 crypto, 262 MD5_Final, 263 [ac_cv_libcrypto_dummy=yes], 264 [ac_cv_libcrypto_md5=no]) 265 ]) 266 267 AS_IF( 268 [test "x$ac_cv_libcrypto" = xno && test "x$ac_cv_libcrypto_md5" = xlibcrypto], 269 [ac_cv_libcrypto=yes]) 270 ]) 271 272dnl Function to detect if openssl SHA1 functions are available 273AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_SHA1], 274 [AC_CHECK_HEADERS([openssl/sha.h]) 275 276 AS_IF( 277 [test "x$ac_cv_header_openssl_sha_h" = xno], 278 [ac_cv_libcrypto_sha1=no], 279 [ac_cv_libcrypto_sha1=libcrypto 280 281 AC_CHECK_LIB( 282 crypto, 283 SHA1_Init, 284 [ac_cv_libcrypto_dummy=yes], 285 [ac_cv_libcrypto_sha1=no]) 286 AC_CHECK_LIB( 287 crypto, 288 SHA1_Update, 289 [ac_cv_libcrypto_dummy=yes], 290 [ac_cv_libcrypto_sha1=no]) 291 AC_CHECK_LIB( 292 crypto, 293 SHA1_Final, 294 [ac_cv_libcrypto_dummy=yes], 295 [ac_cv_libcrypto_sha1=no]) 296 ]) 297 298 AS_IF( 299 [test "x$ac_cv_libcrypto" = xno && test "x$ac_cv_libcrypto_sha1" = xlibcrypto], 300 [ac_cv_libcrypto=yes]) 301 ]) 302 303dnl Function to detect if openssl SHA224 functions are available 304AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_SHA224], 305 [AC_CHECK_HEADERS([openssl/sha.h]) 306 307 AS_IF( 308 [test "x$ac_cv_header_openssl_sha_h" = xno], 309 [ac_cv_libcrypto_sha224=no], 310 [ac_cv_libcrypto_sha224=libcrypto 311 312 AC_CHECK_LIB( 313 crypto, 314 SHA224_Init, 315 [ac_cv_libcrypto_dummy=yes], 316 [ac_cv_libcrypto_sha224=no]) 317 AC_CHECK_LIB( 318 crypto, 319 SHA224_Update, 320 [ac_cv_libcrypto_dummy=yes], 321 [ac_cv_libcrypto_sha224=no]) 322 AC_CHECK_LIB( 323 crypto, 324 SHA224_Final, 325 [ac_cv_libcrypto_dummy=yes], 326 [ac_cv_libcrypto_sha224=no]) 327 ]) 328 329 AS_IF( 330 [test "x$ac_cv_libcrypto" = xno && test "x$ac_cv_libcrypto_sha224" = xlibcrypto], 331 [ac_cv_libcrypto=yes]) 332 ]) 333 334dnl Function to detect if openssl SHA256 functions are available 335AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_SHA256], 336 [AC_CHECK_HEADERS([openssl/sha.h]) 337 338 AS_IF( 339 [test "x$ac_cv_header_openssl_sha_h" = xno], 340 [ac_cv_libcrypto_sha256=no], 341 [ac_cv_libcrypto_sha256=libcrypto 342 343 AC_CHECK_LIB( 344 crypto, 345 SHA256_Init, 346 [ac_cv_libcrypto_dummy=yes], 347 [ac_cv_libcrypto_sha256=no]) 348 AC_CHECK_LIB( 349 crypto, 350 SHA256_Update, 351 [ac_cv_libcrypto_dummy=yes], 352 [ac_cv_libcrypto_sha256=no]) 353 AC_CHECK_LIB( 354 crypto, 355 SHA256_Final, 356 [ac_cv_libcrypto_dummy=yes], 357 [ac_cv_libcrypto_sha256=no]) 358 ]) 359 360 AS_IF( 361 [test "x$ac_cv_libcrypto" = xno && test "x$ac_cv_libcrypto_sha256" = xlibcrypto], 362 [ac_cv_libcrypto=yes]) 363 ]) 364 365dnl Function to detect if openssl SHA512 functions are available 366AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_SHA512], 367 [AC_CHECK_HEADERS([openssl/sha.h]) 368 369 AS_IF( 370 [test "x$ac_cv_header_openssl_sha_h" = xno], 371 [ac_cv_libcrypto_sha512=no], 372 [ac_cv_libcrypto_sha512=libcrypto 373 374 AC_CHECK_LIB( 375 crypto, 376 SHA512_Init, 377 [ac_cv_libcrypto_dummy=yes], 378 [ac_cv_libcrypto_sha512=no]) 379 AC_CHECK_LIB( 380 crypto, 381 SHA512_Update, 382 [ac_cv_libcrypto_dummy=yes], 383 [ac_cv_libcrypto_sha512=no]) 384 AC_CHECK_LIB( 385 crypto, 386 SHA512_Final, 387 [ac_cv_libcrypto_dummy=yes], 388 [ac_cv_libcrypto_sha512=no]) 389 ]) 390 391 AS_IF( 392 [test "x$ac_cv_libcrypto" = xno && test "x$ac_cv_libcrypto_sha512" = xlibcrypto], 393 [ac_cv_libcrypto=yes]) 394 ]) 395 396dnl Function to detect if openssl EVP CIPHER functions are available 397AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_EVP_CIPHER], 398 [ac_cv_libcrypto_evp_cipher=yes 399 400 dnl Check if all required libcrypto (openssl) EVP CIPHER functions are available 401 AC_CHECK_LIB( 402 crypto, 403 EVP_CIPHER_CTX_new, 404 [ac_cv_libcrypto_dummy=yes], 405 [ac_cv_libcrypto_dummy=no]) 406 407 AS_IF( 408 [test "x$ac_cv_lib_crypto_EVP_CIPHER_CTX_new" = xyes], 409 [dnl Check for the new EVP API functions 410 AC_CHECK_LIB( 411 crypto, 412 EVP_CIPHER_CTX_free, 413 [ac_cv_libcrypto_dummy=yes], 414 [ac_cv_libcrypto_evp_cipher=no]) 415 ], 416 [dnl Check for the old EVP API functions 417 AC_CHECK_LIB( 418 crypto, 419 EVP_CIPHER_CTX_init, 420 [ac_cv_libcrypto_dummy=yes], 421 [ac_cv_libcrypto_evp_cipher=no]) 422 AC_CHECK_LIB( 423 crypto, 424 EVP_CIPHER_CTX_cleanup, 425 [ac_cv_libcrypto_dummy=yes], 426 [ac_cv_libcrypto_evp_cipher=no]) 427 428 AC_CHECK_LIB( 429 crypto, 430 ERR_remove_thread_state, 431 [ac_cv_libcrypto_dummy=yes], 432 [ac_cv_libcrypto_evp_cipher=no]) 433 ]) 434 435 AC_CHECK_LIB( 436 crypto, 437 EVP_CIPHER_CTX_set_padding, 438 [ac_cv_libcrypto_dummy=yes], 439 [ac_cv_libcrypto_evp_cipher=no]) 440 441 AC_CHECK_LIB( 442 crypto, 443 EVP_CipherInit_ex, 444 [ac_cv_libcrypto_dummy=yes], 445 [ac_cv_libcrypto_evp_cipher=no]) 446 AC_CHECK_LIB( 447 crypto, 448 EVP_CipherUpdate, 449 [ac_cv_libcrypto_dummy=yes], 450 [ac_cv_libcrypto_evp_cipher=no]) 451 AC_CHECK_LIB( 452 crypto, 453 EVP_CipherFinal_ex, 454 [ac_cv_libcrypto_dummy=yes], 455 [ac_cv_libcrypto_evp_cipher=no]) 456 457 AS_IF( 458 [test "x$ac_cv_enable_openssl_evp_cipher" = xyes && test "x$ac_cv_libcrypto_evp_cipher" = xno], 459 [AC_MSG_FAILURE( 460 [Missing OpenSSL EVP CIPHER support], 461 [1]) 462 ]) 463 464 AS_IF( 465 [test "x$ac_cv_lib_crypto_EVP_CIPHER_CTX_init" = xyes], 466 [AC_DEFINE( 467 [HAVE_EVP_CIPHER_CTX_INIT], 468 [1], 469 [Define to 1 if you have the `EVP_CIPHER_CTX_init' function".]) 470 ]) 471 472 AS_IF( 473 [test "x$ac_cv_lib_crypto_EVP_CIPHER_CTX_cleanup" = xyes], 474 [AC_DEFINE( 475 [HAVE_EVP_CIPHER_CTX_CLEANUP], 476 [1], 477 [Define to 1 if you have the `EVP_CIPHER_CTX_cleanup' function".]) 478 ]) 479 ]) 480 481dnl Function to detect if openssl AES-CBC and AES-ECB functions are available 482AC_DEFUN([AX_LIBCRYPTO_CHECK_OPENSSL_AES], 483 [AC_CHECK_HEADERS([openssl/aes.h]) 484 485 AS_IF( 486 [test "x$ac_cv_header_openssl_aes_h" = xno], 487 [ac_cv_libcrypto_aes_cbc=no 488 ac_cv_libcrypto_aes_ecb=no], 489 [ac_cv_libcrypto_aes_cbc=libcrypto 490 ac_cv_libcrypto_aes_ecb=libcrypto 491 492 AC_CHECK_LIB( 493 crypto, 494 AES_set_decrypt_key, 495 [ac_cv_libcrypto_dummy=yes], 496 [ac_cv_libcrypto_aes_cbc=no, 497 ac_cv_libcrypto_aes_ecb=no]) 498 AC_CHECK_LIB( 499 crypto, 500 AES_set_encrypt_key, 501 [ac_cv_libcrypto_dummy=yes], 502 [ac_cv_libcrypto_aes_cbc=no, 503 ac_cv_libcrypto_aes_ecb=no]) 504 505 AC_CHECK_LIB( 506 crypto, 507 AES_cbc_encrypt, 508 [ac_cv_libcrypto_dummy=yes], 509 [ac_cv_libcrypto_aes_cbc=no]) 510 511 AC_CHECK_LIB( 512 crypto, 513 AES_ecb_encrypt, 514 [ac_cv_libcrypto_dummy=yes], 515 [ac_cv_libcrypto_aes_ecb=no]) 516 517 AS_IF( 518 [test "x$ac_cv_lib_crypto_AES_cbc_encrypt" = xyes], 519 [AC_DEFINE( 520 [HAVE_AES_CBC_ENCRYPT], 521 [1], 522 [Define to 1 if you have the `AES_cbc_encrypt' function".]) 523 ]) 524 525 AS_IF( 526 [test "x$ac_cv_lib_crypto_AES_ecb_encrypt" = xyes], 527 [AC_DEFINE( 528 [HAVE_AES_ECB_ENCRYPT], 529 [1], 530 [Define to 1 if you have the `AES_ecb_encrypt' function".]) 531 ]) 532 ]) 533 534 AS_IF( 535 [test "x$ac_cv_libcrypto" = xno], 536 [AS_IF( 537 [test "x$ac_cv_libcrypto_aes_cbc" = xno || test "x$ac_cv_libcrypto_aes_ecb" = xno], 538 [ac_cv_libcrypto=yes]) 539 ]) 540 541 dnl ac_cv_libcrypto_aes is deprecated but kept for backwards compatibility 542 AS_IF( 543 [test "x$ac_cv_libcrypto_aes_cbc" = xno || test "x$ac_cv_libcrypto_aes_ecb" = xno], 544 [ac_cv_libcrypto_aes=no], 545 [ac_cv_libcrypto_aes=libcrypto]) 546 ]) 547 548dnl Function to detect if libcrypto (openssl) dependencies are available 549AC_DEFUN([AX_LIBCRYPTO_CHECK_LIB], 550 [AS_IF( 551 [test "x$ac_cv_enable_shared_libs" = xno || test "x$ac_cv_with_openssl" = xno], 552 [ac_cv_libcrypto=no], 553 [dnl Check if the directory provided as parameter exists 554 AS_IF( 555 [test "x$ac_cv_with_openssl" != x && test "x$ac_cv_with_openssl" != xauto-detect], 556 [AS_IF( 557 [test -d "$ac_cv_with_openssl"], 558 [CFLAGS="$CFLAGS -I${ac_cv_with_openssl}/include" 559 LDFLAGS="$LDFLAGS -L${ac_cv_with_openssl}/lib"], 560 [AC_MSG_FAILURE( 561 [no such directory: $ac_cv_with_openssl], 562 [1]) 563 ])], 564 [dnl Check for a pkg-config file 565 AS_IF( 566 [test "x$cross_compiling" != "xyes" && test "x$PKGCONFIG" != "x"], 567 [PKG_CHECK_MODULES( 568 [openssl], 569 [openssl >= 1.0], 570 [ac_cv_libcrypto=yes 571 ac_cv_libcrypto_evp=yes], 572 [ac_cv_libcrypto=no 573 ac_cv_libcrypto_evp=no]) 574 ]) 575 AS_IF( 576 [test "x$ac_cv_libcrypto" = xyes], 577 [ac_cv_libcrypto_CPPFLAGS="$pkg_cv_openssl_CFLAGS" 578 ac_cv_libcrypto_LIBADD="$pkg_cv_openssl_LIBS"]) 579 ]) 580 581 AS_IF( 582 [test "x$ac_cv_libcrypto" != xyes], 583 [dnl Check for headers 584 AC_CHECK_HEADERS([openssl/opensslv.h]) 585 586 AX_LIBCRYPTO_CHECK_OPENSSL_EVP 587 588 AS_IF( 589 [test "x$ac_cv_libcrypto_evp" != xyes && test "$ac_cv_header_openssl_opensslv" = xyes], 590 [ac_cv_libcrypto=yes]) 591 ]) 592 593 dnl Setup libcrypto (openssl) parameters 594 AS_IF( 595 [test "x$ac_cv_libcrypto" = xyes && test "x$ac_cv_libcrypto_evp" = xyes], 596 [AC_DEFINE( 597 [HAVE_OPENSSL_EVP_H], 598 [1], 599 [Define to 1 if you have the <openssl/evp.h> header file.]) 600 AC_SUBST( 601 [HAVE_OPENSSL_EVP_H], 602 [1]) ], 603 [AC_SUBST( 604 [HAVE_OPENSSL_EVP_H], 605 [0]) 606 ]) 607 608 AS_IF( 609 [test "x$ac_cv_libcrypto" != xno], 610 [AC_DEFINE( 611 [HAVE_LIBCRYPTO], 612 [1], 613 [Define to 1 if you have the 'crypto' library (-lcrypto).]) 614 615 ac_cv_libcrypto_LIBADD="-lcrypto" 616 617 dnl On Cygwin also link zlib since libcrypto relies on it 618 AS_CASE( 619 [$host], 620 [*cygwin*], 621 [ac_cv_libcrypto_LIBADD="-lcrypto -lz"]) 622 623 dnl Enforce the dynamic loader library to be included if available 624 AC_CHECK_LIB( 625 dl, 626 dlopen, 627 [AC_SUBST( 628 [LIBDL_LIBADD], 629 ["-ldl"])], 630 []) 631 ]) 632 ]) 633 ]) 634 635dnl Function to detect if libcrypto MD5 functions are available 636AC_DEFUN([AX_LIBCRYPTO_CHECK_MD5], 637 [ac_cv_libcrypto_md5=no 638 639 dnl Check for libcrypto (openssl) EVP MD support 640 AS_IF( 641 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_libcrypto_evp_md" != xyes], 642 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD]) 643 644 dnl Check for libcrypto (openssl) EVP MD5 support 645 AS_IF( 646 [test "x$ac_cv_libcrypto_evp_md" = xyes], 647 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD5]) 648 649 dnl Check for libcrypto (openssl) MD5 support 650 AS_IF( 651 [test "x$ac_cv_libcrypto_md5" = xno], 652 [AX_LIBCRYPTO_CHECK_OPENSSL_MD5]) 653 ]) 654 655dnl Function to detect if libcrypto SHA1 functions are available 656AC_DEFUN([AX_LIBCRYPTO_CHECK_SHA1], 657 [ac_cv_libcrypto_sha1=no 658 659 dnl Check for libcrypto (openssl) EVP MD support 660 AS_IF( 661 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_md" != xno && test "x$ac_cv_libcrypto_evp_md" != xyes], 662 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD]) 663 664 dnl Check for libcrypto (openssl) EVP SHA1 support 665 AS_IF( 666 [test "x$ac_cv_libcrypto_evp_md" = xyes], 667 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA1]) 668 669 dnl Check for libcrypto (openssl) SHA1 support 670 AS_IF( 671 [test "x$ac_cv_libcrypto_sha1" = xno], 672 [AX_LIBCRYPTO_CHECK_OPENSSL_SHA1]) 673 ]) 674 675dnl Function to detect if libcrypto SHA224 functions are available 676AC_DEFUN([AX_LIBCRYPTO_CHECK_SHA224], 677 [ac_cv_libcrypto_sha224=no 678 679 dnl Check for libcrypto (openssl) EVP MD support 680 AS_IF( 681 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_md" != xno && test "x$ac_cv_libcrypto_evp_md" != xyes], 682 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD]) 683 684 dnl Check for libcrypto (openssl) EVP SHA224 support 685 AS_IF( 686 [test "x$ac_cv_libcrypto_evp_md" = xyes], 687 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA224]) 688 689 dnl Check for libcrypto (openssl) SHA224 support 690 AS_IF( 691 [test "x$ac_cv_libcrypto_sha224" = xno], 692 [AX_LIBCRYPTO_CHECK_OPENSSL_SHA224]) 693 ]) 694 695dnl Function to detect if libcrypto SHA256 functions are available 696AC_DEFUN([AX_LIBCRYPTO_CHECK_SHA256], 697 [ac_cv_libcrypto_sha256=no 698 699 dnl Check for libcrypto (openssl) EVP MD support 700 AS_IF( 701 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_md" != xno && test "x$ac_cv_libcrypto_evp_md" != xyes], 702 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD]) 703 704 dnl Check for libcrypto (openssl) EVP SHA256 support 705 AS_IF( 706 [test "x$ac_cv_libcrypto_evp_md" = xyes], 707 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA256]) 708 709 dnl Check for libcrypto (openssl) SHA256 support 710 AS_IF( 711 [test "x$ac_cv_libcrypto_sha256" = xno], 712 [AX_LIBCRYPTO_CHECK_OPENSSL_SHA256]) 713 ]) 714 715dnl Function to detect if libcrypto SHA512 functions are available 716AC_DEFUN([AX_LIBCRYPTO_CHECK_SHA512], 717 [ac_cv_libcrypto_sha512=no 718 719 dnl Check for libcrypto (openssl) EVP MD support 720 AS_IF( 721 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_md" != xno && test "x$ac_cv_libcrypto_evp_md" != xyes], 722 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_MD]) 723 724 dnl Check for libcrypto (openssl) EVP SHA512 support 725 AS_IF( 726 [test "x$ac_cv_libcrypto_evp_md" = xyes], 727 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_SHA512]) 728 729 dnl Check for libcrypto (openssl) SHA512 support 730 AS_IF( 731 [test "x$ac_cv_libcrypto_sha512" = xno], 732 [AX_LIBCRYPTO_CHECK_OPENSSL_SHA512]) 733 ]) 734 735dnl Function to detect if libcrypto AES-CBC and AES-ECB functions are available 736AC_DEFUN([AX_LIBCRYPTO_CHECK_AES], 737 [dnl Check for libcrypto (openssl) EVP CIPHER AES-CBC and AES-ECB support 738 AX_LIBCRYPTO_CHECK_AES_CBC 739 AX_LIBCRYPTO_CHECK_AES_ECB 740 741 dnl ac_cv_libcrypto_aes is deprecated but kept for backwards compatibility 742 AS_IF( 743 [test "x$ac_cv_libcrypto_aes_cbc" = xno || test "x$ac_cv_libcrypto_aes_ecb" = xno], 744 [ac_cv_libcrypto_aes=no], 745 [ac_cv_libcrypto_aes=libcrypto_evp]) 746 747 dnl Check for libcrypto (openssl) AES-CBC and AES-ECB support 748 AS_IF( 749 [test "x$ac_cv_libcrypto_aes_cbc" = xno || test "x$ac_cv_libcrypto_aes_ecb" = xno], 750 [AX_LIBCRYPTO_CHECK_OPENSSL_AES]) 751 ]) 752 753dnl Function to detect if libcrypto AES-CBC functions are available 754AC_DEFUN([AX_LIBCRYPTO_CHECK_AES_CBC], 755 [AS_IF( 756 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_cipher" != xno && test "x$ac_cv_libcrypto_evp_cipher" != xyes], 757 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_CIPHER]) 758 759 AS_IF( 760 [test "x$ac_cv_libcrypto_evp_cipher" != xyes], 761 [ac_cv_libcrypto_aes_cbc=no], 762 [ac_cv_libcrypto_aes_cbc=libcrypto_evp 763 764 AC_CHECK_LIB( 765 crypto, 766 EVP_aes_128_cbc, 767 [ac_cv_libcrypto_dummy=yes], 768 [ac_cv_libcrypto_aes_cbc=no]) 769 AC_CHECK_LIB( 770 crypto, 771 EVP_aes_192_cbc, 772 [ac_cv_libcrypto_dummy=yes], 773 [ac_cv_libcrypto_aes_cbc=no]) 774 AC_CHECK_LIB( 775 crypto, 776 EVP_aes_256_cbc, 777 [ac_cv_libcrypto_dummy=yes], 778 [ac_cv_libcrypto_aes_cbc=no]) 779 780 AS_IF( 781 [test "x$ac_cv_lib_crypto_EVP_aes_128_cbc" = xyes && test "x$ac_cv_lib_crypto_EVP_aes_192_cbc" = xyes && test "x$ac_cv_lib_crypto_EVP_aes_256_cbc" = xyes], 782 [AC_DEFINE( 783 [HAVE_EVP_CRYPTO_AES_CBC], 784 [1], 785 [Define to 1 if you have the `EVP_aes_128_cbc', `EVP_aes_192_cbc' and `EVP_aes_256_cbc' functions".]) 786 ]) 787 ]) 788 ]) 789 790dnl Function to detect if libcrypto AES-ECB functions are available 791AC_DEFUN([AX_LIBCRYPTO_CHECK_AES_ECB], 792 [AS_IF( 793 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_cipher" != xno && test "x$ac_cv_libcrypto_evp_cipher" != xyes], 794 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_CIPHER]) 795 796 AS_IF( 797 [test "x$ac_cv_libcrypto_evp_cipher" != xyes], 798 [ac_cv_libcrypto_aes_ecb=no], 799 [ac_cv_libcrypto_aes_ecb=libcrypto_evp 800 801 AC_CHECK_LIB( 802 crypto, 803 EVP_aes_128_ecb, 804 [ac_cv_libcrypto_dummy=yes], 805 [ac_cv_libcrypto_aes_ecb=no]) 806 AC_CHECK_LIB( 807 crypto, 808 EVP_aes_192_ecb, 809 [ac_cv_libcrypto_dummy=yes], 810 [ac_cv_libcrypto_aes_ecb=no]) 811 AC_CHECK_LIB( 812 crypto, 813 EVP_aes_256_ecb, 814 [ac_cv_libcrypto_dummy=yes], 815 [ac_cv_libcrypto_aes_ecb=no]) 816 817 AS_IF( 818 [test "x$ac_cv_lib_crypto_EVP_aes_128_ecb" = xyes && test "x$ac_cv_lib_crypto_EVP_aes_192_ecb" = xyes && test "x$ac_cv_lib_crypto_EVP_aes_256_ecb" = xyes], 819 [AC_DEFINE( 820 [HAVE_EVP_CRYPTO_AES_ECB], 821 [1], 822 [Define to 1 if you have the `EVP_aes_128_ecb', `EVP_aes_192_ecb' and `EVP_aes_256_ecb' functions".]) 823 ]) 824 ]) 825 ]) 826 827dnl Function to detect if libcrypto AES-XTS functions are available 828AC_DEFUN([AX_LIBCRYPTO_CHECK_AES_XTS], 829 [AS_IF( 830 [test "x$ac_cv_libcrypto_evp" = xyes && test "x$ac_cv_enable_openssl_evp_cipher" != xno && test "x$ac_cv_libcrypto_evp_cipher" != xyes], 831 [AX_LIBCRYPTO_CHECK_OPENSSL_EVP_CIPHER]) 832 833 AS_IF( 834 [test "x$ac_cv_libcrypto_evp_cipher" != xyes], 835 [ac_cv_libcrypto_aes_xts=no], 836 [ac_cv_libcrypto_aes_xts=libcrypto_evp 837 838 AC_CHECK_LIB( 839 crypto, 840 EVP_aes_128_xts, 841 [ac_cv_libcrypto_dummy=yes], 842 [ac_cv_libcrypto_aes_xts=no]) 843 AC_CHECK_LIB( 844 crypto, 845 EVP_aes_256_xts, 846 [ac_cv_libcrypto_dummy=yes], 847 [ac_cv_libcrypto_aes_xts=no]) 848 849 dnl OpenSSL 1.1.1c will error with "xts duplicated keys". 850 AX_LIBCRYPTO_CHECK_XTS_DUPLICATE_KEYS_SUPPORT 851 AS_IF( 852 [test "x$ac_cv_openssl_xts_duplicate_keys" = xno], 853 [ac_cv_libcrypto_aes_xts=no], 854 [AS_IF( 855 [test "x$ac_cv_lib_crypto_EVP_aes_128_xts" = xyes && test "x$ac_cv_lib_crypto_EVP_aes_256_xts" = xyes], 856 [AC_DEFINE( 857 [HAVE_EVP_CRYPTO_AES_XTS], 858 [1], 859 [Define to 1 if you have the `EVP_aes_128_xts' and `EVP_aes_256_xts' functions".]) 860 ]) 861 ]) 862 ]) 863 ]) 864 865dnl Function to detect how to enable libcrypto (openssl) 866AC_DEFUN([AX_LIBCRYPTO_CHECK_ENABLE], 867 [AX_COMMON_ARG_WITH( 868 [openssl], 869 [openssl], 870 [search for OpenSSL in includedir and libdir or in the specified DIR, or no if not to use OpenSSL], 871 [auto-detect], 872 [DIR]) 873 874 AX_COMMON_ARG_ENABLE( 875 [openssl-evp-cipher], 876 [openssl_evp_cipher], 877 [enable OpenSSL EVP CIPHER support, or no to disable], 878 [auto-detect]) 879 880 AX_COMMON_ARG_ENABLE( 881 [openssl-evp-md], 882 [openssl_evp_md], 883 [enable OpenSSL EVP MD support, or no to disable], 884 [auto-detect]) 885 886 AS_IF( 887 [test "x$ac_cv_enable_static_executables" != xyes], 888 [dnl Check for a shared library version 889 AX_LIBCRYPTO_CHECK_LIB]) 890 891 AS_IF( 892 [test "x$ac_cv_libcrypto_CPPFLAGS" != "x"], 893 [AC_SUBST( 894 [LIBCRYPTO_CPPFLAGS], 895 [$ac_cv_libcrypto_CPPFLAGS]) 896 ]) 897 AS_IF( 898 [test "x$ac_cv_libcrypto_LIBADD" != "x"], 899 [AC_SUBST( 900 [LIBCRYPTO_LIBADD], 901 [$ac_cv_libcrypto_LIBADD]) 902 ]) 903 904 AS_IF( 905 [test "x$ac_cv_libcrypto" != xno], 906 [AC_SUBST( 907 [ax_libcrypto_pc_libs_private], 908 [-lcrypto]) 909 ]) 910 911 AS_IF( 912 [test "x$ac_cv_libcrypto" != xno], 913 [AC_SUBST( 914 [ax_libcrypto_spec_requires], 915 [openssl]) 916 AC_SUBST( 917 [ax_libcrypto_spec_build_requires], 918 [openssl-devel]) 919 ]) 920 ]) 921 922