Go to the documentation of this file.
22 #include <gtest/gtest.h>
107 if (server_args ==
nullptr)
return 0;
117 #define SERVER_INIT_NAME(REQUEST_TYPE) \
118 chttp2_init_server_simple_ssl_secure_fullstack_##REQUEST_TYPE
120 #define SERVER_INIT(REQUEST_TYPE) \
121 static void SERVER_INIT_NAME(REQUEST_TYPE)( \
122 grpc_end2end_test_fixture * f, grpc_channel_args * server_args) { \
123 grpc_ssl_pem_key_cert_pair pem_cert_key_pair; \
124 if (!test_server1_key_id.empty()) { \
125 pem_cert_key_pair.private_key = test_server1_key_id.c_str(); \
126 pem_cert_key_pair.cert_chain = test_server1_cert; \
128 pem_cert_key_pair.private_key = test_server1_key; \
129 pem_cert_key_pair.cert_chain = test_server1_cert; \
131 grpc_server_credentials* ssl_creds = \
132 grpc_ssl_server_credentials_create_ex( \
133 test_root_cert, &pem_cert_key_pair, 1, REQUEST_TYPE, NULL); \
134 if (fail_server_auth_check(server_args)) { \
135 grpc_auth_metadata_processor processor = {process_auth_failure, NULL, \
137 grpc_server_credentials_set_auth_metadata_processor(ssl_creds, \
140 chttp2_init_server_secure_fullstack(f, server_args, ssl_creds); \
149 #define CLIENT_INIT_NAME(cert_type) \
150 chttp2_init_client_simple_ssl_secure_fullstack_##cert_type
154 #define CLIENT_INIT(cert_type) \
155 static void CLIENT_INIT_NAME(cert_type)(grpc_end2end_test_fixture * f, \
156 grpc_channel_args * client_args) { \
157 grpc_channel_credentials* ssl_creds = NULL; \
158 grpc_ssl_pem_key_cert_pair self_signed_client_key_cert_pair = { \
159 test_self_signed_client_key, test_self_signed_client_cert}; \
160 grpc_ssl_pem_key_cert_pair signed_client_key_cert_pair = { \
161 test_signed_client_key, test_signed_client_cert}; \
162 grpc_ssl_pem_key_cert_pair bad_client_key_cert_pair = { \
163 test_self_signed_client_key, test_signed_client_cert}; \
164 grpc_ssl_pem_key_cert_pair* key_cert_pair = NULL; \
165 switch (cert_type) { \
167 key_cert_pair = &self_signed_client_key_cert_pair; \
170 key_cert_pair = &signed_client_key_cert_pair; \
172 case BAD_CERT_PAIR: \
173 key_cert_pair = &bad_client_key_cert_pair; \
178 ssl_creds = grpc_ssl_credentials_create(test_root_cert, key_cert_pair, \
180 grpc_arg ssl_name_override = { \
182 const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG), \
183 {const_cast<char*>("foo.test.google.fr")}}; \
184 grpc_channel_args* new_client_args = \
185 grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); \
186 chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds); \
188 grpc_core::ExecCtx exec_ctx; \
189 grpc_channel_args_destroy(new_client_args); \
198 #define TEST_NAME(enum_name, cert_type, result) \
199 "chttp2/ssl_" #enum_name "_" #cert_type "_" #result "_"
203 #define SSL_TEST(request_type, cert_type, result) \
205 {TEST_NAME(request_type, cert_type, result), \
206 FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION | \
207 FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | \
208 FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL, \
209 "foo.test.google.fr", \
210 chttp2_create_fixture_secure_fullstack, \
211 CLIENT_INIT_NAME(cert_type), \
212 SERVER_INIT_NAME(request_type), \
213 chttp2_tear_down_secure_fullstack}, \
281 if (!f->server)
return;
290 if (!f->client)
return;
357 #ifndef OPENSSL_IS_BORINGSSL
359 TEST_P(H2SslCertTest, SimpleRequestBodyUseEngine) {
374 int main(
int argc,
char** argv) {
377 char* roots_filename;
382 gpr_tmpfile(
"chttp2_simple_ssl_cert_fullstack_test", &roots_filename);
395 remove(roots_filename);
static void process_auth_failure(void *state, grpc_auth_context *, const grpc_metadata *, size_t, grpc_process_auth_metadata_done_cb cb, void *user_data)
gpr_timespec grpc_timeout_seconds_to_deadline(int64_t time_s)
@ GRPC_STATUS_UNAUTHENTICATED
return memset(p, 0, total)
struct grpc_op::grpc_op_data::grpc_op_send_initial_metadata send_initial_metadata
static void end_test(grpc_end2end_test_fixture *f)
int main(int argc, char **argv)
GPRAPI void gpr_free(void *ptr)
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)
GRPCAPI grpc_server * grpc_server_create(const grpc_channel_args *args, void *reserved)
@ GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY
FILE * gpr_tmpfile(const char *prefix, char **tmp_filename)
GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved)
grpc_end2end_test_config config
#define CLIENT_INIT(cert_type)
grpc_end2end_test_fixture fixture_
#define SSL_TEST(request_type, cert_type, result)
static gpr_timespec n_seconds_time(int n)
#define FAIL_AUTH_CHECK_SERVER_ARG_NAME
union grpc_op::grpc_op_data data
@ GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY
static void simple_request_body(grpc_end2end_test_fixture f, test_result expected_result)
struct grpc::testing::grpc_end2end_test_config_wrapper grpc_end2end_test_config_wrapper
static void chttp2_init_client_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *client_args, grpc_channel_credentials *creds)
static gpr_timespec five_seconds_time(void)
#define GRPC_INITIAL_METADATA_WAIT_FOR_READY
static void shutdown_server(grpc_end2end_test_fixture *f)
GRPCAPI void grpc_server_credentials_release(grpc_server_credentials *creds)
GRPCAPI int grpc_server_add_http2_port(grpc_server *server, const char *addr, grpc_server_credentials *creds)
GRPCAPI void grpc_call_unref(grpc_call *call)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
void cq_verifier_destroy(cq_verifier *v)
struct fullstack_secure_fixture_data fullstack_secure_fixture_data
struct grpc_call grpc_call
std::string JoinHostPort(absl::string_view host, int port)
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
cq_verifier * cq_verifier_create(grpc_completion_queue *cq)
static std::string test_server1_key_id
static int fail_server_auth_check(grpc_channel_args *server_args)
INSTANTIATE_TEST_SUITE_P(HistogramTestCases, HistogramTest, ::testing::Range< int >(0, GRPC_STATS_HISTOGRAM_COUNT))
GRPCAPI void grpc_server_destroy(grpc_server *server)
#define CQ_EXPECT_COMPLETION(v, tag, success)
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
int grpc_pick_unused_port_or_die(void)
#define GPR_GLOBAL_CONFIG_SET(name, value)
static grpc_end2end_test_config_wrapper configs[]
static void * tag(intptr_t t)
GRPCAPI void grpc_channel_credentials_release(grpc_channel_credentials *creds)
GRPCAPI grpc_call * grpc_channel_create_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *completion_queue, grpc_slice method, const grpc_slice *host, gpr_timespec deadline, void *reserved)
GRPCAPI grpc_channel * grpc_channel_create(const char *target, grpc_channel_credentials *creds, const grpc_channel_args *args)
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
static void chttp2_init_server_secure_fullstack(grpc_end2end_test_fixture *f, grpc_channel_args *server_args, grpc_server_credentials *server_creds)
#define GRPC_PROPAGATE_DEFAULTS
@ GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY
GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq)
@ GRPC_OP_SEND_INITIAL_METADATA
@ GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE
UniquePtr< SSL_SESSION > ret
GRPCAPI void grpc_server_shutdown_and_notify(grpc_server *server, grpc_completion_queue *cq, void *tag)
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved)
void cq_verify(cq_verifier *v, int timeout_sec)
static const ParamType & GetParam()
GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue *cq)
GRPCAPI void grpc_channel_destroy(grpc_channel *channel)
#define SERVER_INIT(REQUEST_TYPE)
const char test_root_cert[]
TEST_P(HistogramTest, IncHistogram)
@ GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
GRPCAPI grpc_completion_queue * grpc_completion_queue_create_for_next(void *reserved)
internal::ParamGenerator< typename std::iterator_traits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
grpc_completion_type type
GRPCAPI void grpc_init(void)
GRPCAPI void grpc_server_start(grpc_server *server)
const char test_server1_key[]
void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f)
GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, size_t nops, void *tag, void *reserved)
GRPCAPI void grpc_shutdown(void)
static void drain_cq(grpc_completion_queue *cq)
static grpc_completion_queue * cq
OPENSSL_EXPORT pem_password_cb * cb
static void shutdown_client(grpc_end2end_test_fixture *f)
static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(grpc_channel_args *, grpc_channel_args *)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:10