versions). The Boost system library must also be installed.
Installing a header-only version of Boost is no longer recommended.
-- OpenSSL (at least version 1.0.1) or Botan (at least version 2).
- Note that OpenSSL version 1.0.2 or 1.1.0 or later is strongly recommended.
+- OpenSSL (at least version 1.0.2) or Botan (at least version 2).
+ Note that OpenSSL version 1.1.1 or later is strongly recommended.
- log4cplus (at least version 1.0.3) development include headers.
if test "${use_openssl}" = "/usr" ; then
CRYPTO_CFLAGS=""
CRYPTO_INCLUDES=""
- CRYPTO_LIBS="-lcrypto"
+ CRYPTO_LIBS="-lssl -lcrypto"
DISTCHECK_CRYPTO_CONFIGURE_FLAG="--with-openssl"
else
CRYPTO_CFLAGS=""
DISTCHECK_CRYPTO_CONFIGURE_FLAG="--with-openssl=${use_openssl}"
case $host in
*-solaris*)
- CRYPTO_LIBS="-L${use_openssl}/lib -R${use_openssl}/lib -lcrypto"
+ CRYPTO_LIBS="-L${use_openssl}/lib -R${use_openssl}/lib -lssl -lcrypto"
;;
*-hp-hpux*)
- CRYPTO_LIBS="-L${use_openssl}/lib -Wl,+b: -lcrypto"
+ CRYPTO_LIBS="-L${use_openssl}/lib -Wl,+b: -lssl -lcrypto"
;;
*-apple-darwin*)
if test -f "${use_openssl}/lib/libcrypto.dylib" ; then
- CRYPTO_LIBS="-L${use_openssl}/lib -lcrypto"
+ CRYPTO_LIBS="-L${use_openssl}/lib -lssl -lcrypto"
else
- CRYPTO_LIBS="${use_openssl}/lib/libcrypto.a"
+ CRYPTO_LIBS="${use_openssl}/lib/libssl.a ${use_openssl}/lib/libcrypto.a"
fi
;;
*)
- CRYPTO_LIBS="-L${use_openssl}/lib -lcrypto"
+ CRYPTO_LIBS="-L${use_openssl}/lib -lssl -lcrypto"
;;
esac
fi
])],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([HMAC functions return void: please use OpenSSL version 1.0.1 or later])])
+ dnl Check boost ASIO SSL
+ AC_CHECK_HEADERS([boost/asio/ssl.hpp],,
+ [AC_MSG_ERROR([Missing required boost ssl header file])])
LIBS=${LIBS_SAVED}
CPPFLAGS=${CPPFLAGS_SAVED}
fi
SUBDIRS = . testutils tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
-AM_CPPFLAGS += $(BOOST_INCLUDES)
+AM_CPPFLAGS += $(BOOST_INCLUDES) $(CRYPTO_CFLAGS) $(CRYPTO_INCLUDES)
AM_CXXFLAGS = $(KEA_CXXFLAGS) -Wno-non-virtual-dtor
lib_LTLIBRARIES = libkea-asiolink.la
libkea_asiolink_la_LDFLAGS = -no-undefined -version-info 23:0:0
+libkea_asiolink_la_LDFLAGS += $(CRYPTO_LDFLAGS)
libkea_asiolink_la_SOURCES = asiolink.h
libkea_asiolink_la_SOURCES += asio_wrapper.h
libkea_asiolink_la_SOURCES += addr_utilities.cc addr_utilities.h
+libkea_asiolink_la_SOURCES += crypto_tls.h
libkea_asiolink_la_SOURCES += dummy_io_cb.h
libkea_asiolink_la_SOURCES += interval_timer.cc interval_timer.h
libkea_asiolink_la_SOURCES += io_acceptor.h
libkea_asiolink_la_SOURCES += tcp_acceptor.h
libkea_asiolink_la_SOURCES += tcp_endpoint.h
libkea_asiolink_la_SOURCES += tcp_socket.h
+libkea_asiolink_la_SOURCES += tls_acceptor.h
+libkea_asiolink_la_SOURCES += tls_socket.h
libkea_asiolink_la_SOURCES += udp_endpoint.h
libkea_asiolink_la_SOURCES += udp_socket.h
libkea_asiolink_la_SOURCES += unix_domain_socket.cc unix_domain_socket.h
libkea_asiolink_la_SOURCES += unix_domain_socket_acceptor.h
libkea_asiolink_la_SOURCES += unix_domain_socket_endpoint.h
+if HAVE_BOTAN
+#libkea_asiolink_la_SOURCES += botan_tls.cc botan_tls.h
+endif
+if HAVE_OPENSSL
+libkea_asiolink_la_SOURCES += openssl_tls.cc openssl_tls.h
+endif
+
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# KEA_CXXFLAGS)
libkea_asiolink_la_CXXFLAGS = $(AM_CXXFLAGS)
libkea_asiolink_la_CPPFLAGS = $(AM_CPPFLAGS)
libkea_asiolink_la_LIBADD = $(top_builddir)/src/lib/exceptions/libkea-exceptions.la
-libkea_asiolink_la_LIBADD += $(BOOST_LIBS)
+libkea_asiolink_la_LIBADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
# Specify the headers for copying into the installation directory tree.
libkea_asiolink_includedir = $(pkgincludedir)/asiolink
addr_utilities.h \
asio_wrapper.h \
asiolink.h \
+ crypto_tls.h \
dummy_io_cb.h \
interval_timer.h \
io_acceptor.h \
tcp_acceptor.h \
tcp_endpoint.h \
tcp_socket.h \
+ tls_acceptor.h \
+ tls_socket.h \
udp_endpoint.h \
udp_socket.h \
unix_domain_socket.h \
unix_domain_socket_acceptor.h \
unix_domain_socket_endpoint.h
+
+if HAVE_BOTAN
+libkea_asiolink_include_HEADERS += botan_tls.h
+endif
+
+if HAVE_OPENSSL
+libkea_asiolink_include_HEADERS += openssl_tls.h
+endif
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
-AM_CPPFLAGS += $(BOOST_INCLUDES)
-AM_CPPFLAGS += -DTEST_DATA_DIR=\"$(srcdir)/testdata\"
-AM_CPPFLAGS += -DTEST_DATA_BUILDDIR=\"$(abs_top_builddir)/src/lib/asiolink/tests\"
+AM_CPPFLAGS += $(BOOST_INCLUDES) $(CRYPTO_CFLAGS) $(CRYPTO_INCLUDES)
AM_CPPFLAGS += -DTEST_SCRIPT_SH=\"$(abs_top_builddir)/src/lib/asiolink/tests/process_spawn_app.sh\"
+TEST_CA_DIR = $(abs_srcdir)/../testutils/ca
+AM_CPPFLAGS += -DTEST_CA_DIR=\"$(TEST_CA_DIR)\"
AM_CXXFLAGS = $(KEA_CXXFLAGS)
run_unittests_SOURCES += io_service_signal_unittests.cc
run_unittests_SOURCES += dummy_io_callback_unittest.cc
run_unittests_SOURCES += tcp_acceptor_unittest.cc
-run_unittests_SOURCES += process_spawn_unittest.cc
run_unittests_SOURCES += unix_domain_socket_unittest.cc
+run_unittests_SOURCES += process_spawn_unittest.cc
+run_unittests_SOURCES += tls_unittest.cc
+run_unittests_SOURCES += tls_acceptor_unittest.cc
+run_unittests_SOURCES += tls_socket_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/libkea-util.la
run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libkea-exceptions.la
-run_unittests_LDADD += $(LOG4CPLUS_LIBS) $(BOOST_LIBS) $(GTEST_LDADD)
+run_unittests_LDADD += $(LOG4CPLUS_LIBS) $(BOOST_LIBS) $(CRYPTO_LIBS)
+run_unittests_LDADD += $(GTEST_LDADD)
-run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
+run_unittests_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS) $(GTEST_LDFLAGS)
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# KEA_CXXFLAGS)
SUBDIRS = .
AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/src/lib
-AM_CPPFLAGS += $(BOOST_INCLUDES)
+AM_CPPFLAGS += $(BOOST_INCLUDES) $(CRYPTO_CFLAGS) $(CRYPTO_INCLUDES)
+TEST_CA_DIR = $(abs_srcdir)/ca
+AM_CPPFLAGS += -DTEST_CA_DIR=\"$(TEST_CA_DIR)\"
AM_CXXFLAGS = $(KEA_CXXFLAGS)
+EXTRA_DIST =
+EXTRA_DIST += ca/0c7eedb9.0
+EXTRA_DIST += ca/26d052a5.0
+EXTRA_DIST += ca/3071e5ff.0
+EXTRA_DIST += ca/a465d731.0
+EXTRA_DIST += ca/ad950210.0
+EXTRA_DIST += ca/d3d11a5f.0
+EXTRA_DIST += ca/doc
+EXTRA_DIST += ca/ext-addr-conf.cnf
+EXTRA_DIST += ca/ext-conf.cnf
+EXTRA_DIST += ca/kea-ca.crt
+EXTRA_DIST += ca/kea-ca.key
+EXTRA_DIST += ca/kea-client.crt
+EXTRA_DIST += ca/kea-client.csr
+EXTRA_DIST += ca/kea-client.key
+EXTRA_DIST += ca/kea-client.p12
+EXTRA_DIST += ca/kea-other.crt
+EXTRA_DIST += ca/kea-other.key
+EXTRA_DIST += ca/kea-self.crt
+EXTRA_DIST += ca/kea-self.key
+EXTRA_DIST += ca/kea-server-addr.crt
+EXTRA_DIST += ca/kea-server-addr.csr
+EXTRA_DIST += ca/kea-server.crt
+EXTRA_DIST += ca/kea-server.csr
+EXTRA_DIST += ca/kea-server.key
+EXTRA_DIST += ca/server-addr-conf.cnf
+EXTRA_DIST += ca/server-conf.cnf
+
CLEANFILES = *.gcno *.gcda
if HAVE_GTEST
libasiolinktest_la_SOURCES = test_server_unix_socket.cc test_server_unix_socket.h
libasiolinktest_la_SOURCES += timed_signal.cc timed_signal.h
+libasiolinktest_la_SOURCES += test_tls.cc test_tls.h
libasiolinktest_la_CXXFLAGS = $(AM_CXXFLAGS)
libasiolinktest_la_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
-libasiolinktest_la_LDFLAGS = $(AM_LDFLAGS)
+libasiolinktest_la_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS)
libasiolinktest_la_LIBADD = $(top_builddir)/src/lib/asiolink/libkea-asiolink.la
libasiolinktest_la_LIBADD += $(top_builddir)/src/lib/exceptions/libkea-exceptions.la
-libasiolinktest_la_LIBADD += $(BOOST_LIBS)
+libasiolinktest_la_LIBADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
+
+if HAVE_OPENSSL
+# Boost ASIO SSL sample server and client for C++11.
+# https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio/example/cpp11/ssl/
+# openssl_sample_server <port>
+# openssl_sample_server <name-or-address> <port>
+
+noinst_PROGRAMS = openssl_sample_client openssl_sample_server
+
+openssl_sample_client_SOURCES = openssl_sample_client.cpp
+openssl_sample_client_CPPFLAGS = $(AM_CPPFLAGS)
+openssl_sample_client_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS)
+openssl_sample_client_LDADD = $(CRYPTO_LIBS)
+
+openssl_sample_server_SOURCES = openssl_sample_server.cpp
+openssl_sample_server_CPPFLAGS = $(AM_CPPFLAGS)
+openssl_sample_server_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS)
+openssl_sample_server_LDADD = $(CRYPTO_LIBS)
+endif
endif
+
+
+
+