diff options
Diffstat (limited to 'cpp/src/IceSSL/SecureTransportPluginI.cpp')
-rw-r--r-- | cpp/src/IceSSL/SecureTransportPluginI.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/cpp/src/IceSSL/SecureTransportPluginI.cpp b/cpp/src/IceSSL/SecureTransportPluginI.cpp new file mode 100644 index 00000000000..3d11563b521 --- /dev/null +++ b/cpp/src/IceSSL/SecureTransportPluginI.cpp @@ -0,0 +1,94 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#include <IceSSL/PluginI.h> +#include <IceSSL/SecureTransport.h> +#include <IceSSL/SecureTransportEngine.h> + +#include <Ice/Initialize.h> + +using namespace Ice; +using namespace std; + +namespace +{ + +class PluginI : public IceSSL::PluginI +{ +public: + + PluginI(const Ice::CommunicatorPtr&); + + virtual string getEngineName() const; + virtual Ice::Long getEngineVersion() const; + virtual IceSSL::CertificatePtr create(SecCertificateRef) const; + virtual IceSSL::CertificatePtr load(const std::string&) const; + virtual IceSSL::CertificatePtr decode(const std::string&) const; +}; + +} // anonymous namespace end + +// +// Plugin implementation. +// +PluginI::PluginI(const Ice::CommunicatorPtr& com) : + IceSSL::PluginI(com, new IceSSL::SecureTransport::SSLEngine(com)) +{ +} + +string +PluginI::getEngineName() const +{ + return "SecureTransport"; +} + +Ice::Long +PluginI::getEngineVersion() const +{ + return 0; +} + +IceSSL::CertificatePtr +PluginI::create(SecCertificateRef cert) const +{ + return IceSSL::SecureTransport::Certificate::create(cert); +} + +IceSSL::CertificatePtr +PluginI::load(const std::string& file) const +{ + return IceSSL::SecureTransport::Certificate::load(file); +} + +IceSSL::CertificatePtr +PluginI::decode(const std::string& encoding) const +{ + return IceSSL::SecureTransport::Certificate::load(encoding); +} + +// +// Plug-in factory function. +// +extern "C" ICESSL_API Ice::Plugin* +createIceSSL(const Ice::CommunicatorPtr& communicator, const string& /*name*/, const Ice::StringSeq& /*args*/) +{ + return new PluginI(communicator); +} + +IceSSL::CertificatePtr +IceSSL::Certificate::load(const std::string& file) +{ + return IceSSL::SecureTransport::Certificate::load(file); +} + +IceSSL::CertificatePtr +IceSSL::Certificate::decode(const std::string& encoding) +{ + return IceSSL::SecureTransport::Certificate::decode(encoding); +} |