diff options
author | Jan Tattermusch <jan.tattermusch@gmail.com> | 2016-02-02 06:39:10 -0800 |
---|---|---|
committer | Jan Tattermusch <jtattermusch@google.com> | 2016-02-02 12:23:42 -0800 |
commit | 660c15b844ffb5496435437379bb8ac45b7ce4bd (patch) | |
tree | f113a63e8cc9bb75e9507477de028ddf794ba7a2 /src/csharp/ext | |
parent | 4d48522f0075884b2b57ff24a65fee76b918e52f (diff) |
add roots.pem as a resource
Diffstat (limited to 'src/csharp/ext')
-rw-r--r-- | src/csharp/ext/grpc_csharp_ext.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c index 26f1537398..8c362cf7c2 100644 --- a/src/csharp/ext/grpc_csharp_ext.c +++ b/src/csharp/ext/grpc_csharp_ext.c @@ -835,6 +835,30 @@ grpcsharp_server_request_call(grpc_server *server, grpc_completion_queue *cq, /* Security */ +static char *default_pem_root_certs = NULL; + +static grpc_ssl_roots_override_result override_ssl_roots_handler( + char **pem_root_certs) { + if (!default_pem_root_certs) { + *pem_root_certs = NULL; + return GRPC_SSL_ROOTS_OVERRIDE_FAIL_PERMANENTLY; + } + *pem_root_certs = gpr_strdup(default_pem_root_certs); + return GRPC_SSL_ROOTS_OVERRIDE_OK; +} + +GPR_EXPORT void GPR_CALLTYPE grpcsharp_override_default_ssl_roots( + const char *pem_root_certs) { + /* + * This currently wastes ~300kB of memory by keeping a copy of roots + * in a static variable, but for desktop/server use, the overhead + * is negligible. In the future, we might want to change the behavior + * for mobile (e.g. Xamarin). + */ + default_pem_root_certs = gpr_strdup(pem_root_certs); + grpc_set_ssl_roots_override_callback(override_ssl_roots_handler); +} + GPR_EXPORT grpc_channel_credentials *GPR_CALLTYPE grpcsharp_ssl_credentials_create(const char *pem_root_certs, const char *key_cert_pair_cert_chain, @@ -917,6 +941,7 @@ GPR_EXPORT grpc_call_credentials *GPR_CALLTYPE grpcsharp_composite_call_credenti return grpc_composite_call_credentials_create(creds1, creds2, NULL); } + /* Metadata credentials plugin */ GPR_EXPORT void GPR_CALLTYPE grpcsharp_metadata_credentials_notify_from_plugin( |