18#include <openssl/opensslv.h> 
   20using namespace boost::asio;
 
   21using namespace boost::asio::ssl;
 
   22using namespace boost::system;
 
   30TlsContext::TlsContext(
TlsRole role)
 
   32      context_(context::method::tls)
 
   35    setCertRequired(
true);
 
   38boost::asio::ssl::context&
 
   39TlsContext::getContext() {
 
   44TlsContext::getNativeContext() {
 
   45    return (context_.native_handle());
 
   49TlsContext::setCertRequired(
bool cert_required) {
 
   50    if (!cert_required && (getRole() == TlsRole::CLIENT)) {
 
   52                  "'cert-required' parameter must be true for a TLS client");
 
   54    cert_required_ = cert_required;
 
   56    int mode = verify_peer | verify_fail_if_no_peer_cert;
 
   57    if (!cert_required_) {
 
   60    context_.set_verify_mode(mode, ec);
 
   67TlsContext::getCertRequired()
 const {
 
   68    return (cert_required_);
 
   72TlsContext::loadCaFile(
const std::string& ca_file) {
 
   74    context_.load_verify_file(ca_file, ec);
 
   81TlsContext::loadCaPath(
const std::string& ca_path) {
 
   83    context_.add_verify_path(ca_path, ec);
 
   90TlsContext::loadCertFile(
const std::string& cert_file) {
 
   92    context_.use_certificate_chain_file(cert_file, ec);
 
   99TlsContext::loadKeyFile(
const std::string& key_file) {
 
  101    context_.use_private_key_file(key_file, context::file_format::pem, ec);
 
  108TlsContext::getErrMsg(error_code ec) {
 
  109    std::string msg = ec.message();
 
  110#ifdef ERR_SYSTEM_ERROR 
  117    unsigned long err = 
static_cast<unsigned long>(ec.value());
 
  118    if ((msg == 
"asio.ssl error") && (ERR_SYSTEM_ERROR(err))) {
 
  121        if (strerror_r(err & ERR_SYSTEM_MASK, &buf[0], 
sizeof(buf)) == 0) {
 
  125        msg = strerror_r(err & ERR_SYSTEM_MASK, &buf[0], 
sizeof(buf));
 
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
This exception is raised when a general error that was not specifically caught is thrown by the under...
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
TlsRole
Client and server roles.
Defines the logger used by the top-level component of kea-lfc.