Go to the documentation of this file.
19 #include <ruby/ruby.h>
83 "grpc_server_credentials",
90 #ifdef RUBY_TYPED_FREE_IMMEDIATELY
91 RUBY_TYPED_FREE_IMMEDIATELY
136 VALUE force_client_auth) {
142 VALUE key_cert = Qnil;
144 long num_key_certs = 0;
147 if (NIL_P(force_client_auth) ||
148 !(force_client_auth == Qfalse || force_client_auth == Qtrue)) {
149 rb_raise(rb_eTypeError,
150 "bad force_client_auth: got:<%s> want: <True|False|nil>",
151 rb_obj_classname(force_client_auth));
154 if (NIL_P(pem_key_certs) ||
TYPE(pem_key_certs) != T_ARRAY) {
155 rb_raise(rb_eTypeError,
"bad pem_key_certs: got:<%s> want: <Array>",
156 rb_obj_classname(pem_key_certs));
159 num_key_certs = RARRAY_LEN(pem_key_certs);
160 if (num_key_certs == 0) {
161 rb_raise(rb_eTypeError,
"bad pem_key_certs: it had no elements");
164 for (
i = 0;
i < num_key_certs;
i++) {
165 key_cert = rb_ary_entry(pem_key_certs,
i);
166 if (key_cert == Qnil) {
167 rb_raise(rb_eTypeError,
168 "could not create a server credential: nil key_cert");
170 }
else if (
TYPE(key_cert) != T_HASH) {
171 rb_raise(rb_eTypeError,
172 "could not create a server credential: want <Hash>, got <%s>",
173 rb_obj_classname(key_cert));
176 rb_raise(rb_eTypeError,
177 "could not create a server credential: want nil private key");
180 rb_raise(rb_eTypeError,
181 "could not create a server credential: want nil cert chain");
186 auth_client =
TYPE(force_client_auth) == T_TRUE
190 for (
i = 0;
i < num_key_certs;
i++) {
191 key_cert = rb_ary_entry(pem_key_certs,
i);
203 NULL, key_cert_pairs, num_key_certs, auth_client, NULL);
206 key_cert_pairs, num_key_certs,
209 xfree(key_cert_pairs);
211 rb_raise(rb_eRuntimeError,
212 "the call to grpc_ssl_server_credentials_create_ex() failed, "
213 "could not create a credentials, see "
214 "https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md for "
static void grpc_rb_server_credentials_free_internal(void *p)
static void grpc_rb_server_credentials_mark(void *p)
#define GRPC_RB_MEMSIZE_UNAVAILABLE
void grpc_ruby_shutdown()
static char * pem_root_certs
#define ALLOC_N(class_name, n)
struct grpc_rb_server_credentials grpc_rb_server_credentials
static VALUE grpc_rb_server_credentials_init(VALUE self, VALUE pem_root_certs, VALUE pem_key_certs, VALUE force_client_auth)
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)
GRPCAPI void grpc_server_credentials_release(grpc_server_credentials *creds)
bool grpc_rb_is_server_credentials(VALUE v)
grpc_channel_wrapper * wrapper
static const rb_data_type_t grpc_rb_server_credentials_data_type
static VALUE grpc_rb_cServerCredentials
static void grpc_rb_server_credentials_free(void *p)
#define ALLOC(class_name)
VALUE grpc_rb_cannot_init_copy(VALUE copy, VALUE self)
@ GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE
static VALUE grpc_rb_server_credentials_alloc(VALUE cls)
static ID id_pem_key_certs
void Init_grpc_server_credentials()
@ GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
grpc_server_credentials * wrapped
grpc_server_credentials * grpc_rb_get_wrapped_server_credentials(VALUE v)
static VALUE sym_private_key
static ID id_pem_root_certs
static VALUE sym_cert_chain
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:59