GRPC Core  9.0.0
grpc_tls_credentials_options.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
20 #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
21 
23 
24 #include <grpc/grpc_security.h>
25 
29 
32  : public grpc_core::RefCounted<grpc_tls_key_materials_config> {
33  public:
36 
38  const char* pem_root_certs() const { return pem_root_certs_.get(); }
40  return pem_key_cert_pair_list_;
41  }
42  int version() const { return version_; }
43 
46  pem_root_certs_ = std::move(pem_root_certs);
47  }
49  pem_key_cert_pair_list_.push_back(pem_key_cert_pair);
50  }
53  void set_version(int version) { version_ = version; }
54 
55  private:
56  int version_ = 0;
57  PemKeyCertPairList pem_key_cert_pair_list_;
58  grpc_core::UniquePtr<char> pem_root_certs_;
59 };
60 
63  : public grpc_core::RefCounted<grpc_tls_credential_reload_config> {
64  public:
66  const void* config_user_data,
67  int (*schedule)(void* config_user_data,
69  void (*cancel)(void* config_user_data,
71  void (*destruct)(void* config_user_data));
73 
74  void* context() const { return context_; }
75  void set_context(void* context) { context_ = context; }
76 
78  if (schedule_ == nullptr) {
79  gpr_log(GPR_ERROR, "schedule API is nullptr");
80  if (arg != nullptr) {
82  arg->error_details =
83  gpr_strdup("schedule API in credential reload config is nullptr");
84  }
85  return 1;
86  }
87  if (arg != nullptr) {
88  arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
89  }
90  return schedule_(config_user_data_, arg);
91  }
93  if (cancel_ == nullptr) {
94  gpr_log(GPR_ERROR, "cancel API is nullptr.");
95  if (arg != nullptr) {
97  arg->error_details =
98  gpr_strdup("cancel API in credential reload config is nullptr");
99  }
100  return;
101  }
102  if (arg != nullptr) {
103  arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
104  }
105  cancel_(config_user_data_, arg);
106  }
107 
108  private:
113  void* context_ = nullptr;
116  void* config_user_data_;
126  int (*schedule_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
131  void (*cancel_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
134  void (*destruct_)(void* config_user_data);
135 };
136 
139  : public grpc_core::RefCounted<grpc_tls_server_authorization_check_config> {
140  public:
142  const void* config_user_data,
143  int (*schedule)(void* config_user_data,
145  void (*cancel)(void* config_user_data,
147  void (*destruct)(void* config_user_data));
149 
150  void* context() const { return context_; }
151  void set_context(void* context) { context_ = context; }
152 
154  if (schedule_ == nullptr) {
155  gpr_log(GPR_ERROR, "schedule API is nullptr");
156  if (arg != nullptr) {
158  arg->error_details = gpr_strdup(
159  "schedule API in server authorization check config is nullptr");
160  }
161  return 1;
162  }
163  if (arg != nullptr && context_ != nullptr) {
164  arg->config =
166  }
167  return schedule_(config_user_data_, arg);
168  }
170  if (cancel_ == nullptr) {
171  gpr_log(GPR_ERROR, "cancel API is nullptr.");
172  if (arg != nullptr) {
174  arg->error_details = gpr_strdup(
175  "schedule API in server authorization check config is nullptr");
176  }
177  return;
178  }
179  if (arg != nullptr) {
180  arg->config =
182  }
183  cancel_(config_user_data_, arg);
184  }
185 
186  private:
191  void* context_ = nullptr;
194  void* config_user_data_;
195 
205  int (*schedule_)(void* config_user_data,
207 
209  void (*cancel_)(void* config_user_data,
211 
214  void (*destruct_)(void* config_user_data);
215 };
216 
217 /* TLS credentials options. */
219  : public grpc_core::RefCounted<grpc_tls_credentials_options> {
220  public:
222  if (key_materials_config_.get() != nullptr) {
223  key_materials_config_.get()->Unref();
224  }
225  if (credential_reload_config_.get() != nullptr) {
226  credential_reload_config_.get()->Unref();
227  }
228  if (server_authorization_check_config_.get() != nullptr) {
229  server_authorization_check_config_.get()->Unref();
230  }
231  }
232 
233  /* Getters for member fields. */
235  return cert_request_type_;
236  }
238  return key_materials_config_.get();
239  }
241  return credential_reload_config_.get();
242  }
245  return server_authorization_check_config_.get();
246  }
247 
248  /* Setters for member fields. */
251  cert_request_type_ = type;
252  }
255  key_materials_config_ = std::move(config);
256  }
259  credential_reload_config_ = std::move(config);
260  }
263  config) {
264  server_authorization_check_config_ = std::move(config);
265  }
266 
267  private:
268  grpc_ssl_client_certificate_request_type cert_request_type_;
271  credential_reload_config_;
273  server_authorization_check_config_;
274 };
275 
276 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H \
277  */
void push_back(const T &value)
Definition: inlined_vector.h:153
Definition: ssl_utils.h:129
Definition: ref_counted.h:248
void Unref()
Definition: ref_counted.h:268
T * get() const
Definition: ref_counted_ptr.h:144
grpc_ssl_client_certificate_request_type
Definition: grpc_security_constants.h:59
@ GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
Definition: grpc_security_constants.h:56
#define GPR_ERROR
Definition: log.h:57
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
Log a message.
@ GRPC_STATUS_NOT_FOUND
Some requested entity (e.g., file or directory) was not found.
Definition: status.h:54
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
Definition: memory.h:45
GPRAPI char * gpr_strdup(const char *src)
String utility functions.
Definition: string.cc:37
A struct containing all information necessary to schedule/cancel a credential reload request.
Definition: grpc_security.h:825
grpc_ssl_certificate_config_reload_status status
Definition: grpc_security.h:829
grpc_tls_credential_reload_config * config
Definition: grpc_security.h:831
const char * error_details
Definition: grpc_security.h:830
TLS credential reload config.
Definition: grpc_tls_credentials_options.h:63
void set_context(void *context)
Definition: grpc_tls_credentials_options.h:75
int Schedule(grpc_tls_credential_reload_arg *arg) const
Definition: grpc_tls_credentials_options.h:77
grpc_tls_credential_reload_config(const void *config_user_data, int(*schedule)(void *config_user_data, grpc_tls_credential_reload_arg *arg), void(*cancel)(void *config_user_data, grpc_tls_credential_reload_arg *arg), void(*destruct)(void *config_user_data))
– gRPC TLS credential reload config API implementation.
Definition: grpc_tls_credentials_options.cc:39
void * context() const
Definition: grpc_tls_credentials_options.h:74
void Cancel(grpc_tls_credential_reload_arg *arg) const
Definition: grpc_tls_credentials_options.h:92
~grpc_tls_credential_reload_config()
Definition: grpc_tls_credentials_options.cc:50
Definition: grpc_tls_credentials_options.h:219
void set_key_materials_config(grpc_core::RefCountedPtr< grpc_tls_key_materials_config > config)
Definition: grpc_tls_credentials_options.h:253
void set_server_authorization_check_config(grpc_core::RefCountedPtr< grpc_tls_server_authorization_check_config > config)
Definition: grpc_tls_credentials_options.h:261
grpc_ssl_client_certificate_request_type cert_request_type() const
Definition: grpc_tls_credentials_options.h:234
grpc_tls_credential_reload_config * credential_reload_config() const
Definition: grpc_tls_credentials_options.h:240
void set_cert_request_type(const grpc_ssl_client_certificate_request_type type)
Definition: grpc_tls_credentials_options.h:249
grpc_tls_server_authorization_check_config * server_authorization_check_config() const
Definition: grpc_tls_credentials_options.h:244
void set_credential_reload_config(grpc_core::RefCountedPtr< grpc_tls_credential_reload_config > config)
Definition: grpc_tls_credentials_options.h:257
~grpc_tls_credentials_options()
Definition: grpc_tls_credentials_options.h:221
grpc_tls_key_materials_config * key_materials_config() const
Definition: grpc_tls_credentials_options.h:237
TLS key materials config.
Definition: grpc_tls_credentials_options.h:32
void set_version(int version)
Definition: grpc_tls_credentials_options.h:53
grpc_core::InlinedVector< grpc_core::PemKeyCertPair, 1 > PemKeyCertPairList
Definition: grpc_tls_credentials_options.h:35
void add_pem_key_cert_pair(grpc_core::PemKeyCertPair pem_key_cert_pair)
Definition: grpc_tls_credentials_options.h:48
void set_pem_root_certs(grpc_core::UniquePtr< char > pem_root_certs)
Setters for member fields.
Definition: grpc_tls_credentials_options.h:45
const PemKeyCertPairList & pem_key_cert_pair_list() const
Definition: grpc_tls_credentials_options.h:39
const char * pem_root_certs() const
Getters for member fields.
Definition: grpc_tls_credentials_options.h:38
void set_key_materials(grpc_core::UniquePtr< char > pem_root_certs, PemKeyCertPairList pem_key_cert_pair_list)
– gRPC TLS key materials config API implementation.
Definition: grpc_tls_credentials_options.cc:31
int version() const
Definition: grpc_tls_credentials_options.h:42
A struct containing all information necessary to schedule/cancel a server authorization check request...
Definition: grpc_security.h:899
const char * error_details
Definition: grpc_security.h:906
grpc_tls_server_authorization_check_config * config
Definition: grpc_security.h:907
grpc_status_code status
Definition: grpc_security.h:905
TLS server authorization check config.
Definition: grpc_tls_credentials_options.h:139
~grpc_tls_server_authorization_check_config()
Definition: grpc_tls_credentials_options.cc:71
void * context() const
Definition: grpc_tls_credentials_options.h:150
void Cancel(grpc_tls_server_authorization_check_arg *arg) const
Definition: grpc_tls_credentials_options.h:169
int Schedule(grpc_tls_server_authorization_check_arg *arg) const
Definition: grpc_tls_credentials_options.h:153
grpc_tls_server_authorization_check_config(const void *config_user_data, int(*schedule)(void *config_user_data, grpc_tls_server_authorization_check_arg *arg), void(*cancel)(void *config_user_data, grpc_tls_server_authorization_check_arg *arg), void(*destruct)(void *config_user_data))
– gRPC TLS server authorization check API implementation.
Definition: grpc_tls_credentials_options.cc:58
void set_context(void *context)
Definition: grpc_tls_credentials_options.h:151