diff options
author | peterbell10 <peterbell10@live.co.uk> | 2017-08-30 16:00:06 +0200 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@outlook.com> | 2017-08-30 16:00:06 +0200 |
commit | 84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7 (patch) | |
tree | aa1648c2ba260b8576673677435481d371eec7b0 /src/OSSupport | |
parent | Update core plugins to latest version (#3951) (diff) | |
download | cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar.gz cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar.bz2 cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar.lz cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar.xz cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.tar.zst cuberite-84941bcc9f25cbe3fd3b2604080d0a1cfd8fbaa7.zip |
Diffstat (limited to 'src/OSSupport')
-rw-r--r-- | src/OSSupport/TCPLinkImpl.cpp | 37 | ||||
-rw-r--r-- | src/OSSupport/TCPLinkImpl.h | 2 |
2 files changed, 23 insertions, 16 deletions
diff --git a/src/OSSupport/TCPLinkImpl.cpp b/src/OSSupport/TCPLinkImpl.cpp index 06eff9b09..4aba89e5c 100644 --- a/src/OSSupport/TCPLinkImpl.cpp +++ b/src/OSSupport/TCPLinkImpl.cpp @@ -1,10 +1,11 @@ - + // TCPLinkImpl.cpp // Implements the cTCPLinkImpl class implementing the TCP link functionality #include "Globals.h" #include "TCPLinkImpl.h" +#include "mbedTLS++/SslConfig.h" #include "NetworkSingleton.h" #include "ServerHandleImpl.h" #include "event2/buffer.h" @@ -245,26 +246,29 @@ AString cTCPLinkImpl::StartTLSClient( { return "TLS is already active on this link"; } - if ( - ((a_OwnCert == nullptr) && (a_OwnPrivKey != nullptr)) || - ((a_OwnCert != nullptr) && (a_OwnPrivKey != nullptr)) - ) + if ((a_OwnCert == nullptr) != (a_OwnPrivKey == nullptr)) { return "Either provide both the certificate and private key, or neither"; } // Create the TLS context: - m_TlsContext.reset(new cLinkTlsContext(*this)); - m_TlsContext->Initialize(true); + m_TlsContext = std::make_shared<cLinkTlsContext>(*this); if (a_OwnCert != nullptr) { - m_TlsContext->SetOwnCert(a_OwnCert, a_OwnPrivKey); + auto Config = cSslConfig::MakeDefaultConfig(true); + Config->SetOwnCert(std::move(a_OwnCert), std::move(a_OwnPrivKey)); + m_TlsContext->Initialize(Config); + } + else + { + m_TlsContext->Initialize(true); } + m_TlsContext->SetSelf(cLinkTlsContextWPtr(m_TlsContext)); // Start the handshake: m_TlsContext->Handshake(); - return ""; + return {}; } @@ -282,15 +286,18 @@ AString cTCPLinkImpl::StartTLSServer( { return "TLS is already active on this link"; } - if ((a_OwnCert == nullptr) || (a_OwnPrivKey == nullptr)) + if ((a_OwnCert == nullptr) || (a_OwnPrivKey == nullptr)) { return "Provide the server certificate and private key"; } // Create the TLS context: - m_TlsContext.reset(new cLinkTlsContext(*this)); - m_TlsContext->Initialize(false); - m_TlsContext->SetOwnCert(a_OwnCert, a_OwnPrivKey); + m_TlsContext = std::make_shared<cLinkTlsContext>(*this); + { + auto Config = cSslConfig::MakeDefaultConfig(false); + Config->SetOwnCert(a_OwnCert, a_OwnPrivKey); + m_TlsContext->Initialize(std::move(Config)); + } m_TlsContext->SetSelf(cLinkTlsContextWPtr(m_TlsContext)); // Push the initial data: @@ -298,7 +305,7 @@ AString cTCPLinkImpl::StartTLSServer( // Start the handshake: m_TlsContext->Handshake(); - return ""; + return {}; } @@ -659,7 +666,7 @@ int cTCPLinkImpl::cLinkTlsContext::ReceiveEncrypted(unsigned char * a_Buffer, si // If there's nothing queued in the buffer, report empty buffer: if (m_EncryptedData.empty()) { - return POLARSSL_ERR_NET_WANT_READ; + return MBEDTLS_ERR_SSL_WANT_READ; } // Copy as much data as possible to the provided buffer: diff --git a/src/OSSupport/TCPLinkImpl.h b/src/OSSupport/TCPLinkImpl.h index 0437353fb..0bd19b127 100644 --- a/src/OSSupport/TCPLinkImpl.h +++ b/src/OSSupport/TCPLinkImpl.h @@ -14,7 +14,7 @@ #include "Network.h" #include <event2/event.h> #include <event2/bufferevent.h> -#include "../PolarSSL++/SslContext.h" +#include "../mbedTLS++/SslContext.h" |