summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2018-08-27 08:56:49 +0000
committerHåvard Pettersen <havardpe@oath.com>2018-08-27 12:01:22 +0000
commitba1100ee847c6085a85cda1f264e7b699d85c407 (patch)
treefb07b3df5d5214ac324d14f74e7a841f112b4bfb /vespalib
parent627e9f07b4ddbf25eb69946fed3131af15cc3996 (diff)
integrate Crypto{Engine,Socket} into fnet
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.cpp19
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.h5
2 files changed, 24 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
index 78499d6d18e..ec436a414cc 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
@@ -155,10 +155,29 @@ public:
}
};
+CryptoEngine::SP create_default_crypto_engine() {
+ // TODO: check VESPA_TLS_CONFIG_FILE here
+ // return std::make_shared<XorCryptoEngine>();
+ return std::make_shared<NullCryptoEngine>();
}
+} // namespace vespalib::<unnamed>
+
+std::mutex CryptoEngine::_shared_lock;
+CryptoEngine::SP CryptoEngine::_shared_default(nullptr);
+
CryptoEngine::~CryptoEngine() = default;
+CryptoEngine::SP
+CryptoEngine::get_default()
+{
+ std::lock_guard<std::mutex> guard(_shared_lock);
+ if (!_shared_default) {
+ _shared_default = create_default_crypto_engine();
+ }
+ return _shared_default;
+}
+
CryptoSocket::UP
NullCryptoEngine::create_crypto_socket(SocketHandle socket, bool)
{
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.h b/vespalib/src/vespa/vespalib/net/crypto_engine.h
index 0f491838a6a..177766fb789 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.h
@@ -5,6 +5,7 @@
#include "socket_handle.h"
#include "crypto_socket.h"
#include <memory>
+#include <mutex>
namespace vespalib {
@@ -18,6 +19,10 @@ struct CryptoEngine {
using SP = std::shared_ptr<CryptoEngine>;
virtual CryptoSocket::UP create_crypto_socket(SocketHandle socket, bool is_server) = 0;
virtual ~CryptoEngine();
+ static CryptoEngine::SP get_default();
+private:
+ static std::mutex _shared_lock;
+ static CryptoEngine::SP _shared_default;
};
/**