| 
					
				 | 
			
			
				@@ -406,6 +406,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) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -421,8 +435,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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -434,9 +448,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 = 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -448,8 +459,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); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -459,13 +470,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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -482,15 +519,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); 
			 |