mirror of
https://github.com/pocoproject/poco.git
synced 2025-05-02 15:41:36 +02:00
Set EVP private key on SSL context (#2259)
This commit is contained in:
parent
612f092235
commit
5fb10f6746
@ -21,6 +21,7 @@
|
|||||||
#include "Poco/Net/NetSSL.h"
|
#include "Poco/Net/NetSSL.h"
|
||||||
#include "Poco/Net/SocketDefs.h"
|
#include "Poco/Net/SocketDefs.h"
|
||||||
#include "Poco/Crypto/X509Certificate.h"
|
#include "Poco/Crypto/X509Certificate.h"
|
||||||
|
#include "Poco/Crypto/EVPPKey.h"
|
||||||
#include "Poco/Crypto/RSAKey.h"
|
#include "Poco/Crypto/RSAKey.h"
|
||||||
#include "Poco/RefCountedObject.h"
|
#include "Poco/RefCountedObject.h"
|
||||||
#include "Poco/AutoPtr.h"
|
#include "Poco/AutoPtr.h"
|
||||||
@ -236,6 +237,16 @@ public:
|
|||||||
/// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired
|
/// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired
|
||||||
/// event must be handled.
|
/// event must be handled.
|
||||||
|
|
||||||
|
void usePrivateKey(const Poco::Crypto::EVPPKey &pkey);
|
||||||
|
/// Sets the private key to be used by the Context.
|
||||||
|
///
|
||||||
|
/// Note that useCertificate() must always be called before
|
||||||
|
/// usePrivateKey().
|
||||||
|
///
|
||||||
|
/// Note: If the private key is protected by a passphrase, a PrivateKeyPassphraseHandler
|
||||||
|
/// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired
|
||||||
|
/// event must be handled.
|
||||||
|
|
||||||
SSL_CTX* sslContext() const;
|
SSL_CTX* sslContext() const;
|
||||||
/// Returns the underlying OpenSSL SSL Context object.
|
/// Returns the underlying OpenSSL SSL Context object.
|
||||||
|
|
||||||
|
@ -237,6 +237,17 @@ void Context::usePrivateKey(const Poco::Crypto::RSAKey& key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Context::usePrivateKey(const Poco::Crypto::EVPPKey& pkey)
|
||||||
|
{
|
||||||
|
int errCode = SSL_CTX_use_PrivateKey(_pSSLContext, const_cast<EVP_PKEY*>(static_cast<const EVP_PKEY*>(pkey)));
|
||||||
|
if (errCode != 1)
|
||||||
|
{
|
||||||
|
std::string msg = Utility::getLastError();
|
||||||
|
throw SSLContextException("Cannot set private key for Context", msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Context::enableSessionCache(bool flag)
|
void Context::enableSessionCache(bool flag)
|
||||||
{
|
{
|
||||||
if (flag)
|
if (flag)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user