mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-07-14 04:47:11 +02:00
Major plugin refactor and cleanup.
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
This commit is contained in:
144
vendor/POCO/Crypto/include/Poco/Crypto/KeyPair.h
vendored
Normal file
144
vendor/POCO/Crypto/include/Poco/Crypto/KeyPair.h
vendored
Normal file
@ -0,0 +1,144 @@
|
||||
//
|
||||
// KeyPair.h
|
||||
//
|
||||
// Library: Crypto
|
||||
// Package: CryptoCore
|
||||
// Module: KeyPair
|
||||
//
|
||||
// Definition of the KeyPair class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Crypto_KeyPair_INCLUDED
|
||||
#define Crypto_KeyPair_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Crypto/Crypto.h"
|
||||
#include "Poco/Crypto/KeyPairImpl.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Crypto {
|
||||
|
||||
|
||||
class X509Certificate;
|
||||
|
||||
|
||||
class Crypto_API KeyPair
|
||||
/// This is a parent class for classes storing a key pair, consisting
|
||||
/// of private and public key. Storage of the private key is optional.
|
||||
///
|
||||
/// If a private key is available, the KeyPair can be
|
||||
/// used for decrypting data (encrypted with the public key)
|
||||
/// or computing secure digital signatures.
|
||||
{
|
||||
public:
|
||||
enum Type
|
||||
{
|
||||
KT_RSA = KeyPairImpl::KT_RSA_IMPL,
|
||||
KT_EC = KeyPairImpl::KT_EC_IMPL
|
||||
};
|
||||
|
||||
explicit KeyPair(KeyPairImpl::Ptr pKeyPairImpl = 0);
|
||||
/// Extracts the RSA public key from the given certificate.
|
||||
|
||||
KeyPair(const KeyPair& other);
|
||||
/// Copy constructor.
|
||||
|
||||
KeyPair(KeyPair&& other) noexcept;
|
||||
/// Move constructor.
|
||||
|
||||
KeyPair& operator = (const KeyPair& other);
|
||||
/// Assignment.
|
||||
|
||||
KeyPair& operator = (KeyPair&& other) noexcept;
|
||||
/// Move assignment.
|
||||
|
||||
virtual ~KeyPair();
|
||||
/// Destroys the KeyPair.
|
||||
|
||||
virtual int size() const;
|
||||
/// Returns the RSA modulus size.
|
||||
|
||||
virtual void save(const std::string& publicKeyPairFile,
|
||||
const std::string& privateKeyPairFile = "",
|
||||
const std::string& privateKeyPairPassphrase = "") const;
|
||||
/// Exports the public and private keys to the given files.
|
||||
///
|
||||
/// If an empty filename is specified, the corresponding key
|
||||
/// is not exported.
|
||||
|
||||
virtual void save(std::ostream* pPublicKeyPairStream,
|
||||
std::ostream* pPrivateKeyPairStream = 0,
|
||||
const std::string& privateKeyPairPassphrase = "") const;
|
||||
/// Exports the public and private key to the given streams.
|
||||
///
|
||||
/// If a null pointer is passed for a stream, the corresponding
|
||||
/// key is not exported.
|
||||
|
||||
KeyPairImpl::Ptr impl() const;
|
||||
/// Returns the impl object.
|
||||
|
||||
const std::string& name() const;
|
||||
/// Returns key pair name
|
||||
|
||||
Type type() const;
|
||||
/// Returns key pair type
|
||||
|
||||
private:
|
||||
KeyPairImpl::Ptr _pImpl;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
inline int KeyPair::size() const
|
||||
{
|
||||
return _pImpl->size();
|
||||
}
|
||||
|
||||
|
||||
inline void KeyPair::save(const std::string& publicKeyFile,
|
||||
const std::string& privateKeyFile,
|
||||
const std::string& privateKeyPassphrase) const
|
||||
{
|
||||
_pImpl->save(publicKeyFile, privateKeyFile, privateKeyPassphrase);
|
||||
}
|
||||
|
||||
|
||||
inline void KeyPair::save(std::ostream* pPublicKeyStream,
|
||||
std::ostream* pPrivateKeyStream,
|
||||
const std::string& privateKeyPassphrase) const
|
||||
{
|
||||
_pImpl->save(pPublicKeyStream, pPrivateKeyStream, privateKeyPassphrase);
|
||||
}
|
||||
|
||||
|
||||
inline const std::string& KeyPair::name() const
|
||||
{
|
||||
return _pImpl->name();
|
||||
}
|
||||
|
||||
|
||||
inline KeyPairImpl::Ptr KeyPair::impl() const
|
||||
{
|
||||
return _pImpl;
|
||||
}
|
||||
|
||||
|
||||
inline KeyPair::Type KeyPair::type() const
|
||||
{
|
||||
return (KeyPair::Type)impl()->type();
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Crypto
|
||||
|
||||
|
||||
#endif // Crypto_KeyPair_INCLUDED
|
Reference in New Issue
Block a user