123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- //
- // RSAKey.h
- //
- // Library: Crypto
- // Package: RSA
- // Module: RSAKey
- //
- // Definition of the RSAKey class.
- //
- // Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #ifndef Crypto_RSAKey_INCLUDED
- #define Crypto_RSAKey_INCLUDED
- #include "Poco/Crypto/Crypto.h"
- #include "Poco/Crypto/KeyPair.h"
- #include "Poco/Crypto/RSAKeyImpl.h"
- namespace Poco {
- namespace Crypto {
- class X509Certificate;
- class PKCS12Container;
- class Crypto_API RSAKey : public KeyPair
- /// This class stores an RSA key pair, consisting
- /// of private and public key. Storage of the private
- /// key is optional.
- ///
- /// If a private key is available, the RSAKey can be
- /// used for decrypting data (encrypted with the public key)
- /// or computing secure digital signatures.
- {
- public:
- enum KeyLength
- {
- KL_512 = 512,
- KL_1024 = 1024,
- KL_2048 = 2048,
- KL_4096 = 4096
- };
- enum Exponent
- {
- EXP_SMALL = 0,
- EXP_LARGE
- };
- RSAKey(const EVPPKey& key);
- /// Constructs ECKeyImpl by extracting the EC key.
- RSAKey(const X509Certificate& cert);
- /// Extracts the RSA public key from the given certificate.
- RSAKey(const PKCS12Container& cert);
- /// Extracts the RSA private key from the given certificate.
- RSAKey(KeyLength keyLength, Exponent exp);
- /// Creates the RSAKey. Creates a new public/private keypair using the given parameters.
- /// Can be used to sign data and verify signatures.
- RSAKey(const std::string& publicKeyFile,
- const std::string& privateKeyFile = "",
- const std::string& privateKeyPassphrase = "");
- /// Creates the RSAKey, by reading public and private key from the given files and
- /// using the given passphrase for the private key.
- ///
- /// Cannot be used for signing or decryption unless a private key is available.
- ///
- /// If a private key is specified, you don't need to specify a public key file.
- /// OpenSSL will auto-create the public key from the private key.
- RSAKey(std::istream* pPublicKeyStream,
- std::istream* pPrivateKeyStream = 0,
- const std::string& privateKeyPassphrase = "");
- /// Creates the RSAKey, by reading public and private key from the given streams and
- /// using the given passphrase for the private key.
- ///
- /// Cannot be used for signing or decryption unless a private key is available.
- ///
- /// If a private key is specified, you don't need to specify a public key file.
- /// OpenSSL will auto-create the public key from the private key.
- ~RSAKey();
- /// Destroys the RSAKey.
- RSAKeyImpl::ByteVec modulus() const;
- /// Returns the RSA modulus.
- RSAKeyImpl::ByteVec encryptionExponent() const;
- /// Returns the RSA encryption exponent.
- RSAKeyImpl::ByteVec decryptionExponent() const;
- /// Returns the RSA decryption exponent.
- RSAKeyImpl::Ptr impl() const;
- /// Returns the impl object.
-
- private:
- RSAKeyImpl::Ptr _pImpl;
- };
- //
- // inlines
- //
- inline RSAKeyImpl::Ptr RSAKey::impl() const
- {
- return _pImpl;
- }
- } } // namespace Poco::Crypto
- #endif // Crypto_RSAKey_INCLUDED
|