tmp_LIBS=$LIBS
ACX_WITH_SSL_OPTIONAL
-
+if test "x$HAVE_SSL" != "xyes"; then
+ AC_MSG_CHECKING([for LibreSSL])
+ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL])
+ else
+ AC_MSG_RESULT([no])
+ fi
+fi
AC_CHECK_FUNCS([EVP_sha256 ENGINE_load_cryptodev EVP_PKEY_keygen ECDSA_SIG_get0 EVP_MD_CTX_new EVP_PKEY_base_id])
# for macosx, see if glibtool exists and use that
"Syntax error, superfluous text present" },
{ LDNS_STATUS_NSEC3_DOMAINNAME_OVERFLOW,
"The NSEC3 domainname length overflow" },
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
{ LDNS_STATUS_DANE_NEED_OPENSSL_GE_1_1_FOR_DANE_TA,
"ldns needs to be linked with OpenSSL >= 1.1.0 to be able "
"to verify the DANE-TA usage type." },
}
}
-#if defined(USE_DANE_VERIFY) && OPENSSL_VERSION_NUMBER < 0x10100000
+#if defined(USE_DANE_VERIFY) && ( OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL )
static bool
dane_verify(ldns_rr_list* tlsas, ldns_rdf* address,
X509* cert, STACK_OF(X509)* extra_certs,
ldns_status s;
size_t i;
-#if OPENSSL_VERSION_NUMBER >= 0x10100000
+#if OPENSSL_VERSION_NUMBER >= 0x10100000 && ! defined(HAVE_LIBRESSL)
size_t j, usable_tlsas = 0;
X509_STORE_CTX *store_ctx = NULL;
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000 */
}
}
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
ctx = SSL_CTX_new(SSLv23_client_method());
#else
ctx = SSL_CTX_new(TLS_client_method());
verify_server_name, name);
break;
#ifdef USE_DANE_VERIFY
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
case VERIFY: if (! dane_verify(tlsas, NULL,
cert, extra_certs, store,
verify_server_name, name,
address = ldns_rr_a_address(
ldns_rr_list_rr(addresses, i));
assert(address != NULL);
-#if OPENSSL_VERSION_NUMBER >= 0x10100000
+#if OPENSSL_VERSION_NUMBER >= 0x10100000 && ! defined(HAVE_LIBRESSL)
if (mode == VERIFY) {
usable_tlsas = 0;
if (SSL_dane_enable(ssl, name_str) <= 0) {
continue;
}
LDNS_ERR(s, "could not get cert chain from ssl");
-#if OPENSSL_VERSION_NUMBER >= 0x10100000
+#if OPENSSL_VERSION_NUMBER >= 0x10100000 && ! defined(HAVE_LIBRESSL)
if (mode == VERIFY) {
char *address_str = ldns_rdf2str(address);
#ifdef USE_DANE_VERIFY
case VERIFY:
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
if (! dane_verify(tlsas, address,
cert, extra_certs, store,
verify_server_name, name,
const BIGNUM *n=NULL, *e=NULL, *d=NULL,
*p=NULL, *q=NULL, *dmp1=NULL,
*dmq1=NULL, *iqmp=NULL;
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
n = rsa->n;
e = rsa->e;
d = rsa->d;
if(1) {
const BIGNUM *p=NULL, *q=NULL, *g=NULL,
*priv_key=NULL, *pub_key=NULL;
-#if OPENSSL_VERSION_NUMBER < 0x10100000
+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL)
#ifndef S_SPLINT_S
p = dsa->p;
q = dsa->q;