Virgil Security Crypto library  2.2.2
VirgilKeyPair.h
1 
37 #ifndef VIRGIL_KEY_PAIR_H
38 #define VIRGIL_KEY_PAIR_H
39 
40 #include <virgil/crypto/VirgilByteArray.h>
41 
42 namespace virgil { namespace crypto {
43 
48 public:
77  enum class Type {
78  RSA_256,
79  RSA_512,
80  RSA_1024,
81  RSA_2048,
82  RSA_3072,
83  RSA_4096,
84  RSA_8192,
85  EC_SECP192R1,
86  EC_SECP224R1,
87  EC_SECP256R1,
88  EC_SECP384R1,
89  EC_SECP521R1,
90  EC_BP256R1,
91  EC_BP384R1,
92  EC_BP512R1,
93  EC_SECP192K1,
94  EC_SECP224K1,
95  EC_SECP256K1,
99  };
105  using Algorithm = Type;
106 public:
112  static VirgilKeyPair generate(
113  VirgilKeyPair::Type type,
114  const VirgilByteArray& pwd = VirgilByteArray());
115 
121  const VirgilByteArray& pwd = VirgilByteArray());
122 
130  const VirgilKeyPair& donorKeyPair,
131  const VirgilByteArray& donorPrivateKeyPassword = VirgilByteArray(),
132  const VirgilByteArray& newKeyPairPassword = VirgilByteArray());
133 
137 
147  static bool isKeyPairMatch(
148  const VirgilByteArray& publicKey,
150  const VirgilByteArray& privateKeyPassword = VirgilByteArray());
151 
160  static bool checkPrivateKeyPassword(
161  const VirgilByteArray& key,
162  const VirgilByteArray& pwd);
163 
171  static bool isPrivateKeyEncrypted(const VirgilByteArray& privateKey);
173 
176 
189  const VirgilByteArray& privateKey,
190  const VirgilByteArray& oldPassword, const VirgilByteArray& newPassword);
191 
207  const VirgilByteArray& privateKey,
208  const VirgilByteArray& privateKeyPassword);
209 
226  const VirgilByteArray& privateKey,
227  const VirgilByteArray& privateKeyPassword);
228 
238  const VirgilByteArray& privateKey,
239  const VirgilByteArray& privateKeyPassword);
240 
248  static VirgilByteArray publicKeyToPEM(const VirgilByteArray& publicKey);
249 
257  static VirgilByteArray publicKeyToDER(const VirgilByteArray& publicKey);
258 
269  const VirgilByteArray& privateKey,
270  const VirgilByteArray& privateKeyPassword = VirgilByteArray());
281  const VirgilByteArray& privateKey,
282  const VirgilByteArray& privateKeyPassword = VirgilByteArray());
284 
288  VirgilKeyPair(const VirgilByteArray& publicKey, const VirgilByteArray& privateKey);
289 
293  VirgilByteArray publicKey() const;
294 
298  VirgilByteArray privateKey() const;
299 
300 private:
301  VirgilByteArray publicKey_;
302  VirgilByteArray privateKey_;
303 };
304 
305 }}
306 
307 #endif /* VIRGIL_KEY_PAIR_H */
VirgilByteArray privateKey() const
Provide access to the private key.
static bool isPrivateKeyEncrypted(const VirgilByteArray &privateKey)
Check if given private key is encrypted.
Curve25519 as ECP deprecated format.
static VirgilKeyPair generate(VirgilKeyPair::Type type, const VirgilByteArray &pwd=VirgilByteArray())
Generate new key pair given type.
static bool checkPrivateKeyPassword(const VirgilByteArray &key, const VirgilByteArray &pwd)
Check if given private key and it&#39;s password matches.
Type
Specific key algorithm type.
Definition: VirgilKeyPair.h:77
VirgilByteArray publicKey() const
Provide access to the public key.
static VirgilByteArray privateKeyToDER(const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword=VirgilByteArray())
Convert given private key to the DER format.
Root namespace for all Virgil Security libraries.
Definition: VirgilAsn1Compatible.h:46
std::vector< unsigned char > VirgilByteArray
This type represents a sequence of bytes.
Definition: VirgilByteArray.h:54
static bool isKeyPairMatch(const VirgilByteArray &publicKey, const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword=VirgilByteArray())
Check if a public-private pair of keys matches.
static VirgilByteArray publicKeyToDER(const VirgilByteArray &publicKey)
Convert given public key to the DER format.
This class handles information about Virgil Security key pair.
Definition: VirgilKeyPair.h:47
static VirgilByteArray extractPublicKey(const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword)
Extract public key from the private key.
static VirgilByteArray publicKeyToPEM(const VirgilByteArray &publicKey)
Convert given public key to the PEM format.
static VirgilByteArray decryptPrivateKey(const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword)
Return plain (non encrypted) private key.
static VirgilKeyPair generateFrom(const VirgilKeyPair &donorKeyPair, const VirgilByteArray &donorPrivateKeyPassword=VirgilByteArray(), const VirgilByteArray &newKeyPairPassword=VirgilByteArray())
Generate new key pair of the same type based on the donor key pair.
static VirgilByteArray encryptPrivateKey(const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword)
Return encrypted private key in PKCS#8 format.
VirgilKeyPair(const VirgilByteArray &publicKey, const VirgilByteArray &privateKey)
Initialize key pair with given public and private key.
static VirgilByteArray privateKeyToPEM(const VirgilByteArray &privateKey, const VirgilByteArray &privateKeyPassword=VirgilByteArray())
Convert given private key to the PEM format.
static VirgilByteArray resetPrivateKeyPassword(const VirgilByteArray &privateKey, const VirgilByteArray &oldPassword, const VirgilByteArray &newPassword)
Reset password for the given private key.
static VirgilKeyPair generateRecommended(const VirgilByteArray &pwd=VirgilByteArray())
Generate new key pair with recommended most safe type.