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);
85 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_INIT_FAILED);
89 if (!keyring_operations.
is_valid(it)) {
91 ER_NOTE_KEYRING_COMPONENT_READ_DATA_NOT_FOUND, data_id,
92 (auth_id ==
nullptr || !*auth_id) ?
"NULL" : auth_id);
99 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"init",
100 "keyring_reader_with_status");
118template <
typename Backend,
typename Data_extension = data::Data>
126 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
132 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"deinit",
133 "keyring_reader_with_status");
151template <
typename Backend,
typename Data_extension = data::Data>
154 size_t *data_type_size,
160 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
164 if (data_size ==
nullptr || data_type_size ==
nullptr) {
173 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_FETCH_FAILED);
177 *data_size = data.data().length();
178 *data_type_size = data.type().length();
181 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch_length",
182 "keyring_reader_with_status");
205template <
typename Backend,
typename Data_extension = data::Data>
208 size_t data_buffer_length,
size_t *data_size,
char *data_type_buffer,
209 size_t data_type_buffer_length,
size_t *data_type_size,
215 ER_NOTE_KEYRING_COMPONENT_NOT_INITIALIZED);
223 ER_NOTE_KEYRING_COMPONENT_KEY_READ_ITERATOR_FETCH_FAILED);
227 if (data_buffer_length < data.data().length() || data_buffer ==
nullptr) {
232 if (data_type_buffer_length < data.type().length() ||
233 data_type_buffer ==
nullptr) {
238 memset(data_buffer, 0, data_buffer_length);
239 memset(data_type_buffer, 0, data_type_buffer_length);
241 memcpy(data_buffer, data.data().c_str(), data.data().length());
242 *data_size = data.data().length();
244 memcpy(data_type_buffer, data.type().c_str(), data.type().length());
245 *data_type_size = data.type().length();
249 memset(data_buffer, 0, data_buffer_length);
250 memset(data_type_buffer, 0, data_type_buffer_length);
251 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch",
252 "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:744
void deinit_forward_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Iterator destruction.
Definition: operations.h:701
bool is_valid(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Check iterator validity.
Definition: operations.h:715
bool init_read_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it, const meta::Metadata &metadata)
Iterator creation for read.
Definition: operations.h:669
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:206
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:152
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:119
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:2444