libcryptosec
KeyPair.h
Go to the documentation of this file.
1 #ifndef KEYPAIR_H_
2 #define KEYPAIR_H_
3 
4 #include <openssl/evp.h>
5 #include "ByteArray.h"
6 #include "Engine.h"
7 #include "AsymmetricKey.h"
8 #include "RSAPublicKey.h"
9 #include "DSAPublicKey.h"
10 #include "ECDSAPublicKey.h"
11 #include "RSAPrivateKey.h"
12 #include "DSAPrivateKey.h"
13 #include "ECDSAPrivateKey.h"
14 
18 
26 class KeyPair
27 {
28  public:
35  //TODO Este construtor deve é obsoleto. Devem ser usados os construtores das classes especializadas RSAKeyPair, DSAKeyPair e ECDSAKeyPair
36  KeyPair(AsymmetricKey::Algorithm algorithm, int length)
37  throw (AsymmetricKeyException);
38 
39  KeyPair(Engine *engine, std::string keyId)
40  throw (EngineException);
46  KeyPair(std::string pemEncoded, ByteArray passphrase)
47  throw (EncodeException);
52  KeyPair(std::string pemEncoded)
53  throw (EncodeException);
58  KeyPair(ByteArray derEncoded)
59  throw (EncodeException);
60 
61  KeyPair(const KeyPair &keyPair);
62 
63  virtual ~KeyPair();
68  virtual PublicKey* getPublicKey()
74  virtual PrivateKey* getPrivateKey()
75  throw (AsymmetricKeyException);
82  std::string getPemEncoded(SymmetricKey &passphrase, SymmetricCipher::OperationMode mode)
88  std::string getPemEncoded() throw (EncodeException);
94 
100 
105  int getSize() throw (AsymmetricKeyException);
110  int getSizeBits() throw (AsymmetricKeyException);
111 
112  EVP_PKEY* getEvpPkey() const;
113 
114  ENGINE* getEngine() const;
115 
116  std::string getKeyId() const;
117  protected:
118  KeyPair();
119  static int passphraseCallBack(char *buf, int size, int rwflag, void *u);
120  std::string getPublicKeyPemEncoded() throw (EncodeException);
124  EVP_PKEY *key;
125  std::string keyId;
126  ENGINE *engine;
127 };
128 
129 #endif /*KEYPAIR_H_*/
Definition: PublicKey.h:19
std::string getKeyId() const
Definition: KeyPair.cpp:473
virtual ~KeyPair()
Definition: KeyPair.cpp:164
EVP_PKEY * getEvpPkey() const
Definition: KeyPair.cpp:463
std::string keyId
Definition: KeyPair.h:125
std::string getPemEncoded()
Definition: KeyPair.cpp:289
Definition: KeyPair.h:26
ENGINE * getEngine() const
Definition: KeyPair.cpp:468
std::string getPublicKeyPemEncoded()
Definition: KeyPair.cpp:432
KeyPair()
Definition: KeyPair.cpp:3
Define as características funcionais de uma engine do OpenSSL.
Definition: Engine.h:19
ENGINE * engine
Definition: KeyPair.h:126
Definition: SymmetricCipherException.h:6
ByteArray getDerEncoded()
Definition: KeyPair.cpp:320
static int passphraseCallBack(char *buf, int size, int rwflag, void *u)
Definition: KeyPair.cpp:417
Definition: EngineException.h:6
Classe usada para transportar dados binários pelo sistema. Pode ser usada para conversão de texto em ...
Definition: ByteArray.h:24
Definition: AsymmetricKeyException.h:6
Definition: PrivateKey.h:21
Definition: EncodeException.h:8
EVP_PKEY * key
Definition: KeyPair.h:124
OperationMode
Definition: SymmetricCipher.h:34
Algorithm
Definition: AsymmetricKey.h:47
virtual PublicKey * getPublicKey()
Definition: KeyPair.cpp:178
Definition: SymmetricKey.h:13
virtual PrivateKey * getPrivateKey()
Definition: KeyPair.cpp:199
virtual AsymmetricKey::Algorithm getAlgorithm()
Definition: KeyPair.cpp:348
int getSizeBits()
Definition: KeyPair.cpp:400
int getSize()
Definition: KeyPair.cpp:383