1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // RSACipherImpl.h
- //
- // Library: Crypto
- // Package: RSA
- // Module: RSACipherImpl
- //
- // Definition of the RSACipherImpl class.
- //
- // Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #ifndef Crypto_RSACipherImpl_INCLUDED
- #define Crypto_RSACipherImpl_INCLUDED
- #include "Poco/Crypto/Crypto.h"
- #include "Poco/Crypto/Cipher.h"
- #include "Poco/Crypto/RSAKey.h"
- #include "Poco/Crypto/OpenSSLInitializer.h"
- #include <openssl/evp.h>
- namespace Poco {
- namespace Crypto {
- class RSACipherImpl: public Cipher
- /// An implementation of the Cipher class for
- /// asymmetric (public-private key) encryption
- /// based on the the RSA algorithm in OpenSSL's
- /// crypto library.
- ///
- /// Encryption is using the public key, decryption
- /// requires the private key.
- {
- public:
- RSACipherImpl(const RSAKey& key, RSAPaddingMode paddingMode);
- /// Creates a new RSACipherImpl object for the given RSAKey
- /// and using the given padding mode.
- virtual ~RSACipherImpl();
- /// Destroys the RSACipherImpl.
- const std::string& name() const;
- /// Returns the name of the Cipher.
-
- CryptoTransform* createEncryptor();
- /// Creates an encryptor object.
- CryptoTransform* createDecryptor();
- /// Creates a decryptor object.
- private:
- RSAKey _key;
- RSAPaddingMode _paddingMode;
- OpenSSLInitializer _openSSLInitializer;
- };
- //
- // Inlines
- //
- inline const std::string& RSACipherImpl::name() const
- {
- return _key.name();
- }
- } } // namespace Poco::Crypto
- #endif // Crypto_RSACipherImpl_INCLUDED
|