MySQL
9.1.0
Source Code Documentation
keyring_generator.h
Go to the documentation of this file.
1
/* Copyright (c) 2021, 2024, Oracle and/or its affiliates.
2
3
This program is free software; you can redistribute it and/or modify
4
it under the terms of the GNU General Public License, version 2.0,
5
as published by the Free Software Foundation.
6
7
This program is designed to work with certain software (including
8
but not limited to OpenSSL) that is licensed under separate terms,
9
as designated in a particular file or component or in included license
10
documentation. The authors of MySQL hereby grant you an additional
11
permission to link the program and your derivative works with the
12
separately licensed software that they have either included with
13
the program or referenced in the documentation.
14
15
This program is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU General Public License, version 2.0, for more details.
19
20
You should have received a copy of the GNU General Public License
21
along with this program; if not, write to the Free Software
22
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24
#ifndef KEYRING_GENERATOR_INCLUDED
25
#define KEYRING_GENERATOR_INCLUDED
26
27
#include <
mysql/components/service.h
>
28
29
/**
30
@ingroup group_keyring_component_services_inventory
31
32
Key generator service provides a way to generate random data
33
and store it in keyring backend.
34
35
Data stored within keyring should be uniquely identified using:
36
1. Data ID
37
An identifier associated with data - supplied by keyring APIs' callers
38
2. Auth ID
39
An identifier associated with owner of the data - suppled by keyring
40
APIs' callers. If Auth ID is not provided, key is treated as an internal
41
key. Such a key shalll not be accessible to database users using
42
SQL interface
43
44
This service does not return generated data back to user.
45
For that, Keyring reader service should be used.
46
47
@code
48
bool generate_key(const char *data_id, const char *auth_id,
49
const char *data_type, size_t data_size) {
50
my_service<SERVICE_TYPE(keyring_generator)> keyring_generator(
51
"keyring_reader_generator", m_reg_srv);
52
if (!keyring_generator.is_valid()) {
53
return true;
54
}
55
56
if (keyring_generator->generate(data_id, auth_id, data_type, data_size) ==
57
true) {
58
return true;
59
}
60
return false;
61
}
62
@endcode
63
*/
64
65
BEGIN_SERVICE_DEFINITION
(keyring_generator)
66
67
/**
68
Generate random data of length data_size and
69
store it in keyring using identifiers as (data_id, auth_id).
70
71
Data_type value is implementation specific. It associates type
72
label with data which may be an important indicator for certain
73
backends.
74
75
Examples: AES, SECRET
76
77
Note: If components want to support aes_encryption service,
78
it must support storing data of type AES.
79
80
If error object is not initialized, the method will initialize it if returns
81
false. Caller will be responsible for freeing error state in such cases.
82
No error object will be created or modified if return value is true.
83
84
The action should be atomic from caller's point of view.
85
As much as possible, deligate data generation to keyring backend.
86
87
@note Implementation can restrict type and/or size of data that can be
88
stored in keyring.
89
90
@param [in] data_id Data Identifier. Byte string.
91
@param [in] auth_id Authorization ID. Byte string.
92
@param [in] data_type Type of data. ASCII. Null terminated.
93
@param [in] data_size Size of the data to be generated
94
95
@returns status of the operation
96
@retval false Success - Key generated and stored in keyring.
97
@retval truen Failure
98
*/
99
100
DECLARE_BOOL_METHOD
(generate, (
const
char
*data_id,
const
char
*auth_id,
101
const
char
*data_type,
size_t
data_size));
102
103
END_SERVICE_DEFINITION
(keyring_generator)
104
105
#endif
// !KEYRING_GENERATOR_INCLUDED
service.h
END_SERVICE_DEFINITION
#define END_SERVICE_DEFINITION(name)
A macro to end the last Service definition started with the BEGIN_SERVICE_DEFINITION macro.
Definition:
service.h:91
BEGIN_SERVICE_DEFINITION
#define BEGIN_SERVICE_DEFINITION(name)
Declares a new Service.
Definition:
service.h:86
DECLARE_BOOL_METHOD
#define DECLARE_BOOL_METHOD(name, args)
Declares a method that returns bool as a part of the Service definition.
Definition:
service.h:112
include
mysql
components
services
keyring_generator.h
Generated by
1.9.2