|  | @@ -214,6 +214,28 @@ static VALUE grpc_rb_call_get_peer(VALUE self) {
 | 
	
		
			
				|  |  |    return res;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* Called to obtain the x509 cert of an authenticated peer. */
 | 
	
		
			
				|  |  | +static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
 | 
	
		
			
				|  |  | +  grpc_call *call = NULL;
 | 
	
		
			
				|  |  | +  VALUE res = Qnil;
 | 
	
		
			
				|  |  | +  grpc_auth_context *ctx = NULL;
 | 
	
		
			
				|  |  | +  // char *peer_cert = NULL;
 | 
	
		
			
				|  |  | +  TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ctx = grpc_call_auth_context(call);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  grpc_auth_property_iterator it =
 | 
	
		
			
				|  |  | +      grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
 | 
	
		
			
				|  |  | +  const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
 | 
	
		
			
				|  |  | +  if (prop == NULL) {
 | 
	
		
			
				|  |  | +    return Qnil;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  res = rb_str_new2(prop->value);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  return res;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /*
 | 
	
		
			
				|  |  |    call-seq:
 | 
	
		
			
				|  |  |    status = call.status
 | 
	
	
		
			
				|  | @@ -861,6 +883,7 @@ void Init_grpc_call() {
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "run_batch", grpc_rb_call_run_batch, 4);
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "cancel", grpc_rb_call_cancel, 0);
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "peer", grpc_rb_call_get_peer, 0);
 | 
	
		
			
				|  |  | +  rb_define_method(grpc_rb_cCall, "peer_cert", grpc_rb_call_get_peer_cert, 0);
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "status", grpc_rb_call_get_status, 0);
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "status=", grpc_rb_call_set_status, 1);
 | 
	
		
			
				|  |  |    rb_define_method(grpc_rb_cCall, "metadata", grpc_rb_call_get_metadata, 0);
 |