|
|
|
@ -359,6 +359,20 @@ TEST(CredentialsTest, TlsServerAuthorizationCheckConfigCppToC) { |
|
|
|
|
gpr_free(const_cast<char*>(c_arg.peer_cert)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST(CredentialsTest, TlsChannelCredentialsWithDefaultRoots) { |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION); |
|
|
|
|
auto test_server_authorization_check = |
|
|
|
|
std::make_shared<TestTlsServerAuthorizationCheck>(); |
|
|
|
|
auto server_authorization_check_config = |
|
|
|
|
std::make_shared<TlsServerAuthorizationCheckConfig>( |
|
|
|
|
test_server_authorization_check); |
|
|
|
|
options.set_server_authorization_check_config( |
|
|
|
|
server_authorization_check_config); |
|
|
|
|
auto channel_credentials = grpc::experimental::TlsCredentials(options); |
|
|
|
|
GPR_ASSERT(channel_credentials.get() != nullptr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST( |
|
|
|
|
CredentialsTest, |
|
|
|
|
TlsChannelCredentialsWithStaticDataCertificateProviderLoadingRootAndIdentity) { |
|
|
|
@ -374,8 +388,8 @@ TEST( |
|
|
|
|
auto server_authorization_check_config = |
|
|
|
|
std::make_shared<TlsServerAuthorizationCheckConfig>( |
|
|
|
|
test_server_authorization_check); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options( |
|
|
|
|
certificate_provider); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_certificate_provider(certificate_provider); |
|
|
|
|
options.watch_root_certs(); |
|
|
|
|
options.set_root_cert_name(kRootCertName); |
|
|
|
|
options.watch_identity_key_cert_pairs(); |
|
|
|
@ -387,9 +401,6 @@ TEST( |
|
|
|
|
GPR_ASSERT(channel_credentials.get() != nullptr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ChannelCredentials should always have root credential presented.
|
|
|
|
|
// Otherwise the system root certificates will be loaded, which will cause
|
|
|
|
|
// failure in some tests under MacOS/Windows.
|
|
|
|
|
TEST(CredentialsTest, |
|
|
|
|
TlsChannelCredentialsWithStaticDataCertificateProviderLoadingRootOnly) { |
|
|
|
|
auto certificate_provider = |
|
|
|
@ -401,8 +412,8 @@ TEST(CredentialsTest, |
|
|
|
|
test_server_authorization_check); |
|
|
|
|
GPR_ASSERT(certificate_provider != nullptr); |
|
|
|
|
GPR_ASSERT(certificate_provider->c_provider() != nullptr); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options( |
|
|
|
|
certificate_provider); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_certificate_provider(certificate_provider); |
|
|
|
|
options.watch_root_certs(); |
|
|
|
|
options.set_root_cert_name(kRootCertName); |
|
|
|
|
options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION); |
|
|
|
@ -412,13 +423,39 @@ TEST(CredentialsTest, |
|
|
|
|
GPR_ASSERT(channel_credentials.get() != nullptr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST( |
|
|
|
|
CredentialsTest, |
|
|
|
|
TlsChannelCredentialsWithDefaultRootsAndStaticDataCertificateProviderLoadingIdentityOnly) { |
|
|
|
|
experimental::IdentityKeyCertPair key_cert_pair; |
|
|
|
|
key_cert_pair.private_key = kIdentityCertPrivateKey; |
|
|
|
|
key_cert_pair.certificate_chain = kIdentityCertContents; |
|
|
|
|
std::vector<experimental::IdentityKeyCertPair> identity_key_cert_pairs; |
|
|
|
|
identity_key_cert_pairs.emplace_back(key_cert_pair); |
|
|
|
|
auto certificate_provider = |
|
|
|
|
std::make_shared<StaticDataCertificateProvider>(identity_key_cert_pairs); |
|
|
|
|
auto test_server_authorization_check = |
|
|
|
|
std::make_shared<TestTlsServerAuthorizationCheck>(); |
|
|
|
|
auto server_authorization_check_config = |
|
|
|
|
std::make_shared<TlsServerAuthorizationCheckConfig>( |
|
|
|
|
test_server_authorization_check); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_certificate_provider(certificate_provider); |
|
|
|
|
options.watch_identity_key_cert_pairs(); |
|
|
|
|
options.set_identity_cert_name(kIdentityCertName); |
|
|
|
|
options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION); |
|
|
|
|
options.set_server_authorization_check_config( |
|
|
|
|
server_authorization_check_config); |
|
|
|
|
auto channel_credentials = grpc::experimental::TlsCredentials(options); |
|
|
|
|
GPR_ASSERT(channel_credentials.get() != nullptr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST( |
|
|
|
|
CredentialsTest, |
|
|
|
|
TlsChannelCredentialsWithFileWatcherCertificateProviderLoadingRootAndIdentity) { |
|
|
|
|
auto certificate_provider = std::make_shared<FileWatcherCertificateProvider>( |
|
|
|
|
SERVER_KEY_PATH, SERVER_CERT_PATH, CA_CERT_PATH, 1); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options( |
|
|
|
|
certificate_provider); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_certificate_provider(certificate_provider); |
|
|
|
|
options.watch_root_certs(); |
|
|
|
|
options.set_root_cert_name(kRootCertName); |
|
|
|
|
options.watch_identity_key_cert_pairs(); |
|
|
|
@ -435,15 +472,12 @@ TEST( |
|
|
|
|
GPR_ASSERT(channel_credentials.get() != nullptr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ChannelCredentials should always have root credential presented.
|
|
|
|
|
// Otherwise the system root certificates will be loaded, which will cause
|
|
|
|
|
// failure in some tests under MacOS/Windows.
|
|
|
|
|
TEST(CredentialsTest, |
|
|
|
|
TlsChannelCredentialsWithFileWatcherCertificateProviderLoadingRootOnly) { |
|
|
|
|
auto certificate_provider = |
|
|
|
|
std::make_shared<FileWatcherCertificateProvider>(CA_CERT_PATH, 1); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options( |
|
|
|
|
certificate_provider); |
|
|
|
|
grpc::experimental::TlsChannelCredentialsOptions options; |
|
|
|
|
options.set_certificate_provider(certificate_provider); |
|
|
|
|
options.watch_root_certs(); |
|
|
|
|
options.set_root_cert_name(kRootCertName); |
|
|
|
|
options.set_server_verification_option(GRPC_TLS_SERVER_VERIFICATION); |
|
|
|
|