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 
226  virtual ~TlsServerAuthorizationCheckInterface() = default;
228  virtual int Schedule(TlsServerAuthorizationCheckArg* arg) = 0;
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
grpc_ssl_certificate_config_reload_status
Callback results for dynamically loading a SSL certificate config.
Definition: grpc_security_constants.h:53
virtual int Schedule(TlsServerAuthorizationCheckArg *arg)=0
A callback that invokes the server authorization check.
grpc_status_code
Definition: status.h:26
void set_cb_user_data(void *cb_user_data)
Setters for member fields.
TlsCredentialReloadArg(grpc_tls_credential_reload_arg *arg)
TlsCredentialReloadArg does not take ownership of the C arg that is passed to the constructor...
std::string string
Definition: config.h:35
std::shared_ptr< TlsKeyMaterialsConfig > key_materials_config() const
Definition: tls_credentials_options.h:300
struct grpc_tls_credential_reload_arg grpc_tls_credential_reload_arg
Definition: tls_credentials_options.h:30
Definition: grpc_security_constants.h:56
grpc_tls_credentials_options * c_credentials_options() const
Definition: tls_credentials_options.h:310
TlsServerAuthorizationCheckConfig(std::shared_ptr< TlsServerAuthorizationCheckInterface > server_authorization_check_interface)
int Schedule(TlsServerAuthorizationCheckArg *arg) const
Definition: tls_credentials_options.h:243
const grpc::string pem_root_certs() const
Getters for member fields.
Definition: tls_credentials_options.h:52
virtual int Schedule(TlsCredentialReloadArg *arg)=0
A callback that invokes the credential reload.
void Cancel(TlsCredentialReloadArg *arg) const
Definition: tls_credentials_options.h:152
void OnServerAuthorizationCheckDoneCallback()
Calls the C arg&#39;s callback function.
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
Log a message.
void * cb_user_data() const
Getters for member fields.
TLS server authorization check config, wraps grps_tls_server_authorization_check_config.
Definition: tls_credentials_options.h:236
void set_key_materials_config(const std::shared_ptr< TlsKeyMaterialsConfig > &key_materials_config)
void set_target_name(const grpc::string &target_name)
TLS server authorization check arguments, wraps grpc_tls_server_authorization_check_arg.
Definition: tls_credentials_options.h:182
An interface that the application derives and uses to instantiate a TlsCredentialReloadConfig instanc...
Definition: tls_credentials_options.h:123
TLS credentials options, wrapper for grpc_tls_credentials_options.
Definition: tls_credentials_options.h:286
TlsServerAuthorizationCheckArg(grpc_tls_server_authorization_check_arg *arg)
TlsServerAuthorizationCheckArg does not take ownership of the C arg passed to the constructor...
int version() const
Definition: tls_credentials_options.h:56
grpc::string private_key
Definition: tls_credentials_options.h:47
void Cancel(TlsServerAuthorizationCheckArg *arg) const
Definition: tls_credentials_options.h:257
grpc_ssl_client_certificate_request_type cert_request_type() const
Getters for member fields.
Definition: tls_credentials_options.h:297
An interface that the application derives and uses to instantiate a TlsServerAuthorizationCheckConfig...
Definition: tls_credentials_options.h:225
grpc::string cert_chain
Definition: tls_credentials_options.h:48
const std::vector< PemKeyCertPair > & pem_key_cert_pair_list() const
Definition: tls_credentials_options.h:53
TlsCredentialReloadConfig(std::shared_ptr< TlsCredentialReloadInterface > credential_reload_interface)
#define GPR_ERROR
Definition: log.h:57
TLS credential reload arguments, wraps grpc_tls_credential_reload_arg.
Definition: tls_credentials_options.h:80
void add_pem_key_cert_pair(TlsKeyMaterialsConfig::PemKeyCertPair pem_key_cert_pair)
void set_key_materials(grpc::string pem_root_certs, std::vector< PemKeyCertPair > pem_key_cert_pair_list)
void add_pem_key_cert_pair(const PemKeyCertPair &pem_key_cert_pair)
std::shared_ptr< TlsServerAuthorizationCheckConfig > server_authorization_check_config() const
Definition: tls_credentials_options.h:307
virtual void Cancel(TlsCredentialReloadArg *)
A callback that cancels a credential reload request.
Definition: tls_credentials_options.h:128
int Schedule(TlsCredentialReloadArg *arg) const
Definition: tls_credentials_options.h:139
grpc_ssl_client_certificate_request_type
Definition: grpc_security_constants.h:59
void set_pem_root_certs(grpc::string pem_root_certs)
Setter for key materials that will be called by the user.
struct grpc_tls_server_authorization_check_arg grpc_tls_server_authorization_check_arg
Definition: tls_credentials_options.h:33
void set_version(int version)
Definition: tls_credentials_options.h:64
virtual void Cancel(TlsServerAuthorizationCheckArg *)
A callback that cancels a server authorization check request.
Definition: tls_credentials_options.h:230
struct grpc_tls_credential_reload_config grpc_tls_credential_reload_config
Definition: tls_credentials_options.h:31
TLS key materials config, wrapper for grpc_tls_key_materials_config.
Definition: tls_credentials_options.h:44
std::shared_ptr< TlsCredentialReloadConfig > credential_reload_config() const
Definition: tls_credentials_options.h:303
TLS credential reloag config, wraps grpc_tls_credential_reload_config.
Definition: tls_credentials_options.h:133
struct grpc_tls_credentials_options grpc_tls_credentials_options
Definition: tls_credentials_options.h:37
void set_cb_user_data(void *cb_user_data)
Setters for member fields.
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm_impl.h:33
void set_error_details(const grpc::string &error_details)
void set_peer_cert(const grpc::string &peer_cert)
struct grpc_tls_server_authorization_check_config grpc_tls_server_authorization_check_config
Definition: tls_credentials_options.h:35
grpc_tls_credential_reload_config * c_config() const
Returns a C struct for the credential reload config.
Definition: tls_credentials_options.h:166
void set_error_details(const grpc::string &error_details)
void * cb_user_data() const
Getters for member fields.
Some requested entity (e.g., file or directory) was not found.
Definition: status.h:54
void set_status(grpc_ssl_certificate_config_reload_status status)
void set_pem_root_certs(const grpc::string &pem_root_certs)
grpc_ssl_certificate_config_reload_status status() const
grpc_tls_server_authorization_check_config * c_config() const
Returns C struct for the server authorization check config.
Definition: tls_credentials_options.h:272
void OnCredentialReloadDoneCallback()
Calls the C arg&#39;s callback function.
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)