|
|
|
@ -52,22 +52,37 @@ struct fullstack_secure_fixture_data { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
std::string localaddr; |
|
|
|
|
grpc_tls_version tls_version; |
|
|
|
|
ThreadList thd_list; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack( |
|
|
|
|
grpc_channel_args* /*client_args*/, grpc_channel_args* /*server_args*/) { |
|
|
|
|
grpc_channel_args* /*client_args*/, grpc_channel_args* /*server_args*/, |
|
|
|
|
grpc_tls_version tls_version) { |
|
|
|
|
grpc_end2end_test_fixture f; |
|
|
|
|
int port = grpc_pick_unused_port_or_die(); |
|
|
|
|
fullstack_secure_fixture_data* ffd = new fullstack_secure_fixture_data(); |
|
|
|
|
memset(&f, 0, sizeof(f)); |
|
|
|
|
ffd->localaddr = grpc_core::JoinHostPort("localhost", port); |
|
|
|
|
ffd->tls_version = tls_version; |
|
|
|
|
f.fixture_data = ffd; |
|
|
|
|
f.cq = grpc_completion_queue_create_for_next(nullptr); |
|
|
|
|
f.shutdown_cq = grpc_completion_queue_create_for_pluck(nullptr); |
|
|
|
|
return f; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack_tls1_2( |
|
|
|
|
grpc_channel_args* client_args, grpc_channel_args* server_args) { |
|
|
|
|
return chttp2_create_fixture_secure_fullstack(client_args, server_args, |
|
|
|
|
grpc_tls_version::TLS1_2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack_tls1_3( |
|
|
|
|
grpc_channel_args* client_args, grpc_channel_args* server_args) { |
|
|
|
|
return chttp2_create_fixture_secure_fullstack(client_args, server_args, |
|
|
|
|
grpc_tls_version::TLS1_3); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void process_auth_failure(void* state, grpc_auth_context* /*ctx*/, |
|
|
|
|
const grpc_metadata* /*md*/, |
|
|
|
|
size_t /*md_count*/, |
|
|
|
@ -217,6 +232,8 @@ static grpc_channel_credentials* create_tls_channel_credentials( |
|
|
|
|
fullstack_secure_fixture_data* ffd) { |
|
|
|
|
grpc_tls_credentials_options* options = grpc_tls_credentials_options_create(); |
|
|
|
|
options->set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION); |
|
|
|
|
options->set_min_tls_version(ffd->tls_version); |
|
|
|
|
options->set_max_tls_version(ffd->tls_version); |
|
|
|
|
/* Set credential reload config. */ |
|
|
|
|
grpc_tls_credential_reload_config* reload_config = |
|
|
|
|
grpc_tls_credential_reload_config_create(nullptr, client_cred_reload_sync, |
|
|
|
@ -235,8 +252,11 @@ static grpc_channel_credentials* create_tls_channel_credentials( |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Create a TLS server credential.
|
|
|
|
|
static grpc_server_credentials* create_tls_server_credentials() { |
|
|
|
|
static grpc_server_credentials* create_tls_server_credentials( |
|
|
|
|
fullstack_secure_fixture_data* ffd) { |
|
|
|
|
grpc_tls_credentials_options* options = grpc_tls_credentials_options_create(); |
|
|
|
|
options->set_min_tls_version(ffd->tls_version); |
|
|
|
|
options->set_max_tls_version(ffd->tls_version); |
|
|
|
|
/* Set credential reload config. */ |
|
|
|
|
grpc_tls_credential_reload_config* reload_config = |
|
|
|
|
grpc_tls_credential_reload_config_create(nullptr, server_cred_reload_sync, |
|
|
|
@ -278,7 +298,8 @@ static int fail_server_auth_check(grpc_channel_args* server_args) { |
|
|
|
|
|
|
|
|
|
static void chttp2_init_server(grpc_end2end_test_fixture* f, |
|
|
|
|
grpc_channel_args* server_args) { |
|
|
|
|
grpc_server_credentials* ssl_creds = create_tls_server_credentials(); |
|
|
|
|
grpc_server_credentials* ssl_creds = create_tls_server_credentials( |
|
|
|
|
static_cast<fullstack_secure_fixture_data*>(f->fixture_data)); |
|
|
|
|
if (fail_server_auth_check(server_args)) { |
|
|
|
|
grpc_auth_metadata_processor processor = {process_auth_failure, nullptr, |
|
|
|
|
nullptr}; |
|
|
|
@ -289,12 +310,19 @@ static void chttp2_init_server(grpc_end2end_test_fixture* f, |
|
|
|
|
|
|
|
|
|
static grpc_end2end_test_config configs[] = { |
|
|
|
|
/* client sync reload async authz + server sync reload. */ |
|
|
|
|
{"chttp2/simple_ssl_fullstack", |
|
|
|
|
{"chttp2/simple_ssl_fullstack_tls1_2", |
|
|
|
|
FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION | |
|
|
|
|
FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | |
|
|
|
|
FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | |
|
|
|
|
FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER, |
|
|
|
|
"foo.test.google.fr", chttp2_create_fixture_secure_fullstack_tls1_2, |
|
|
|
|
chttp2_init_client, chttp2_init_server, chttp2_tear_down_secure_fullstack}, |
|
|
|
|
{"chttp2/simple_ssl_fullstack_tls1_3", |
|
|
|
|
FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION | |
|
|
|
|
FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | |
|
|
|
|
FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | |
|
|
|
|
FEATURE_MASK_SUPPORTS_AUTHORITY_HEADER, |
|
|
|
|
"foo.test.google.fr", chttp2_create_fixture_secure_fullstack, |
|
|
|
|
"foo.test.google.fr", chttp2_create_fixture_secure_fullstack_tls1_3, |
|
|
|
|
chttp2_init_client, chttp2_init_server, chttp2_tear_down_secure_fullstack}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|