MySQL 8.0.40
Source Code Documentation
|
The descriptor structure for the plugin, that is referred from st_mysql_plugin. More...
#include <plugin_keyring.h>
Public Attributes | |
int | interface_version |
bool(* | mysql_key_store )(const char *key_id, const char *key_type, const char *user_id, const void *key, size_t key_len) |
Add key to the keyring. More... | |
bool(* | mysql_key_fetch )(const char *key_id, char **key_type, const char *user_id, void **key, size_t *key_len) |
Fetches key from the keyring. More... | |
bool(* | mysql_key_remove )(const char *key_id, const char *user_id) |
Removes key from the keyring. More... | |
bool(* | mysql_key_generate )(const char *key_id, const char *key_type, const char *user_id, size_t key_len) |
Generates and stores the key. More... | |
void(* | mysql_key_iterator_init )(void **key_iterator) |
Keys_iterator object refers to an iterator which is used to iterate on a list which refers to Key_metadata. More... | |
void(* | mysql_key_iterator_deinit )(void *key_iterator) |
Deinitialize an iterator. More... | |
bool(* | mysql_key_iterator_get_key )(void *key_iterator, char *key_id, char *user_id) |
Get details of key. More... | |
The descriptor structure for the plugin, that is referred from st_mysql_plugin.
int st_mysql_keyring::interface_version |
bool(* st_mysql_keyring::mysql_key_fetch) (const char *key_id, char **key_type, const char *user_id, void **key, size_t *key_len) |
Fetches key from the keyring.
De-obfuscates and retrieves key associated with key_id and user_id from the keyring.
[in] | key_id | id of the key to fetch |
[out] | key_type | type of the fetched key |
[in] | user_id | id of the owner of the key |
[out] | key | the fetched key itself. The memory for this key is allocated by the keyring and needs to be freed by the user when no longer needed. Prior to freeing the memory it needs to be obfuscated or zeroed. |
[out] | key_len | the length of the fetched key |
0 | OK |
1 | ERROR |
bool(* st_mysql_keyring::mysql_key_generate) (const char *key_id, const char *key_type, const char *user_id, size_t key_len) |
Generates and stores the key.
Generates a random key of length key_len, associates it with key_id, user_id and stores it in the keyring.
[in] | key_id | id of the key to generate |
[in] | key_type | type of the key to generate |
[in] | user_id | id of the owner of the generated key |
[in] | key_len | length of the key to generate |
0 | OK |
1 | ERROR |
void(* st_mysql_keyring::mysql_key_iterator_deinit) (void *key_iterator) |
Deinitialize an iterator.
[in] | key_iterator | Iterator used to fetch individual keys from key_container. |
bool(* st_mysql_keyring::mysql_key_iterator_get_key) (void *key_iterator, char *key_id, char *user_id) |
Get details of key.
Every call to this service will change internal pointers to advance to next position, so that the next call will fetch the next key. In case iterator moves to the end, this service will return error.
[in] | key_iterator | Iterator used to fetch individual keys from key_container. |
[out] | key_id | id of the key |
[out] | user_id | id of the owner |
0 | OK |
1 | ERROR |
void(* st_mysql_keyring::mysql_key_iterator_init) (void **key_iterator) |
Keys_iterator object refers to an iterator which is used to iterate on a list which refers to Key_metadata.
Key_metadata hold information about individual keys keyd_id and user_id. Keys_iterator should be used in following sequence only.
void* iterator_ptr; char key_id[64]= { 0 }; char user_id[64]= { 0 };
plugin_handle->mysql_key_iterator_init(&iterator_ptr);
if (iterator_ptr == NULL) report error;
while (!(plugin_handle->mysql_key_iterator_get_key(iterator_ptr, key_id, user_id))) { Fetch the keys. Perform operations on the fetched keys. .. } plugin_handle->mysql_key_iterator_deinit(iterator_ptr);
init() method accepts a void pointer which is the made to point to Keys_iterator instance. Keys_iterator instance internal pointer points to Key_metadata list. This list holds information about all keys stored in the backed end data store of keyring plugin. After call to init() please check iterator_ptr.
get_key() method accepts the above iterator_ptr as IN param and then fills the passes in key_id and user_id with valid values. This can be used to fetch actual key information. Every call to this method will change internal pointers to advance to next position, so that the next call will fetch the next key.
deinit() method frees all internal pointers along with iterator_ptr. Initialize an iterator.
[out] | key_iterator | Iterator used to fetch individual keys from key_container. |
bool(* st_mysql_keyring::mysql_key_remove) (const char *key_id, const char *user_id) |
Removes key from the keyring.
Removes the key associated with key_id and user_id from the keyring.
[in] | key_id | id of the key to remove |
[in] | user_id | id of the owner of the key to remove |
0 | OK |
1 | ERROR |
bool(* st_mysql_keyring::mysql_key_store) (const char *key_id, const char *key_type, const char *user_id, const void *key, size_t key_len) |
Add key to the keyring.
Obfuscates and adds the key to the keyring. The key is associated with key_id and user_id (unique key identifier).
[in] | key_id | id of the key to store |
[in] | key_type | type of the key to store |
[in] | user_id | id of the owner of the key |
[in] | key | the key itself to be stored. The memory of the key is copied by the keyring, thus the key itself can be freed after it was stored in the keyring. |
[in] | key_len | the length of the key to be stored |
0 | OK |
1 | ERROR |