1 #ifndef MYSQL_VAULT_KEY_H
2 #define MYSQL_VAULT_KEY_H
3 
4 #include "keyring_key.h"
5 #include "i_serialized_object.h"
6 
7 namespace keyring {
8 
9 struct Vault_key : public Key, public ISerialized_object
10 {
Vault_keyVault_key11   Vault_key(const char *a_key_id, const char *a_key_type, const char *a_user_id,
12       const void *a_key, size_t a_key_len)
13     : Key(a_key_id, a_key_type, a_user_id, a_key, a_key_len)
14     , was_key_retrieved(false)
15   {}
16 
Vault_keyVault_key17   Vault_key(const Vault_key &vault_key)
18     : Key(vault_key.key_id.c_str(), vault_key.key_type.c_str(),
19           vault_key.user_id.c_str(), vault_key.key.get(), vault_key.key_len)
20     , was_key_retrieved(false)
21   {
22     this->key_operation = vault_key.key_operation;
23   }
Vault_keyVault_key24   Vault_key()
25   {}
26 
27   using Key::get_key_data;
28   uchar* get_key_data() const;
29   using Key::get_key_data_size;
30   size_t get_key_data_size() const;
31   using Key::get_key_type;
32   const std::string* get_key_type() const;
33 
34   virtual my_bool get_next_key(IKey **key);
35   virtual my_bool has_next_key();
36   virtual void create_key_signature() const;
37   virtual void xor_data();
38 
39 protected:
40   bool was_key_retrieved;
41 };
42 
43 } // namespace keyring
44 
45 #endif // MYSQL_VAULT_KEY_H
46