diff --git a/include/Swiften/StreamStack/TLSServerLayer.h b/include/Swiften/StreamStack/TLSServerLayer.h new file mode 100644 index 0000000000000000000000000000000000000000..a3614f2da9282b6ffd06fa795d4c92793b413117 --- /dev/null +++ b/include/Swiften/StreamStack/TLSServerLayer.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiften/Base/boost_bsignals.h" + +#include "Swiften/Base/SafeByteArray.h" +#include "Swiften/StreamStack/StreamLayer.h" +#include "Swiften/TLS/Certificate.h" +#include "Swiften/TLS/CertificateVerificationError.h" + +namespace Swift { + class TLSServerContext; + class TLSServerContextFactory; + class PKCS12Certificate; + + class TLSServerLayer : public StreamLayer { + public: + TLSServerLayer(TLSServerContextFactory*); + ~TLSServerLayer(); + + void connect(); + bool setServerCertificate(const PKCS12Certificate&); + + Certificate::ref getPeerCertificate() const; + boost::shared_ptr getPeerCertificateVerificationError() const; + + void writeData(const SafeByteArray& data); + void handleDataRead(const SafeByteArray& data); + + TLSServerContext* getContext() const { + return context; + } + + public: + boost::signal onError; + boost::signal onConnected; + + private: + TLSServerContext* context; + }; +}