MySQL 8.4.2
Source Code Documentation
st_mysql_keyring Struct Reference

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...
 

Detailed Description

The descriptor structure for the plugin, that is referred from st_mysql_plugin.

Member Data Documentation

◆ interface_version

int st_mysql_keyring::interface_version

◆ mysql_key_fetch

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.

Parameters
[in]key_idid of the key to fetch
[out]key_typetype of the fetched key
[in]user_idid of the owner of the key
[out]keythe 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_lenthe length of the fetched key
Returns
Operation status
Return values
0OK
1ERROR

◆ mysql_key_generate

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.

Parameters
[in]key_idid of the key to generate
[in]key_typetype of the key to generate
[in]user_idid of the owner of the generated key
[in]key_lenlength of the key to generate
Returns
Operation status
Return values
0OK
1ERROR

◆ mysql_key_iterator_deinit

void(* st_mysql_keyring::mysql_key_iterator_deinit) (void *key_iterator)

Deinitialize an iterator.

Parameters
[in]key_iteratorIterator used to fetch individual keys from key_container.

◆ mysql_key_iterator_get_key

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.

Parameters
[in]key_iteratorIterator used to fetch individual keys from key_container.
[out]key_idid of the key
[out]user_idid of the owner
Returns
Operation status
Return values
0OK
1ERROR

◆ mysql_key_iterator_init

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.

Parameters
[out]key_iteratorIterator used to fetch individual keys from key_container.

◆ mysql_key_remove

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.

Parameters
[in]key_idid of the key to remove
[in]user_idid of the owner of the key to remove
Returns
Operation status
Return values
0OK
1ERROR

◆ mysql_key_store

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).

Parameters
[in]key_idid of the key to store
[in]key_typetype of the key to store
[in]user_idid of the owner of the key
[in]keythe 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_lenthe length of the key to be stored
Returns
Operation status
Return values
0OK
1ERROR

The documentation for this struct was generated from the following file: