LibLogicalAccess  2.5.0
An Open Source RFID Library
Loading...
Searching...
No Matches
openssl_symmetric_cipher.hpp
Go to the documentation of this file.
1
8#ifndef OPENSSL_SYMETRIC_CIPHER_HPP
9#define OPENSSL_SYMETRIC_CIPHER_HPP
10
12#include <openssl/evp.h>
13
14namespace logicalaccess
15{
16namespace openssl
17{
18class OpenSSLSymmetricCipherContext;
19
32class LLA_CRYPTO_API OpenSSLSymmetricCipher : public SymmetricCipher
33{
34 public:
39 {
45 ENC_MODE_OFB
46 };
47
51 enum Method
52 {
54 M_DECRYPT
55 };
56
61 explicit OpenSSLSymmetricCipher(EncMode mode);
62
64
73 OpenSSLSymmetricCipherContext start(Method method, const SymmetricKey &key,
74 const InitializationVector &iv,
75 bool padding) const;
76
82 static void update(OpenSSLSymmetricCipherContext &context, const ByteVector &src);
83
91 static ByteVector stop(OpenSSLSymmetricCipherContext &context);
92
103 void cipher(const ByteVector &src, ByteVector &dest, const SymmetricKey &key,
104 const InitializationVector &iv, bool padding) override;
105
116 void decipher(const ByteVector &src, ByteVector &dest, const SymmetricKey &key,
117 const InitializationVector &iv, bool padding) override;
118
119 protected:
125 virtual const EVP_CIPHER *getEVPCipher(const SymmetricKey &key) const = 0;
126
131 EncMode mode() const
132 {
133 return d_mode;
134 }
135
136 private:
141};
142}
143}
144
145#endif /* OPENSSL_SYMETRIC_CIPHER_HPP */
An initialisation vector.
Definition: initialization_vector.hpp:26
An OpenSSL context class.
Definition: openssl_symmetric_cipher_context.hpp:26
A OpenSSL symmetric cipher base class.
Definition: openssl_symmetric_cipher.hpp:33
Method
A method.
Definition: openssl_symmetric_cipher.hpp:52
@ M_ENCRYPT
Definition: openssl_symmetric_cipher.hpp:53
virtual const EVP_CIPHER * getEVPCipher(const SymmetricKey &key) const =0
Get the openssl EVP cipher.
EncMode mode() const
Get the encryption mode.
Definition: openssl_symmetric_cipher.hpp:131
EncMode
Encryption mode.
Definition: openssl_symmetric_cipher.hpp:39
@ ENC_MODE_CFB
CFB.
Definition: openssl_symmetric_cipher.hpp:41
@ ENC_MODE_CBC
CBC.
Definition: openssl_symmetric_cipher.hpp:40
@ ENC_MODE_CFB8
CFB8.
Definition: openssl_symmetric_cipher.hpp:43
@ ENC_MODE_ECB
ECB.
Definition: openssl_symmetric_cipher.hpp:44
@ ENC_MODE_CFB1
CFB1.
Definition: openssl_symmetric_cipher.hpp:42
EncMode d_mode
The encryption mode.
Definition: openssl_symmetric_cipher.hpp:140
A symmetric cipher.
Definition: symmetric_cipher.hpp:25
An immutable symmetric key.
Definition: symmetric_key.hpp:27
std::vector< uint8_t > ByteVector
Definition: lla_fwd.hpp:80
Definition: asn1.hpp:9
Symmetric cipher base class.