GRPC C++  1.26.0
tls_credentials_options.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2019 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 GRPCPP_SECURITY_TLS_CREDENTIALS_OPTIONS_H
20 #define GRPCPP_SECURITY_TLS_CREDENTIALS_OPTIONS_H
21 
22 #include <memory>
23 #include <vector>
24 
26 #include <grpc/status.h>
27 #include <grpc/support/log.h>
28 #include <grpcpp/support/config.h>
29 
38 
39 namespace grpc_impl {
40 namespace experimental {
41 
45  public:
46  struct PemKeyCertPair {
49  };
50 
52  const grpc::string pem_root_certs() const { return pem_root_certs_; }
53  const std::vector<PemKeyCertPair>& pem_key_cert_pair_list() const {
54  return pem_key_cert_pair_list_;
55  }
56  int version() const { return version_; }
57 
61  void add_pem_key_cert_pair(const PemKeyCertPair& pem_key_cert_pair);
63  std::vector<PemKeyCertPair> pem_key_cert_pair_list);
64  void set_version(int version) { version_ = version; };
65 
66  private:
67  int version_ = 0;
68  std::vector<PemKeyCertPair> pem_key_cert_pair_list_;
69  grpc::string pem_root_certs_;
70 };
71 
81  public:
87 
92  void* cb_user_data() const;
96 
103  void set_cb_user_data(void* cb_user_data);
104  void set_pem_root_certs(const grpc::string& pem_root_certs);
106  TlsKeyMaterialsConfig::PemKeyCertPair pem_key_cert_pair);
108  const std::shared_ptr<TlsKeyMaterialsConfig>& key_materials_config);
111 
114 
115  private:
117 };
118 
124  virtual ~TlsCredentialReloadInterface() = default;
126  virtual int Schedule(TlsCredentialReloadArg* arg) = 0;
128  virtual void Cancel(TlsCredentialReloadArg* /* arg */) {}
129 };
130 
134  public:
135  TlsCredentialReloadConfig(std::shared_ptr<TlsCredentialReloadInterface>
136  credential_reload_interface);
138 
140  if (credential_reload_interface_ == nullptr) {
141  gpr_log(GPR_ERROR, "credential reload interface is nullptr");
142  if (arg != nullptr) {
144  arg->set_error_details(
145  "the interface of the credential reload config is nullptr");
146  }
147  return 1;
148  }
149  return credential_reload_interface_->Schedule(arg);
150  }
151 
152  void Cancel(TlsCredentialReloadArg* arg) const {
153  if (credential_reload_interface_ == nullptr) {
154  gpr_log(GPR_ERROR, "credential reload interface is nullptr");
155  if (arg != nullptr) {
157  arg->set_error_details(
158  "the interface of the credential reload config is nullptr");
159  }
160  return;
161  }
162  credential_reload_interface_->Cancel(arg);
163  }
164 
166  grpc_tls_credential_reload_config* c_config() const { return c_config_; }
167 
168  private:
170  std::shared_ptr<TlsCredentialReloadInterface> credential_reload_interface_;
171 };
172 
183  public:
189 
192  void* cb_user_data() const;
193  int success() const;
194  grpc::string target_name() const;
195  grpc::string peer_cert() const;
196  grpc_status_code status() const;
197  grpc::string error_details() const;
198 
205  void set_cb_user_data(void* cb_user_data);
206  void set_success(int success);
208  void set_peer_cert(const grpc::string& peer_cert);
211 
214 
215  private:
217 };
218 
230  virtual void Cancel(TlsServerAuthorizationCheckArg* /* arg */) {}
231 };
232 
237  public:
239  std::shared_ptr<TlsServerAuthorizationCheckInterface>
240  server_authorization_check_interface);
242 
244  if (server_authorization_check_interface_ == nullptr) {
245  gpr_log(GPR_ERROR, "server authorization check interface is nullptr");
246  if (arg != nullptr) {
248  arg->set_error_details(
249  "the interface of the server authorization check config is "
250  "nullptr");
251  }
252  return 1;
253  }
254  return server_authorization_check_interface_->Schedule(arg);
255  }
256 
258  if (server_authorization_check_interface_ == nullptr) {
259  gpr_log(GPR_ERROR, "server authorization check interface is nullptr");
260  if (arg != nullptr) {
262  arg->set_error_details(
263  "the interface of the server authorization check config is "
264  "nullptr");
265  }
266  return;
267  }
268  server_authorization_check_interface_->Cancel(arg);
269  }
270 
273  return c_config_;
274  }
275 
276  private:
278  std::shared_ptr<TlsServerAuthorizationCheckInterface>
279  server_authorization_check_interface_;
280 };
281 
287  public:
290  std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config,
291  std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config,
292  std::shared_ptr<TlsServerAuthorizationCheckConfig>
295 
298  return cert_request_type_;
299  }
300  std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config() const {
301  return key_materials_config_;
302  }
303  std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config() const {
304  return credential_reload_config_;
305  }
306  std::shared_ptr<TlsServerAuthorizationCheckConfig>
308  return server_authorization_check_config_;
309  }
311  return c_credentials_options_;
312  }
313 
314  private:
319  grpc_ssl_client_certificate_request_type cert_request_type_;
320  std::shared_ptr<TlsKeyMaterialsConfig> key_materials_config_;
321  std::shared_ptr<TlsCredentialReloadConfig> credential_reload_config_;
322  std::shared_ptr<TlsServerAuthorizationCheckConfig>
323  server_authorization_check_config_;
324  grpc_tls_credentials_options* c_credentials_options_;
325 };
326 
327 } // namespace experimental
328 } // namespace grpc_impl
329 
330 #endif // GRPCPP_SECURITY_TLS_CREDENTIALS_OPTIONS_H
TLS credential reload arguments, wraps grpc_tls_credential_reload_arg.
Definition: tls_credentials_options.h:80
void * cb_user_data() const
Getters for member fields.
Definition: tls_credentials_options.cc:59
void add_pem_key_cert_pair(TlsKeyMaterialsConfig::PemKeyCertPair pem_key_cert_pair)
Definition: tls_credentials_options.cc:88
void OnCredentialReloadDoneCallback()
Calls the C arg's callback function.
Definition: tls_credentials_options.cc:140
TlsCredentialReloadArg(grpc_tls_credential_reload_arg *arg)
TlsCredentialReloadArg does not take ownership of the C arg that is passed to the constructor.
Definition: tls_credentials_options.cc:47
grpc::string error_details() const
Definition: tls_credentials_options.cc:72
grpc_ssl_certificate_config_reload_status status() const
Definition: tls_credentials_options.cc:67
~TlsCredentialReloadArg()
Definition: tls_credentials_options.cc:57
void set_status(grpc_ssl_certificate_config_reload_status status)
Definition: tls_credentials_options.cc:130
void set_key_materials_config(const std::shared_ptr< TlsKeyMaterialsConfig > &key_materials_config)
Definition: tls_credentials_options.cc:101
void set_error_details(const grpc::string &error_details)
Definition: tls_credentials_options.cc:135
void set_pem_root_certs(const grpc::string &pem_root_certs)
Definition: tls_credentials_options.cc:81
bool is_pem_key_cert_pair_list_empty() const
Definition: tls_credentials_options.cc:63
void set_cb_user_data(void *cb_user_data)
Setters for member fields.
Definition: tls_credentials_options.cc:77
TLS credential reloag config, wraps grpc_tls_credential_reload_config.
Definition: tls_credentials_options.h:133
~TlsCredentialReloadConfig()
Definition: tls_credentials_options.cc:158
int Schedule(TlsCredentialReloadArg *arg) const
Definition: tls_credentials_options.h:139
void Cancel(TlsCredentialReloadArg *arg) const
Definition: tls_credentials_options.h:152
grpc_tls_credential_reload_config * c_config() const
Returns a C struct for the credential reload config.
Definition: tls_credentials_options.h:166
TlsCredentialReloadConfig(std::shared_ptr< TlsCredentialReloadInterface > credential_reload_interface)
gRPC TLS credential reload config API implementation
Definition: tls_credentials_options.cc:149
TLS credentials options, wrapper for grpc_tls_credentials_options.
Definition: tls_credentials_options.h:286
~TlsCredentialsOptions()
Definition: tls_credentials_options.cc:277
grpc_tls_credentials_options * c_credentials_options() const
Definition: tls_credentials_options.h:310
TlsCredentialsOptions(grpc_ssl_client_certificate_request_type cert_request_type, std::shared_ptr< TlsKeyMaterialsConfig > key_materials_config, std::shared_ptr< TlsCredentialReloadConfig > credential_reload_config, std::shared_ptr< TlsServerAuthorizationCheckConfig > server_authorization_check_config)
gRPC TLS credential options API implementation
Definition: tls_credentials_options.cc:248
std::shared_ptr< TlsKeyMaterialsConfig > key_materials_config() const
Definition: tls_credentials_options.h:300
std::shared_ptr< TlsCredentialReloadConfig > credential_reload_config() const
Definition: tls_credentials_options.h:303
std::shared_ptr< TlsServerAuthorizationCheckConfig > server_authorization_check_config() const
Definition: tls_credentials_options.h:307
grpc_ssl_client_certificate_request_type cert_request_type() const
Getters for member fields.
Definition: tls_credentials_options.h:297
TLS key materials config, wrapper for grpc_tls_key_materials_config.
Definition: tls_credentials_options.h:44
void set_pem_root_certs(grpc::string pem_root_certs)
Setter for key materials that will be called by the user.
Definition: tls_credentials_options.cc:30
const std::vector< PemKeyCertPair > & pem_key_cert_pair_list() const
Definition: tls_credentials_options.h:53
void add_pem_key_cert_pair(const PemKeyCertPair &pem_key_cert_pair)
Definition: tls_credentials_options.cc:34
int version() const
Definition: tls_credentials_options.h:56
void set_key_materials(grpc::string pem_root_certs, std::vector< PemKeyCertPair > pem_key_cert_pair_list)
Definition: tls_credentials_options.cc:39
void set_version(int version)
Definition: tls_credentials_options.h:64
const grpc::string pem_root_certs() const
Getters for member fields.
Definition: tls_credentials_options.h:52
TLS server authorization check arguments, wraps grpc_tls_server_authorization_check_arg.
Definition: tls_credentials_options.h:182
void * cb_user_data() const
Getters for member fields.
Definition: tls_credentials_options.cc:173
void OnServerAuthorizationCheckDoneCallback()
Calls the C arg's callback function.
Definition: tls_credentials_options.cc:225
grpc::string peer_cert() const
Definition: tls_credentials_options.cc:184
void set_success(int success)
Definition: tls_credentials_options.cc:202
void set_cb_user_data(void *cb_user_data)
Setters for member fields.
Definition: tls_credentials_options.cc:198
int success() const
Definition: tls_credentials_options.cc:177
TlsServerAuthorizationCheckArg(grpc_tls_server_authorization_check_arg *arg)
TlsServerAuthorizationCheckArg does not take ownership of the C arg passed to the constructor.
Definition: tls_credentials_options.cc:161
~TlsServerAuthorizationCheckArg()
Definition: tls_credentials_options.cc:171
grpc_status_code status() const
Definition: tls_credentials_options.cc:189
grpc::string target_name() const
Definition: tls_credentials_options.cc:179
void set_error_details(const grpc::string &error_details)
Definition: tls_credentials_options.cc:220
void set_target_name(const grpc::string &target_name)
Definition: tls_credentials_options.cc:206
void set_peer_cert(const grpc::string &peer_cert)
Definition: tls_credentials_options.cc:211
grpc::string error_details() const
Definition: tls_credentials_options.cc:193
void set_status(grpc_status_code status)
Definition: tls_credentials_options.cc:216
TLS server authorization check config, wraps grps_tls_server_authorization_check_config.
Definition: tls_credentials_options.h:236
TlsServerAuthorizationCheckConfig(std::shared_ptr< TlsServerAuthorizationCheckInterface > server_authorization_check_interface)
gRPC TLS server authorization check config API implementation.
Definition: tls_credentials_options.cc:234
void Cancel(TlsServerAuthorizationCheckArg *arg) const
Definition: tls_credentials_options.h:257
grpc_tls_server_authorization_check_config * c_config() const
Returns C struct for the server authorization check config.
Definition: tls_credentials_options.h:272
int Schedule(TlsServerAuthorizationCheckArg *arg) const
Definition: tls_credentials_options.h:243
~TlsServerAuthorizationCheckConfig()
Definition: tls_credentials_options.cc:245
grpc_status_code
Definition: status.h:26
@ GRPC_STATUS_NOT_FOUND
Some requested entity (e.g., file or directory) was not found.
Definition: status.h:54
grpc_ssl_client_certificate_request_type
Definition: grpc_security_constants.h:59
grpc_ssl_certificate_config_reload_status
Callback results for dynamically loading a SSL certificate config.
Definition: grpc_security_constants.h:53
@ 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.
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm_impl.h:33
std::string string
Definition: config.h:35
An interface that the application derives and uses to instantiate a TlsCredentialReloadConfig instanc...
Definition: tls_credentials_options.h:123
virtual int Schedule(TlsCredentialReloadArg *arg)=0
A callback that invokes the credential reload.
virtual void Cancel(TlsCredentialReloadArg *)
A callback that cancels a credential reload request.
Definition: tls_credentials_options.h:128
grpc::string private_key
Definition: tls_credentials_options.h:47
grpc::string cert_chain
Definition: tls_credentials_options.h:48
An interface that the application derives and uses to instantiate a TlsServerAuthorizationCheckConfig...
Definition: tls_credentials_options.h:225
virtual void Cancel(TlsServerAuthorizationCheckArg *)
A callback that cancels a server authorization check request.
Definition: tls_credentials_options.h:230
virtual int Schedule(TlsServerAuthorizationCheckArg *arg)=0
A callback that invokes the server authorization check.
struct grpc_tls_server_authorization_check_config grpc_tls_server_authorization_check_config
Definition: tls_credentials_options.h:35
struct grpc_tls_credentials_options grpc_tls_credentials_options
Definition: tls_credentials_options.h:37
struct grpc_tls_server_authorization_check_arg grpc_tls_server_authorization_check_arg
Definition: tls_credentials_options.h:33
struct grpc_tls_credential_reload_config grpc_tls_credential_reload_config
Definition: tls_credentials_options.h:31
struct grpc_tls_credential_reload_arg grpc_tls_credential_reload_arg
Definition: tls_credentials_options.h:30