mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-07-27 00:03:40 +08:00
Squashed 'OpenVPN Adapter/Vendors/openvpn/' changes from e6d68831a..35bbca799
35bbca799 Merged in OVPN3-184-generate-warning (pull request #1) a73d2ce68 Merged in antonio/OVPN3-169-pure-ssl-transport (pull request #3) 8d7f5f3c1 Merged in feature/docker (pull request #2) d9b5055cd [OVPN3-169] cli.cpp: compile with -DOPENVPN_TLS_LINK when requested 2d99bbfea [OVPN3-169] cliopt.hpp: add support for TLS transport module 62c8461d2 [OVPN3-169] tcpcli.hpp: add runtime support for TLSLink e0e76bb28 [OVPN3-169] tcplink: introduce LinkBase abstract class a71014d40 [OVPN3-169] tcplink: create LinkCommon class and inherit from it cfd6df5bc build system: fix 'git apply' 3e49de7de [OVPN3-210] ovpncli: handle "allow-name-constraints" for OpenSSL 08d72bd76 [OVPN3-184] mbedtls: handle Name Constraints 40c70113d [OVPN3-184] Add mbedTLS patch ef8d11f34 [OVPN3-169] OpenSSL: implement write_ciphertext_unbuffered() function 37dc86378 [OVPN3-169] mbedTLS: implement write_ciphertext_unbuffered() function 5834ed401 [OVPN3-169] SSLAPI: add write_ciphertext_unbuffered() function 071050b5f vars-linux-dbg: update linux debug profile 5bbfe68c3 [OVPN3-169] Protocol: add support for TLS transport protocol type dc12d3189 [OVPN3-223] build: add docker images git-subtree-dir: OpenVPN Adapter/Vendors/openvpn git-subtree-split: 35bbca799dfa3fbe8e17f8d6e94c3946c397b593
This commit is contained in:
@@ -54,6 +54,7 @@ namespace openvpn {
|
||||
PAUSE,
|
||||
RESUME,
|
||||
RELAY,
|
||||
UNSUPPORTED_FEATURE,
|
||||
|
||||
// start of nonfatal errors, must be marked by NONFATAL_ERROR_START below
|
||||
TRANSPORT_ERROR,
|
||||
@@ -105,6 +106,7 @@ namespace openvpn {
|
||||
"PAUSE",
|
||||
"RESUME",
|
||||
"RELAY",
|
||||
"UNSUPPORTED_FEATURE",
|
||||
|
||||
// nonfatal errors
|
||||
"TRANSPORT_ERROR",
|
||||
@@ -253,6 +255,28 @@ namespace openvpn {
|
||||
TLSVersionMinFail() : Base(TLS_VERSION_MIN) {}
|
||||
};
|
||||
|
||||
struct UnsupportedFeature : public Base
|
||||
{
|
||||
typedef RCPtr<UnsupportedFeature> Ptr;
|
||||
|
||||
UnsupportedFeature(const std::string& name_arg, const std::string& reason_arg, bool critical_arg)
|
||||
: Base(UNSUPPORTED_FEATURE),
|
||||
name(name_arg),
|
||||
reason(reason_arg),
|
||||
critical(critical_arg) {}
|
||||
|
||||
std::string name;
|
||||
std::string reason;
|
||||
bool critical;
|
||||
|
||||
virtual std::string render() const
|
||||
{
|
||||
std::ostringstream out;
|
||||
out << "name: " << name << ", reason: " << reason << ", critical: " << critical;
|
||||
return out.str();
|
||||
}
|
||||
};
|
||||
|
||||
struct Connected : public Base
|
||||
{
|
||||
typedef RCPtr<Connected> Ptr;
|
||||
|
||||
@@ -667,6 +667,9 @@ namespace openvpn {
|
||||
if (relay_mode)
|
||||
lflags |= SSLConfigAPI::LF_RELAY_MODE;
|
||||
|
||||
if (opt.exists("allow-name-constraints"))
|
||||
lflags |= SSLConfigAPI::LF_ALLOW_NAME_CONSTRAINTS;
|
||||
|
||||
// client SSL config
|
||||
SSLLib::SSLAPI::Config::Ptr cc(new SSLLib::SSLAPI::Config());
|
||||
cc->set_external_pki_callback(config.external_pki);
|
||||
@@ -730,7 +733,6 @@ namespace openvpn {
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
if (dco)
|
||||
{
|
||||
DCO::TransportConfig transconf;
|
||||
@@ -789,7 +791,11 @@ namespace openvpn {
|
||||
#endif
|
||||
transport_factory = udpconf;
|
||||
}
|
||||
else if (transport_protocol.is_tcp())
|
||||
else if (transport_protocol.is_tcp()
|
||||
#ifdef OPENVPN_TLS_LINK
|
||||
|| transport_protocol.is_tls()
|
||||
#endif
|
||||
)
|
||||
{
|
||||
// TCP transport
|
||||
TCPTransport::ClientConfig::Ptr tcpconf = TCPTransport::ClientConfig::new_obj();
|
||||
@@ -797,6 +803,10 @@ namespace openvpn {
|
||||
tcpconf->frame = frame;
|
||||
tcpconf->stats = cli_stats;
|
||||
tcpconf->socket_protect = socket_protect;
|
||||
#ifdef OPENVPN_TLS_LINK
|
||||
if (transport_protocol.is_tls())
|
||||
tcpconf->use_tls = true;
|
||||
#endif
|
||||
#ifdef OPENVPN_GREMLIN
|
||||
tcpconf->gremlin_config = gremlin_config;
|
||||
#endif
|
||||
|
||||
@@ -291,10 +291,15 @@ namespace openvpn {
|
||||
protoConfig->load(options, ProtoContextOptions(), -1, false);
|
||||
}
|
||||
|
||||
unsigned int lflags = SSLConfigAPI::LF_PARSE_MODE;
|
||||
|
||||
if (options.exists("allow-name-constraints"))
|
||||
lflags |= SSLConfigAPI::LF_ALLOW_NAME_CONSTRAINTS;
|
||||
|
||||
// ssl lib configuration
|
||||
try {
|
||||
sslConfig.reset(new SSLLib::SSLAPI::Config());
|
||||
sslConfig->load(options, SSLConfigAPI::LF_PARSE_MODE);
|
||||
sslConfig->load(options, lflags);
|
||||
} catch (...) {
|
||||
sslConfig.reset();
|
||||
}
|
||||
|
||||
@@ -791,10 +791,16 @@ namespace openvpn {
|
||||
uint32_t tls_warnings = get_tls_warnings();
|
||||
|
||||
if (tls_warnings & SSLAPI::TLS_WARN_SIG_MD5)
|
||||
{
|
||||
ClientEvent::Base::Ptr ev = new ClientEvent::Warn("TLS: received certificate signed with MD5. Please inform your admin to upgrade to a stronger algorithm. Support for MD5 will be dropped at end of Apr 2018");
|
||||
cli_events->add_event(std::move(ev));
|
||||
}
|
||||
{
|
||||
ClientEvent::Base::Ptr ev = new ClientEvent::Warn("TLS: received certificate signed with MD5. Please inform your admin to upgrade to a stronger algorithm. Support for MD5 will be dropped at end of Apr 2018");
|
||||
cli_events->add_event(std::move(ev));
|
||||
}
|
||||
|
||||
if (tls_warnings & SSLAPI::TLS_WARN_NAME_CONSTRAINTS)
|
||||
{
|
||||
ClientEvent::Base::Ptr ev = new ClientEvent::Warn("TLS: Your CA contains a 'x509v3 Name Constraints' extension, but its validation is not supported. This might be a security breach, please contact your administrator.");
|
||||
cli_events->add_event(std::move(ev));
|
||||
}
|
||||
}
|
||||
|
||||
// base class calls here when primary session transitions to ACTIVE state
|
||||
|
||||
Reference in New Issue
Block a user