24#ifndef KEYRING_READER_SERVICE_IMPL_TEMPLATE_INCLUDED
25#define KEYRING_READER_SERVICE_IMPL_TEMPLATE_INCLUDED
32#include <mysqld_error.h>
63template <
typename Backend,
typename Data_extension = data::Data>
65 const char *data_id,
const char *auth_id,
72 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
76 if (data_id ==
nullptr || !*data_id) {
78 ER_NOTE_KEYRING_COMPONENT_EMPTY_DATA_ID);
86 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_INIT_FAILED);
90 if (!keyring_operations.
is_valid(it)) {
92 ER_NOTE_KEYRING_COMPONENT_READ_DATA_NOT_FOUND, data_id,
93 (auth_id ==
nullptr || !*auth_id) ?
"NULL" : auth_id);
100 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"init",
101 "keyring_reader_with_status");
119template <
typename Backend,
typename Data_extension = data::Data>
127 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
133 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"deinit",
134 "keyring_reader_with_status");
152template <
typename Backend,
typename Data_extension = data::Data>
155 size_t *data_type_size,
161 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
165 if (data_size ==
nullptr || data_type_size ==
nullptr) {
174 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_FETCH_FAILED);
178 *data_size = data.data().length();
179 *data_type_size = data.type().length();
182 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch_length",
183 "keyring_reader_with_status");
206template <
typename Backend,
typename Data_extension = data::Data>
209 size_t data_buffer_length,
size_t *data_size,
char *data_type_buffer,
210 size_t data_type_buffer_length,
size_t *data_type_size,
216 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
224 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_FETCH_FAILED);
228 if (data_buffer_length < data.data().length() || data_buffer ==
nullptr) {
233 if (data_type_buffer_length < data.type().length() ||
234 data_type_buffer ==
nullptr) {
239 memset(data_buffer, 0, data_buffer_length);
240 memset(data_type_buffer, 0, data_type_buffer_length);
242 memcpy(data_buffer, data.data().c_str(), data.data().length());
243 *data_size = data.data().length();
245 memcpy(data_type_buffer, data.type().c_str(), data.type().length());
246 *data_type_size = data.type().length();
250 memset(data_buffer, 0, data_buffer_length);
251 memset(data_type_buffer, 0, data_type_buffer_length);
252 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch",
253 "keyring_reader_with_status");
Sensitive data storage.
Definition: data.h:39
Definition: iterator.h:32
Keyring operations A class to perform operations on keyring.
Definition: operations.h:482
bool get_iterator_data(std::unique_ptr< iterator::Iterator< Data_extension > > &it, meta::Metadata &metadata, Data_extension &data)
Get data from iterator.
Definition: operations.h:736
void deinit_forward_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Iterator destruction.
Definition: operations.h:693
bool is_valid(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Check iterator validity.
Definition: operations.h:707
bool init_read_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it, const meta::Metadata &metadata)
Iterator creation for read.
Definition: operations.h:661
Definition: service_requirements.h:35
bool keyring_initialized()
Keyring component status.
Definition: component_callbacks.cc:28
@ ERROR_LEVEL
Definition: my_loglevel.h:43
@ INFORMATION_LEVEL
Definition: my_loglevel.h:45
Definition: keyring_encryption_service_impl_template.h:56
int init_reader_template(const char *data_id, const char *auth_id, std::unique_ptr< Iterator< Data_extension > > &it, Keyring_operations< Backend, Data_extension > &keyring_operations, Component_callbacks &callbacks)
Initialize reader.
Definition: keyring_reader_service_impl_template.h:64
bool fetch_template(std::unique_ptr< Iterator< Data_extension > > &it, unsigned char *data_buffer, size_t data_buffer_length, size_t *data_size, char *data_type_buffer, size_t data_type_buffer_length, size_t *data_type_size, Keyring_operations< Backend, Data_extension > &keyring_operations, Component_callbacks &callbacks)
Fetches data from keyring.
Definition: keyring_reader_service_impl_template.h:207
bool fetch_length_template(std::unique_ptr< Iterator< Data_extension > > &it, size_t *data_size, size_t *data_type_size, Keyring_operations< Backend, Data_extension > &keyring_operations, Component_callbacks &callbacks)
Fetch length of the data.
Definition: keyring_reader_service_impl_template.h:153
bool deinit_reader_template(std::unique_ptr< Iterator< Data_extension > > &it, Keyring_operations< Backend, Data_extension > &keyring_operations, Component_callbacks &callbacks)
Deinitialize reader.
Definition: keyring_reader_service_impl_template.h:120
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr
The following is a common type that is returned by all the ut::make_unique (non-aligned) specializati...
Definition: ut0new.h:2440