GRPC Core  39.0.0
grpc_security.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 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_GRPC_SECURITY_H
20 #define GRPC_GRPC_SECURITY_H
21 
23 
24 #include <stdbool.h>
25 
26 #include <grpc/grpc.h>
28 #include <grpc/status.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
37 
40  size_t index;
41  const char* name;
43 
45 typedef struct grpc_auth_property {
46  char* name;
47  char* value;
48  size_t value_length;
50 
54 
58 
63 
67  const grpc_auth_context* ctx, const char* name);
68 
72  const grpc_auth_context* ctx);
73 
76  const grpc_auth_context* ctx);
77 
81 
84 
92  const char* name, const char* value,
93  size_t value_length);
94 
97  const char* name,
98  const char* value);
99 
103  grpc_auth_context* ctx, const char* name);
104 
111 
115  size_t capacity);
116 
119 
123 
131 
135 
155  grpc_call_credentials* call_credentials);
156 
164  char** pem_root_certs);
165 
173 
175 typedef struct {
178  const char* private_key;
179 
182  const char* cert_chain;
184 
189 typedef struct {
196  int (*verify_peer_callback)(const char* target_name, const char* peer_pem,
197  void* userdata);
204  void (*verify_peer_destruct)(void* userdata);
206 
209 typedef struct {
216  int (*verify_peer_callback)(const char* target_name, const char* peer_pem,
217  void* userdata);
224  void (*verify_peer_destruct)(void* userdata);
226 
258  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
259  const verify_peer_options* verify_options, void* reserved);
260 
261 /* Creates an SSL credentials object.
262  The security level of the resulting connection is GRPC_PRIVACY_AND_INTEGRITY.
263  - pem_root_certs is the NULL-terminated string containing the PEM encoding
264  of the server root certificates. If this parameter is NULL, the
265  implementation will first try to dereference the file pointed by the
266  GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable, and if that fails,
267  try to get the roots set by grpc_override_ssl_default_roots. Eventually,
268  if all these fail, it will try to get the roots from a well-known place on
269  disk (in the grpc install directory).
270 
271  gRPC has implemented root cache if the underlying OpenSSL library supports
272  it. The gRPC root certificates cache is only applicable on the default
273  root certificates, which is used when this parameter is nullptr. If user
274  provides their own pem_root_certs, when creating an SSL credential object,
275  gRPC would not be able to cache it, and each subchannel will generate a
276  copy of the root store. So it is recommended to avoid providing large room
277  pem with pem_root_certs parameter to avoid excessive memory consumption,
278  particularly on mobile platforms such as iOS.
279  - pem_key_cert_pair is a pointer on the object containing client's private
280  key and certificate chain. This parameter can be NULL if the client does
281  not have such a key/cert pair.
282  - verify_options is an optional verify_peer_options object which holds
283  additional options controlling how peer certificates are verified. For
284  example, you can supply a callback which receives the peer's certificate
285  with which you can do additional verification. Can be NULL, in which
286  case verification will retain default behavior. Any settings in
287  verify_options are copied during this call, so the verify_options
288  object can be released afterwards. */
290  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
291  const grpc_ssl_verify_peer_options* verify_options, void* reserved);
292 
296  grpc_channel_credentials* channel_creds, grpc_call_credentials* call_creds,
297  void* reserved);
298 
304  void* reserved);
305 
310  void* reserved);
311 
313 
321  gpr_timespec token_lifetime,
322  void* reserved);
323 
330  const char* json_string, const char* scopes_string);
331 
339  const char* json_refresh_token, void* reserved);
340 
344  const char* access_token, void* reserved);
345 
348  const char* authorization_token, const char* authority_selector,
349  void* reserved);
350 
357 typedef struct {
358  const char* token_exchange_service_uri; /* Required. */
359  const char* resource; /* Optional. */
360  const char* audience; /* Optional. */
361  const char* scope; /* Optional. */
362  const char* requested_token_type; /* Optional. */
363  const char* subject_token_path; /* Required. */
364  const char* subject_token_type; /* Required. */
365  const char* actor_token_path; /* Optional. */
366  const char* actor_token_type; /* Optional. */
368 
374  const grpc_sts_credentials_options* options, void* reserved);
375 
388  void* user_data, const grpc_metadata* creds_md, size_t num_creds_md,
389  grpc_status_code status, const char* error_details);
390 
393 typedef struct {
395  const char* service_url;
396 
400  const char* method_name;
401 
404 
406  void* reserved;
408 
412 
415  grpc_auth_metadata_context* context);
416 
419 #define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX 4
420 
426 typedef struct {
445  int (*get_metadata)(
446  void* state, grpc_auth_metadata_context context,
447  grpc_credentials_plugin_metadata_cb cb, void* user_data,
449  size_t* num_creds_md, grpc_status_code* status,
450  const char** error_details);
451 
454  char* (*debug_string)(void* state);
455 
457  void (*destroy)(void* state);
458 
460  void* state;
461 
463  const char* type;
465 
470  grpc_security_level min_security_level, void* reserved);
471 
478 
491  const char* pem_root_certs,
492  const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
493  size_t num_key_cert_pairs);
494 
498 
507  void* user_data, grpc_ssl_server_certificate_config** config);
508 
522  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
523  size_t num_key_cert_pairs, int force_client_auth, void* reserved);
524 
530  const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
531  size_t num_key_cert_pairs,
532  grpc_ssl_client_certificate_request_type client_certificate_request,
533  void* reserved);
534 
537 
544  grpc_ssl_client_certificate_request_type client_certificate_request,
545  grpc_ssl_server_certificate_config* certificate_config);
546 
556  grpc_ssl_client_certificate_request_type client_certificate_request,
557  grpc_ssl_server_certificate_config_callback cb, void* user_data);
558 
562 
568 
574  grpc_call_credentials* creds);
575 
588  void* user_data, const grpc_metadata* consumed_md, size_t num_consumed_md,
589  const grpc_metadata* response_md, size_t num_response_md,
590  grpc_status_code status, const char* error_details);
591 
593 typedef struct {
598  void (*process)(void* state, grpc_auth_context* context,
599  const grpc_metadata* md, size_t num_md,
600  grpc_process_auth_metadata_done_cb cb, void* user_data);
601  void (*destroy)(void* state);
602  void* state;
604 
607 
619 
626 
633 
643  grpc_alts_credentials_options* options, const char* service_account);
644 
655 
666  const grpc_alts_credentials_options* options);
667 
677  const grpc_alts_credentials_options* options);
678 
693 
704 
715 
723 
731 
739 
748  const char* private_key,
749  const char* cert_chain);
750 
760 
774  const char* root_certificate, grpc_tls_identity_pairs* pem_key_cert_pairs);
775 
799  const char* private_key_path, const char* identity_certificate_path,
800  const char* root_cert_path, unsigned int refresh_interval_sec);
801 
810 
817 
825  grpc_tls_credentials_options* options, grpc_tls_version min_tls_version);
826 
834  grpc_tls_credentials_options* options, grpc_tls_version max_tls_version);
835 
843 
851 
861 
876 
884  grpc_tls_credentials_options* options, const char* root_cert_name);
885 
895 
904  grpc_tls_credentials_options* options, const char* identity_cert_name);
905 
915 
927  grpc_tls_credentials_options* options, const char* crl_directory);
928 
936  grpc_tls_credentials_options* options, int verify_server_cert);
937 
953  grpc_tls_credentials_options* options, bool send_client_ca_list);
954 
964  /* The target name of the server when the client initiates the connection. */
965  /* This field will be nullptr if on the server side. */
966  const char* target_name;
967  /* The information contained in the certificate chain sent from the peer. */
968  struct peer_info {
969  /* The Common Name field on the peer leaf certificate. */
970  const char* common_name;
971  /* The list of Subject Alternative Names on the peer leaf certificate. */
972  struct san_names {
973  char** uri_names;
975  char** dns_names;
977  char** email_names;
979  char** ip_names;
981  } san_names;
982  /* The raw peer leaf certificate. */
983  const char* peer_cert;
984  /* The raw peer certificate chain. Note that it is not always guaranteed to
985  * get the peer full chain. For more, please refer to
986  * GRPC_X509_PEM_CERT_CHAIN_PROPERTY_NAME defined in file
987  * grpc_security_constants.h.
988  * TODO(ZhenLian): Consider fixing this in the future. */
989  const char* peer_cert_full_chain;
990  /* The verified root cert subject.
991  * This value will only be filled if the cryptographic peer certificate
992  * verification was successful */
994  } peer_info;
996 
1007  grpc_tls_custom_verification_check_request* request, void* callback_arg,
1008  grpc_status_code status, const char* error_details);
1009 
1016 
1024  void* user_data;
1058  int (*verify)(void* user_data,
1061  void* callback_arg, grpc_status_code* sync_status,
1062  char** sync_error_details);
1078  void (*cancel)(void* user_data,
1097  void (*destruct)(void* user_data);
1099 
1108  grpc_tls_certificate_verifier_external* external_verifier);
1109 
1120 
1128 
1136  grpc_tls_certificate_verifier* verifier);
1137 
1148  grpc_tls_certificate_verifier* verifier);
1149 
1162  grpc_tls_credentials_options* options, int check_call_host);
1163 
1177  grpc_tls_on_custom_verification_check_done_cb callback, void* callback_arg,
1178  grpc_status_code* sync_status, char** sync_error_details);
1179 
1190 
1200  grpc_tls_credentials_options* options);
1201 
1210  grpc_tls_credentials_options* options);
1211 
1218 
1225 
1240  grpc_channel_credentials* fallback_credentials);
1241 
1254  grpc_server_credentials* fallback_credentials);
1255 
1263 
1277  const char* authz_policy, grpc_status_code* code,
1278  const char** error_details);
1279 
1295  const char* authz_policy_path, unsigned int refresh_interval_sec,
1296  grpc_status_code* code, const char** error_details);
1297 
1305 
1324  grpc_tls_credentials_options* options, const char* path);
1325 
1326 #ifdef __cplusplus
1327 }
1328 #endif
1329 
1330 #endif /* GRPC_GRPC_SECURITY_H */
grpc_arg
A single argument...
Definition: grpc_types.h:103
grpc_tls_custom_verification_check_request::peer_info::peer_cert
const char * peer_cert
Definition: grpc_security.h:983
grpc_auth_property_iterator::name
const char * name
Definition: grpc_security.h:41
grpc_tls_credentials_options_set_certificate_provider
GRPCAPI void grpc_tls_credentials_options_set_certificate_provider(grpc_tls_credentials_options *options, grpc_tls_certificate_provider *provider)
EXPERIMENTAL API - Subject to change.
grpc_alts_credentials_options_destroy
GRPCAPI void grpc_alts_credentials_options_destroy(grpc_alts_credentials_options *options)
This method destroys a grpc_alts_credentials_options instance by de-allocating all of its occupied me...
grpc_tls_custom_verification_check_request::peer_info::peer_cert_full_chain
const char * peer_cert_full_chain
Definition: grpc_security.h:989
GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX
#define GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX
Maximum number of metadata entries returnable by a credentials plugin via a synchronous return.
Definition: grpc_security.h:419
grpc_call_error
grpc_call_error
Result of a grpc call.
Definition: grpc_types.h:141
grpc_ssl_credentials_create_ex
GRPCAPI grpc_channel_credentials * grpc_ssl_credentials_create_ex(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, const grpc_ssl_verify_peer_options *verify_options, void *reserved)
verify_peer_options::verify_peer_callback_userdata
void * verify_peer_callback_userdata
Arbitrary userdata that will be passed as the last argument to verify_peer_callback.
Definition: grpc_security.h:200
grpc_ssl_server_certificate_config
struct grpc_ssl_server_certificate_config grpc_ssl_server_certificate_config
Server certificate config object holds the server's public certificates and associated private keys,...
Definition: grpc_security.h:476
grpc_credentials_plugin_metadata_cb
void(* grpc_credentials_plugin_metadata_cb)(void *user_data, const grpc_metadata *creds_md, size_t num_creds_md, grpc_status_code status, const char *error_details)
Callback function to be called by the metadata credentials plugin implementation when the metadata is...
Definition: grpc_security.h:387
grpc_tls_identity_pairs_create
GRPCAPI grpc_tls_identity_pairs * grpc_tls_identity_pairs_create()
EXPERIMENTAL API - Subject to change.
grpc_ssl_verify_peer_options
Object that holds additional peer-verification options on a secure channel.
Definition: grpc_security.h:209
grpc_auth_context
struct grpc_auth_context grpc_auth_context
— Authentication Context.
Definition: grpc_security.h:36
grpc_sts_credentials_options::subject_token_path
const char * subject_token_path
Definition: grpc_security.h:363
grpc_tls_certificate_verifier_external::cancel
void(* cancel)(void *user_data, grpc_tls_custom_verification_check_request *request)
A function pointer that cleans up the caller-specified resources when the verifier is still running b...
Definition: grpc_security.h:1078
grpc_tls_credentials_options_set_tls_session_key_log_file_path
GRPCAPI void grpc_tls_credentials_options_set_tls_session_key_log_file_path(grpc_tls_credentials_options *options, const char *path)
— TLS session key logging.
grpc_ssl_pem_key_cert_pair::private_key
const char * private_key
private_key is the NULL-terminated string containing the PEM encoding of the client's private key.
Definition: grpc_security.h:178
grpc_ssl_server_credentials_create_options_using_config
GRPCAPI grpc_ssl_server_credentials_options * grpc_ssl_server_credentials_create_options_using_config(grpc_ssl_client_certificate_request_type client_certificate_request, grpc_ssl_server_certificate_config *certificate_config)
Creates an options object using a certificate config.
grpc_local_server_credentials_create
GRPCAPI grpc_server_credentials * grpc_local_server_credentials_create(grpc_local_connect_type type)
This method creates a local server credential object.
grpc_ssl_verify_peer_options::verify_peer_callback_userdata
void * verify_peer_callback_userdata
Arbitrary userdata that will be passed as the last argument to verify_peer_callback.
Definition: grpc_security.h:220
GRPCAPI
#define GRPCAPI
Definition: port_platform.h:722
grpc_sts_credentials_options::resource
const char * resource
Definition: grpc_security.h:359
grpc_tls_custom_verification_check_request::peer_info::san_names::email_names
char ** email_names
Definition: grpc_security.h:977
grpc_sts_credentials_options
Options for creating STS Oauth Token Exchange credentials following the IETF draft https://tools....
Definition: grpc_security.h:357
grpc_metadata_credentials_plugin::state
void * state
State that will be set as the first parameter of the methods above.
Definition: grpc_security.h:460
grpc_ssl_certificate_config_reload_status
grpc_ssl_certificate_config_reload_status
Callback results for dynamically loading a SSL certificate config.
Definition: grpc_security_constants.h:73
grpc_sts_credentials_options::audience
const char * audience
Definition: grpc_security.h:360
grpc_auth_metadata_context::service_url
const char * service_url
The fully qualifed service url.
Definition: grpc_security.h:395
grpc_google_iam_credentials_create
GRPCAPI grpc_call_credentials * grpc_google_iam_credentials_create(const char *authorization_token, const char *authority_selector, void *reserved)
Creates an IAM credentials object for connecting to Google.
grpc_auth_property_iterator
struct grpc_auth_property_iterator grpc_auth_property_iterator
grpc_tls_credentials_options_set_certificate_verifier
void grpc_tls_credentials_options_set_certificate_verifier(grpc_tls_credentials_options *options, grpc_tls_certificate_verifier *verifier)
EXPERIMENTAL API - Subject to change.
grpc_process_auth_metadata_done_cb
void(* grpc_process_auth_metadata_done_cb)(void *user_data, const grpc_metadata *consumed_md, size_t num_consumed_md, const grpc_metadata *response_md, size_t num_response_md, grpc_status_code status, const char *error_details)
— Auth Metadata Processing —
Definition: grpc_security.h:587
grpc_ssl_server_credentials_options_destroy
GRPCAPI void grpc_ssl_server_credentials_options_destroy(grpc_ssl_server_credentials_options *options)
Destroys a grpc_ssl_server_credentials_options object.
grpc_auth_context_peer_is_authenticated
GRPCAPI int grpc_auth_context_peer_is_authenticated(const grpc_auth_context *ctx)
Returns 1 if the peer is authenticated, 0 otherwise.
grpc_tls_certificate_provider_release
GRPCAPI void grpc_tls_certificate_provider_release(grpc_tls_certificate_provider *provider)
EXPERIMENTAL API - Subject to change.
grpc_tls_custom_verification_check_request::peer_info::common_name
const char * common_name
Definition: grpc_security.h:970
grpc_metadata_credentials_create_from_plugin
GRPCAPI grpc_call_credentials * grpc_metadata_credentials_create_from_plugin(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level, void *reserved)
Creates a credentials object from a plugin with a specified minimum security level.
grpc_tls_identity_pairs_destroy
GRPCAPI void grpc_tls_identity_pairs_destroy(grpc_tls_identity_pairs *pairs)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_options_set_check_call_host
GRPCAPI void grpc_tls_credentials_options_set_check_call_host(grpc_tls_credentials_options *options, int check_call_host)
EXPERIMENTAL API - Subject to change.
grpc_google_compute_engine_credentials_create
GRPCAPI grpc_call_credentials * grpc_google_compute_engine_credentials_create(void *reserved)
Creates a compute engine credentials object for connecting to Google.
grpc_tls_custom_verification_check_request
struct grpc_tls_custom_verification_check_request grpc_tls_custom_verification_check_request
EXPERIMENTAL API - Subject to change.
grpc_call_credentials_release
GRPCAPI void grpc_call_credentials_release(grpc_call_credentials *creds)
Releases a call credentials object.
grpc_tls_identity_pairs_add_pair
GRPCAPI void grpc_tls_identity_pairs_add_pair(grpc_tls_identity_pairs *pairs, const char *private_key, const char *cert_chain)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_create
grpc_channel_credentials * grpc_tls_credentials_create(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_options_watch_root_certs
GRPCAPI void grpc_tls_credentials_options_watch_root_certs(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_options_copy
GRPCAPI grpc_tls_credentials_options * grpc_tls_credentials_options_copy(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_composite_call_credentials_create
GRPCAPI grpc_call_credentials * grpc_composite_call_credentials_create(grpc_call_credentials *creds1, grpc_call_credentials *creds2, void *reserved)
— composite credentials.
grpc_ssl_server_certificate_config_create
GRPCAPI grpc_ssl_server_certificate_config * grpc_ssl_server_certificate_config_create(const char *pem_root_certs, const grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, size_t num_key_cert_pairs)
Creates a grpc_ssl_server_certificate_config object.
grpc_tls_credentials_options_set_max_tls_version
GRPCAPI void grpc_tls_credentials_options_set_max_tls_version(grpc_tls_credentials_options *options, grpc_tls_version max_tls_version)
EXPERIMENTAL API - Subject to change.
grpc_auth_metadata_context_reset
GRPCAPI void grpc_auth_metadata_context_reset(grpc_auth_metadata_context *context)
Releases internal resources held by context.
grpc_tls_on_custom_verification_check_done_cb
void(* grpc_tls_on_custom_verification_check_done_cb)(grpc_tls_custom_verification_check_request *request, void *callback_arg, grpc_status_code status, const char *error_details)
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:1006
grpc_authorization_policy_provider_file_watcher_create
GRPCAPI grpc_authorization_policy_provider * grpc_authorization_policy_provider_file_watcher_create(const char *authz_policy_path, unsigned int refresh_interval_sec, grpc_status_code *code, const char **error_details)
EXPERIMENTAL - Subject to change.
grpc_tls_custom_verification_check_request::peer_info::san_names::dns_names
char ** dns_names
Definition: grpc_security.h:975
grpc_ssl_pem_key_cert_pair::cert_chain
const char * cert_chain
cert_chain is the NULL-terminated string containing the PEM encoding of the client's certificate chai...
Definition: grpc_security.h:182
grpc_tls_credentials_options_set_identity_cert_name
GRPCAPI void grpc_tls_credentials_options_set_identity_cert_name(grpc_tls_credentials_options *options, const char *identity_cert_name)
EXPERIMENTAL API - Subject to change.
grpc_tls_certificate_verifier_cancel
void grpc_tls_certificate_verifier_cancel(grpc_tls_certificate_verifier *verifier, grpc_tls_custom_verification_check_request *request)
EXPERIMENTAL API - Subject to change.
grpc_ssl_session_cache_create_lru
GRPCAPI grpc_ssl_session_cache * grpc_ssl_session_cache_create_lru(size_t capacity)
Create LRU cache for client-side SSL sessions with the given capacity.
grpc_auth_context_release
GRPCAPI void grpc_auth_context_release(grpc_auth_context *context)
Releases the auth context returned from grpc_call_auth_context.
grpc_auth_property
struct grpc_auth_property grpc_auth_property
value, if not NULL, is guaranteed to be NULL terminated.
grpc_server_credentials_set_auth_metadata_processor
GRPCAPI void grpc_server_credentials_set_auth_metadata_processor(grpc_server_credentials *creds, grpc_auth_metadata_processor processor)
grpc_access_token_credentials_create
GRPCAPI grpc_call_credentials * grpc_access_token_credentials_create(const char *access_token, void *reserved)
Creates an Oauth2 Access Token credentials with an access token that was acquired by an out of band m...
grpc_tls_custom_verification_check_request::peer_info::san_names
struct grpc_tls_custom_verification_check_request::peer_info::san_names san_names
grpc_auth_metadata_context::reserved
void * reserved
Reserved for future use.
Definition: grpc_security.h:406
grpc_tls_server_credentials_create
grpc_server_credentials * grpc_tls_server_credentials_create(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_auth_property_iterator_next
const GRPCAPI grpc_auth_property * grpc_auth_property_iterator_next(grpc_auth_property_iterator *it)
Returns NULL when the iterator is at the end.
grpc_tls_custom_verification_check_request::peer_info
Definition: grpc_security.h:968
grpc_ssl_credentials_create
GRPCAPI grpc_channel_credentials * grpc_ssl_credentials_create(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair, const verify_peer_options *verify_options, void *reserved)
Deprecated in favor of grpc_ssl_server_credentials_create_ex.
grpc_insecure_server_credentials_create
GRPCAPI grpc_server_credentials * grpc_insecure_server_credentials_create()
EXPERIMENTAL API - Subject to change.
grpc_service_account_jwt_access_credentials_create
GRPCAPI grpc_call_credentials * grpc_service_account_jwt_access_credentials_create(const char *json_key, gpr_timespec token_lifetime, void *reserved)
Creates a JWT credentials object.
grpc_auth_context_set_peer_identity_property_name
GRPCAPI int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, const char *name)
Sets the property name.
grpc_metadata
A single metadata element.
Definition: grpc_types.h:211
grpc_tls_custom_verification_check_request::peer_info::san_names::uri_names
char ** uri_names
Definition: grpc_security.h:973
grpc_auth_metadata_context::method_name
const char * method_name
The method name of the RPC being called (not fully qualified).
Definition: grpc_security.h:400
grpc_tls_certificate_provider
struct grpc_tls_certificate_provider grpc_tls_certificate_provider
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:722
grpc_ssl_server_credentials_create_ex
GRPCAPI grpc_server_credentials * grpc_ssl_server_credentials_create_ex(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, size_t num_key_cert_pairs, grpc_ssl_client_certificate_request_type client_certificate_request, void *reserved)
Deprecated in favor of grpc_ssl_server_credentials_create_with_options.
grpc_auth_property_iterator::ctx
const grpc_auth_context * ctx
Definition: grpc_security.h:39
grpc_tls_certificate_verifier_external
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:1023
grpc_alts_credentials_client_options_create
GRPCAPI grpc_alts_credentials_options * grpc_alts_credentials_client_options_create(void)
This method creates a grpc ALTS credentials client options instance.
grpc_tls_custom_verification_check_request::peer_info::san_names::ip_names_size
size_t ip_names_size
Definition: grpc_security.h:980
grpc_tls_custom_verification_check_request::target_name
const char * target_name
Definition: grpc_security.h:966
grpc_sts_credentials_create
GRPCAPI grpc_call_credentials * grpc_sts_credentials_create(const grpc_sts_credentials_options *options, void *reserved)
Creates an STS credentials following the STS Token Exchanged specifed in the IETF draft https://tools...
grpc_channel_credentials
struct grpc_channel_credentials grpc_channel_credentials
— grpc_channel_credentials object.
Definition: grpc.h:294
grpc_ssl_server_credentials_create
GRPCAPI grpc_server_credentials * grpc_ssl_server_credentials_create(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, size_t num_key_cert_pairs, int force_client_auth, void *reserved)
Deprecated in favor of grpc_ssl_server_credentials_create_ex.
grpc_sts_credentials_options::actor_token_path
const char * actor_token_path
Definition: grpc_security.h:365
grpc_external_account_credentials_create
GRPCAPI grpc_call_credentials * grpc_external_account_credentials_create(const char *json_string, const char *scopes_string)
Builds External Account credentials.
grpc_max_auth_token_lifetime
GRPCAPI gpr_timespec grpc_max_auth_token_lifetime(void)
grpc_sts_credentials_options::scope
const char * scope
Definition: grpc_security.h:361
grpc_alts_credentials_client_options_add_target_service_account
GRPCAPI void grpc_alts_credentials_client_options_add_target_service_account(grpc_alts_credentials_options *options, const char *service_account)
This method adds a target service account to grpc client's ALTS credentials options instance.
grpc_auth_property::name
char * name
Definition: grpc_security.h:46
grpc_auth_property_iterator
Definition: grpc_security.h:38
grpc_status_code
grpc_status_code
Definition: status.h:28
grpc_tls_certificate_verifier_external::destruct
void(* destruct)(void *user_data)
A function pointer that does some additional destruction work when the verifier is destroyed.
Definition: grpc_security.h:1097
grpc.h
grpc_ssl_roots_override_result
grpc_ssl_roots_override_result
Results for the SSL roots override callback.
Definition: grpc_security_constants.h:66
grpc_call
struct grpc_call grpc_call
A Call represents an RPC.
Definition: grpc_types.h:70
grpc_tls_certificate_verifier_external::user_data
void * user_data
Definition: grpc_security.h:1024
grpc_auth_property::value_length
size_t value_length
Definition: grpc_security.h:48
grpc_tls_credentials_options_set_send_client_ca_list
GRPCAPI void grpc_tls_credentials_options_set_send_client_ca_list(grpc_tls_credentials_options *options, bool send_client_ca_list)
EXPERIMENTAL API - Subject to change.
grpc_insecure_credentials_create
GRPCAPI grpc_channel_credentials * grpc_insecure_credentials_create()
EXPERIMENTAL API - Subject to change.
grpc_tls_certificate_verifier
struct grpc_tls_certificate_verifier grpc_tls_certificate_verifier
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:1015
grpc_alts_server_credentials_create
GRPCAPI grpc_server_credentials * grpc_alts_server_credentials_create(const grpc_alts_credentials_options *options)
This method creates an ALTS server credential object.
grpc_tls_certificate_verifier_external::verify
int(* verify)(void *user_data, grpc_tls_custom_verification_check_request *request, grpc_tls_on_custom_verification_check_done_cb callback, void *callback_arg, grpc_status_code *sync_status, char **sync_error_details)
A function pointer containing the verification logic that will be performed after the TLS handshake i...
Definition: grpc_security.h:1058
grpc_auth_context_add_cstring_property
GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, const char *name, const char *value)
Add a C string property.
grpc_tls_custom_verification_check_request::peer_info::san_names::uri_names_size
size_t uri_names_size
Definition: grpc_security.h:974
grpc_ssl_client_certificate_request_type
grpc_ssl_client_certificate_request_type
Definition: grpc_security_constants.h:79
grpc_tls_version
grpc_tls_version
The TLS versions that are supported by the SSL stack.
Definition: grpc_security_constants.h:146
grpc_metadata_credentials_plugin
grpc_metadata_credentials plugin is an API user provided structure used to create grpc_credentials ob...
Definition: grpc_security.h:426
grpc_call_auth_context
GRPCAPI grpc_auth_context * grpc_call_auth_context(grpc_call *call)
Gets the auth context from the call.
grpc_auth_property::value
char * value
Definition: grpc_security.h:47
grpc_ssl_session_cache
struct grpc_ssl_session_cache grpc_ssl_session_cache
— SSL Session Cache.
Definition: grpc_security.h:110
grpc_composite_channel_credentials_create
GRPCAPI grpc_channel_credentials * grpc_composite_channel_credentials_create(grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds, void *reserved)
Creates a composite channel credentials object.
grpc_sts_credentials_options::token_exchange_service_uri
const char * token_exchange_service_uri
Definition: grpc_security.h:358
verify_peer_options
Deprecated in favor of grpc_ssl_verify_peer_options.
Definition: grpc_security.h:189
grpc_ssl_roots_override_callback
grpc_ssl_roots_override_result(* grpc_ssl_roots_override_callback)(char **pem_root_certs)
Callback for getting the SSL roots override from the application.
Definition: grpc_security.h:163
grpc_auth_property
value, if not NULL, is guaranteed to be NULL terminated.
Definition: grpc_security.h:45
grpc_auth_context_property_iterator
GRPCAPI grpc_auth_property_iterator grpc_auth_context_property_iterator(const grpc_auth_context *ctx)
Iterates over the auth context.
grpc_tls_certificate_verifier_no_op_create
grpc_tls_certificate_verifier * grpc_tls_certificate_verifier_no_op_create()
EXPERIMENTAL API - Subject to change.
grpc_call_set_credentials
GRPCAPI grpc_call_error grpc_call_set_credentials(grpc_call *call, grpc_call_credentials *creds)
— Call specific credentials.
grpc_tls_custom_verification_check_request::peer_info::san_names::ip_names
char ** ip_names
Definition: grpc_security.h:979
grpc_authorization_policy_provider
struct grpc_authorization_policy_provider grpc_authorization_policy_provider
EXPERIMENTAL - Subject to change.
Definition: grpc_security.h:1261
grpc_tls_custom_verification_check_request::peer_info::san_names
Definition: grpc_security.h:972
grpc_tls_credentials_options
struct grpc_tls_credentials_options grpc_tls_credentials_options
— TLS channel/server credentials — It is used for experimental purpose for now and subject to change.
Definition: grpc_security.h:714
grpc_alts_credentials_create
GRPCAPI grpc_channel_credentials * grpc_alts_credentials_create(const grpc_alts_credentials_options *options)
This method creates an ALTS channel credential object.
grpc_tls_certificate_verifier_host_name_create
grpc_tls_certificate_verifier * grpc_tls_certificate_verifier_host_name_create()
EXPERIMENTAL API - Subject to change.
grpc_security_level
grpc_security_level
Definition: grpc_security_constants.h:131
grpc_alts_credentials_server_options_create
GRPCAPI grpc_alts_credentials_options * grpc_alts_credentials_server_options_create(void)
This method creates a grpc ALTS credentials server options instance.
grpc_google_refresh_token_credentials_create
GRPCAPI grpc_call_credentials * grpc_google_refresh_token_credentials_create(const char *json_refresh_token, void *reserved)
Creates an Oauth2 Refresh Token credentials object for connecting to Google.
grpc_metadata_credentials_plugin::type
const char * type
Type of credentials that this plugin is implementing.
Definition: grpc_security.h:463
grpc_tls_credentials_options_set_cert_request_type
GRPCAPI void grpc_tls_credentials_options_set_cert_request_type(grpc_tls_credentials_options *options, grpc_ssl_client_certificate_request_type type)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_options_create
GRPCAPI grpc_tls_credentials_options * grpc_tls_credentials_options_create(void)
EXPERIMENTAL API - Subject to change.
grpc_tls_credentials_options_set_verify_server_cert
GRPCAPI void grpc_tls_credentials_options_set_verify_server_cert(grpc_tls_credentials_options *options, int verify_server_cert)
EXPERIMENTAL API - Subject to change.
grpc_tls_certificate_verifier_verify
int grpc_tls_certificate_verifier_verify(grpc_tls_certificate_verifier *verifier, grpc_tls_custom_verification_check_request *request, grpc_tls_on_custom_verification_check_done_cb callback, void *callback_arg, grpc_status_code *sync_status, char **sync_error_details)
EXPERIMENTAL API - Subject to change.
grpc_ssl_server_credentials_create_options_using_config_fetcher
GRPCAPI grpc_ssl_server_credentials_options * grpc_ssl_server_credentials_create_options_using_config_fetcher(grpc_ssl_client_certificate_request_type client_certificate_request, grpc_ssl_server_certificate_config_callback cb, void *user_data)
Creates an options object using a certificate config fetcher.
grpc_auth_metadata_context::channel_auth_context
const grpc_auth_context * channel_auth_context
The auth_context of the channel which gives the server's identity.
Definition: grpc_security.h:403
grpc_ssl_server_certificate_config_callback
grpc_ssl_certificate_config_reload_status(* grpc_ssl_server_certificate_config_callback)(void *user_data, grpc_ssl_server_certificate_config **config)
Callback to retrieve updated SSL server certificates, private keys, and trusted CAs (for client authe...
Definition: grpc_security.h:506
grpc_tls_identity_pairs
struct grpc_tls_identity_pairs grpc_tls_identity_pairs
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:730
grpc_tls_certificate_verifier_external_create
grpc_tls_certificate_verifier * grpc_tls_certificate_verifier_external_create(grpc_tls_certificate_verifier_external *external_verifier)
EXPERIMENTAL API - Subject to change.
grpc_auth_context_peer_identity
GRPCAPI grpc_auth_property_iterator grpc_auth_context_peer_identity(const grpc_auth_context *ctx)
Gets the peer identity.
grpc_sts_credentials_options::requested_token_type
const char * requested_token_type
Definition: grpc_security.h:362
grpc_authorization_policy_provider_static_data_create
GRPCAPI grpc_authorization_policy_provider * grpc_authorization_policy_provider_static_data_create(const char *authz_policy, grpc_status_code *code, const char **error_details)
EXPERIMENTAL - Subject to change.
grpc_tls_custom_verification_check_request::peer_info::san_names::dns_names_size
size_t dns_names_size
Definition: grpc_security.h:976
grpc_set_ssl_roots_override_callback
GRPCAPI void grpc_set_ssl_roots_override_callback(grpc_ssl_roots_override_callback cb)
Setup a callback to override the default TLS/SSL roots.
grpc_auth_metadata_processor
Pluggable server-side metadata processor object.
Definition: grpc_security.h:593
grpc_security_constants.h
grpc_tls_credentials_options_watch_identity_key_cert_pairs
GRPCAPI void grpc_tls_credentials_options_watch_identity_key_cert_pairs(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_tls_certificate_verifier_release
void grpc_tls_certificate_verifier_release(grpc_tls_certificate_verifier *verifier)
EXPERIMENTAL API - Subject to change.
grpc_auth_context_add_property
GRPCAPI void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name, const char *value, size_t value_length)
– The following auth context methods should only be called by a server metadata
grpc_tls_credentials_options_set_root_cert_name
GRPCAPI void grpc_tls_credentials_options_set_root_cert_name(grpc_tls_credentials_options *options, const char *root_cert_name)
EXPERIMENTAL API - Subject to change.
grpc_tls_custom_verification_check_request
EXPERIMENTAL API - Subject to change.
Definition: grpc_security.h:963
grpc_auth_metadata_context_copy
GRPCAPI void grpc_auth_metadata_context_copy(grpc_auth_metadata_context *from, grpc_auth_metadata_context *to)
Performs a deep copy from from to to.
grpc_ssl_server_credentials_options
struct grpc_ssl_server_credentials_options grpc_ssl_server_credentials_options
Definition: grpc_security.h:535
grpc_tls_credentials_options_set_crl_directory
GRPCAPI void grpc_tls_credentials_options_set_crl_directory(grpc_tls_credentials_options *options, const char *crl_directory)
Deprecated in favor of grpc_tls_credentials_options_set_crl_provider.
grpc_auth_context_peer_identity_property_name
const GRPCAPI char * grpc_auth_context_peer_identity_property_name(const grpc_auth_context *ctx)
Gets the name of the property that indicates the peer identity.
grpc_ssl_session_cache_destroy
GRPCAPI void grpc_ssl_session_cache_destroy(grpc_ssl_session_cache *cache)
Destroy SSL session cache.
grpc_ssl_server_credentials_create_with_options
GRPCAPI grpc_server_credentials * grpc_ssl_server_credentials_create_with_options(grpc_ssl_server_credentials_options *options)
Creates an SSL server_credentials object using the provided options struct.
grpc_tls_credentials_options_set_min_tls_version
GRPCAPI void grpc_tls_credentials_options_set_min_tls_version(grpc_tls_credentials_options *options, grpc_tls_version min_tls_version)
EXPERIMENTAL API - Subject to change.
grpc_google_default_credentials_create
GRPCAPI grpc_channel_credentials * grpc_google_default_credentials_create(grpc_call_credentials *call_credentials)
Creates default credentials to connect to a google gRPC service.
grpc_auth_context_find_properties_by_name
GRPCAPI grpc_auth_property_iterator grpc_auth_context_find_properties_by_name(const grpc_auth_context *ctx, const char *name)
Finds a property in the context.
grpc_sts_credentials_options::actor_token_type
const char * actor_token_type
Definition: grpc_security.h:366
grpc_tls_certificate_provider_file_watcher_create
GRPCAPI grpc_tls_certificate_provider * grpc_tls_certificate_provider_file_watcher_create(const char *private_key_path, const char *identity_certificate_path, const char *root_cert_path, unsigned int refresh_interval_sec)
EXPERIMENTAL API - Subject to change.
grpc_auth_property_iterator::index
size_t index
Definition: grpc_security.h:40
grpc_xds_credentials_create
GRPCAPI grpc_channel_credentials * grpc_xds_credentials_create(grpc_channel_credentials *fallback_credentials)
EXPERIMENTAL API - Subject to change.
grpc_authorization_policy_provider_release
GRPCAPI void grpc_authorization_policy_provider_release(grpc_authorization_policy_provider *provider)
EXPERIMENTAL - Subject to change.
gpr_timespec
Analogous to struct timespec.
Definition: time.h:48
grpc_server_credentials
struct grpc_server_credentials grpc_server_credentials
— grpc_server_credentials object.
Definition: grpc.h:306
grpc_xds_server_credentials_create
GRPCAPI grpc_server_credentials * grpc_xds_server_credentials_create(grpc_server_credentials *fallback_credentials)
EXPERIMENTAL API - Subject to change.
grpc_auth_metadata_context
Context that can be used by metadata credentials plugin in order to create auth related metadata.
Definition: grpc_security.h:393
grpc_sts_credentials_options::subject_token_type
const char * subject_token_type
Definition: grpc_security.h:364
grpc_tls_custom_verification_check_request::peer_info
struct grpc_tls_custom_verification_check_request::peer_info peer_info
grpc_tls_custom_verification_check_request::peer_info::verified_root_cert_subject
const char * verified_root_cert_subject
Definition: grpc_security.h:993
grpc_local_connect_type
grpc_local_connect_type
Type of local connections for which local channel/server credentials will be applied.
Definition: grpc_security_constants.h:143
grpc_tls_certificate_verifier_external
struct grpc_tls_certificate_verifier_external grpc_tls_certificate_verifier_external
EXPERIMENTAL API - Subject to change.
grpc_tls_certificate_provider_static_data_create
GRPCAPI grpc_tls_certificate_provider * grpc_tls_certificate_provider_static_data_create(const char *root_certificate, grpc_tls_identity_pairs *pem_key_cert_pairs)
EXPERIMENTAL API - Subject to change.
grpc_ssl_pem_key_cert_pair
Object that holds a private key / certificate chain pair in PEM format.
Definition: grpc_security.h:175
grpc_tls_custom_verification_check_request::peer_info::san_names::email_names_size
size_t email_names_size
Definition: grpc_security.h:978
status.h
grpc_ssl_session_cache_create_channel_arg
GRPCAPI grpc_arg grpc_ssl_session_cache_create_channel_arg(grpc_ssl_session_cache *cache)
Create a channel arg with the given cache object.
grpc_tls_credentials_options_destroy
GRPCAPI void grpc_tls_credentials_options_destroy(grpc_tls_credentials_options *options)
EXPERIMENTAL API - Subject to change.
grpc_ssl_server_certificate_config_destroy
GRPCAPI void grpc_ssl_server_certificate_config_destroy(grpc_ssl_server_certificate_config *config)
Destroys a grpc_ssl_server_certificate_config object.
grpc_local_credentials_create
GRPCAPI grpc_channel_credentials * grpc_local_credentials_create(grpc_local_connect_type type)
— Local channel/server credentials —
grpc_auth_metadata_processor::state
void * state
Definition: grpc_security.h:602
port_platform.h
grpc_call_credentials
struct grpc_call_credentials grpc_call_credentials
— grpc_call_credentials object.
Definition: grpc_security.h:130
grpc_alts_credentials_options
struct grpc_alts_credentials_options grpc_alts_credentials_options
— ALTS channel/server credentials —
Definition: grpc_security.h:618