diff options
author | Jonas Smedegaard <dr@jones.dk> | 2017-06-24 09:21:31 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2017-06-24 09:21:31 +0200 |
commit | c21cbbf9667991d2b928562a9c199e625d3f9bba (patch) | |
tree | ffd5e6895a578102ed9055fbb02a88031154ae0b /src/network/tls_policy.cpp | |
parent | de62b6456bebd130f98ce6192cd63ff42e654fac (diff) | |
parent | 23a3372144215c9ba7a30d599164677284813fa4 (diff) | |
download | biboumi-c21cbbf9667991d2b928562a9c199e625d3f9bba.tar.gz biboumi-c21cbbf9667991d2b928562a9c199e625d3f9bba.tar.bz2 biboumi-c21cbbf9667991d2b928562a9c199e625d3f9bba.tar.xz biboumi-c21cbbf9667991d2b928562a9c199e625d3f9bba.zip |
New upstream version 5.0
Diffstat (limited to 'src/network/tls_policy.cpp')
-rw-r--r-- | src/network/tls_policy.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/network/tls_policy.cpp b/src/network/tls_policy.cpp new file mode 100644 index 0000000..5439397 --- /dev/null +++ b/src/network/tls_policy.cpp @@ -0,0 +1,48 @@ +#include "biboumi.h" + +#ifdef BOTAN_FOUND + +#include <fstream> + +#include <utils/tolower.hpp> + +#include <network/tls_policy.hpp> +#include <logger/logger.hpp> + +bool BiboumiTLSPolicy::load(const std::string& filename) +{ + std::ifstream is(filename.data()); + if (is) + { + try { + this->load(is); + log_info("Successfully loaded policy file: ", filename); + return true; + } catch (const Botan::Exception& e) { + log_error("Failed to parse policy_file ", filename, ": ", e.what()); + return false; + } + } + log_info("Could not open policy file: ", filename); + return false; +} + +void BiboumiTLSPolicy::load(std::istream& is) +{ + const auto dict = Botan::read_cfg(is); + for (const auto& pair: dict) + { + // Workaround for options that are not overridden in Botan::TLS::Text_Policy + if (pair.first == "require_cert_revocation_info") + this->req_cert_revocation_info = !(pair.second == "0" || utils::tolower(pair.second) == "false"); + else + this->set(pair.first, pair.second); + } +} + +bool BiboumiTLSPolicy::require_cert_revocation_info() const +{ + return this->req_cert_revocation_info; +} + +#endif |