libcryptosec
SymmetricCipher.h
Go to the documentation of this file.
1 #ifndef SYMMETRICCIPHER_H_
2 #define SYMMETRICCIPHER_H_
3 
4 #include <string>
5 
6 #include <openssl/evp.h>
7 
8 #include "SymmetricKey.h"
11 
24 {
25 
26 public:
27 
35  {
37  CBC,
38  ECB,
39  CFB,
40  OFB,
41  };
42 
49  enum Operation
50  {
53  };
54 
59 
70 
83 
87  virtual ~SymmetricCipher();
88 
96  void init(SymmetricKey &key, SymmetricCipher::Operation operation)
98 
108  throw (SymmetricCipherException);
109 
116  void update(std::string &data) throw (InvalidStateException, SymmetricCipherException);
117 
125 
133 
141  ByteArray doFinal(std::string &data) throw (InvalidStateException, SymmetricCipherException);
142 
150  ByteArray doFinal(ByteArray &data) throw (InvalidStateException, SymmetricCipherException);
151 
157  SymmetricCipher::OperationMode getOperationMode() throw (InvalidStateException);
158 
164  SymmetricCipher::Operation getOperation() throw (InvalidStateException);
165 
166 
172 
179  static const EVP_CIPHER* getCipher(SymmetricKey::Algorithm algorithm, SymmetricCipher::OperationMode mode)
180  throw (SymmetricCipherException);
181 
185  static void loadSymmetricCiphersAlgorithms();
186 
187 private:
188 
195  enum State
196  {
197  NO_INIT,
198  INIT,
199  UPDATE
200  };
201 
202 
206  SymmetricCipher::State state;
207 
212 
216  EVP_CIPHER_CTX ctx;
217 
221  ByteArray *buffer;
222 
226  std::pair<ByteArray*, ByteArray*> keyToKeyIv(ByteArray &key, const EVP_CIPHER *cipher);
227 
228 };
229 
230 #endif /*SYMMETRICCIPHER_H_*/
virtual ~SymmetricCipher()
Definition: SymmetricCipher.cpp:63
void update(std::string &data)
Definition: SymmetricCipher.cpp:140
static void loadSymmetricCiphersAlgorithms()
Definition: SymmetricCipher.cpp:325
static const EVP_CIPHER * getCipher(SymmetricKey::Algorithm algorithm, SymmetricCipher::OperationMode mode)
Definition: SymmetricCipher.cpp:302
Definition: SymmetricCipher.h:40
Definition: SymmetricCipher.h:51
Definition: SymmetricCipherException.h:6
Operation
Definition: SymmetricCipher.h:49
Definition: SymmetricCipher.h:36
SymmetricCipher::Operation getOperation()
Definition: SymmetricCipher.cpp:248
Classe usada para transportar dados binários pelo sistema. Pode ser usada para conversão de texto em ...
Definition: ByteArray.h:24
Definition: SymmetricCipher.h:37
static std::string getOperationModeName(SymmetricCipher::OperationMode mode)
Definition: SymmetricCipher.cpp:278
Definition: SymmetricCipher.h:23
Definition: InvalidStateException.h:6
Definition: SymmetricCipher.h:39
void init(SymmetricKey &key, SymmetricCipher::Operation operation)
Definition: SymmetricCipher.cpp:72
Definition: SymmetricCipher.h:52
OperationMode
Definition: SymmetricCipher.h:34
ByteArray doFinal()
Definition: SymmetricCipher.cpp:192
Definition: SymmetricKey.h:13
SymmetricCipher()
Definition: SymmetricCipher.cpp:3
Definition: SymmetricCipher.h:38
SymmetricCipher::OperationMode getOperationMode()
Definition: SymmetricCipher.cpp:239