24#ifndef KEYRING_READER_SERVICE_IMPL_TEMPLATE_INCLUDED
25#define KEYRING_READER_SERVICE_IMPL_TEMPLATE_INCLUDED
32#include <mysqld_error.h>
46namespace service_implementation {
64template <
typename Backend,
typename Data_extension = data::Data>
66 const char *data_id,
const char *auth_id,
71 if (
callbacks.keyring_initialized() ==
false) {
75 if (data_id ==
nullptr || !*data_id) {
85 if (keyring_operations.
is_valid(it) ==
false) {
87 ER_NOTE_KEYRING_COMPONENT_READ_DATA_NOT_FOUND, data_id,
88 (auth_id ==
nullptr || !*auth_id) ?
"NULL" : auth_id);
95 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"init",
96 "keyring_reader_with_status");
114template <
typename Backend,
typename Data_extension = data::Data>
120 if (
callbacks.keyring_initialized() ==
false) {
126 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"deinit",
127 "keyring_reader_with_status");
145template <
typename Backend,
typename Data_extension = data::Data>
148 size_t *data_type_size,
152 if (
callbacks.keyring_initialized() ==
false) {
156 if (data_size ==
nullptr || data_type_size ==
nullptr) {
167 *data_size = data.data().length();
168 *data_type_size = data.type().length();
171 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch_length",
172 "keyring_reader_with_status");
195template <
typename Backend,
typename Data_extension = data::Data>
198 size_t data_buffer_length,
size_t *data_size,
char *data_type_buffer,
199 size_t data_type_buffer_length,
size_t *data_type_size,
203 if (
callbacks.keyring_initialized() ==
false) {
213 if (data_buffer_length < data.data().length() || data_buffer ==
nullptr) {
218 if (data_type_buffer_length < data.type().length() ||
219 data_type_buffer ==
nullptr) {
224 memset(data_buffer, 0, data_buffer_length);
225 memset(data_type_buffer, 0, data_type_buffer_length);
227 memcpy(data_buffer, data.data().c_str(), data.data().length());
228 *data_size = data.data().length();
230 memcpy(data_type_buffer, data.type().c_str(), data.type().length());
231 *data_type_size = data.type().length();
235 memset(data_buffer, 0, data_buffer_length);
236 memset(data_type_buffer, 0, data_type_buffer_length);
237 LogComponentErr(
ERROR_LEVEL, ER_KEYRING_COMPONENT_EXCEPTION,
"fetch",
238 "keyring_reader_with_status");
static const sasl_callback_t callbacks[]
Definition: auth_ldap_sasl_client.h:45
Sensitive data storage.
Definition: data.h:40
Definition: iterator.h:33
Keyring operations A class to perform operations on keyring.
Definition: operations.h:483
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:737
void deinit_forward_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Iterator destruction.
Definition: operations.h:694
bool is_valid(std::unique_ptr< iterator::Iterator< Data_extension > > &it)
Check iterator validity.
Definition: operations.h:708
bool init_read_iterator(std::unique_ptr< iterator::Iterator< Data_extension > > &it, const meta::Metadata &metadata)
Iterator creation for read.
Definition: operations.h:662
Definition: service_requirements.h:36
@ ERROR_LEVEL
Definition: my_loglevel.h:43
@ INFORMATION_LEVEL
Definition: my_loglevel.h:45
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:65
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:196
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:146
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:115
Definition: keyring_encryption_service_definition.h:32
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:2438