xds: Enable deprecation warnings

The security code referenced fields removed from gRFC A29 before it was
finalized.

Note that this fixes a bug in CommonTlsContextUtil where
CombinedValidationContext was not checked. I believe this was the only
location with such a bug as I audited all non-test usages of
has/getValidationContext() and confirmed they have have a corresponding
has/getCombinedValidationContext().
This commit is contained in:
Eric Anderson 2025-04-11 08:25:21 -07:00 committed by GitHub
parent f79ab2f16f
commit 65d0bb8a4d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 116 additions and 253 deletions

View File

@ -133,8 +133,6 @@ tasks.named("checkstyleThirdparty").configure {
tasks.named("compileJava").configure { tasks.named("compileJava").configure {
it.options.compilerArgs += [ it.options.compilerArgs += [
// TODO: remove
"-Xlint:-deprecation",
// only has AutoValue annotation processor // only has AutoValue annotation processor
"-Xlint:-processing", "-Xlint:-processing",
] ]

View File

@ -673,7 +673,7 @@ final class ClusterResolverLoadBalancer extends LoadBalancer {
resolutionResult.getAddressesOrError(); resolutionResult.getAddressesOrError();
if (addressesOrError.hasValue()) { if (addressesOrError.hasValue()) {
backoffPolicy = null; // reset backoff sequence if succeeded backoffPolicy = null; // reset backoff sequence if succeeded
for (EquivalentAddressGroup eag : resolutionResult.getAddresses()) { for (EquivalentAddressGroup eag : addressesOrError.getValue()) {
// No weight attribute is attached, all endpoint-level LB policy should be able // No weight attribute is attached, all endpoint-level LB policy should be able
// to handle such it. // to handle such it.
String localityName = localityName(LOGICAL_DNS_CLUSTER_LOCALITY); String localityName = localityName(LOGICAL_DNS_CLUSTER_LOCALITY);

View File

@ -276,8 +276,13 @@ final class RbacFilter implements Filter {
return createSourceIpMatcher(principal.getDirectRemoteIp()); return createSourceIpMatcher(principal.getDirectRemoteIp());
case REMOTE_IP: case REMOTE_IP:
return createSourceIpMatcher(principal.getRemoteIp()); return createSourceIpMatcher(principal.getRemoteIp());
case SOURCE_IP: case SOURCE_IP: {
return createSourceIpMatcher(principal.getSourceIp()); // gRFC A41 has identical handling of source_ip as remote_ip and direct_remote_ip and
// pre-dates the deprecation.
@SuppressWarnings("deprecation")
CidrRange sourceIp = principal.getSourceIp();
return createSourceIpMatcher(sourceIp);
}
case HEADER: case HEADER:
return parseHeaderMatcher(principal.getHeader()); return parseHeaderMatcher(principal.getHeader());
case NOT_ID: case NOT_ID:

View File

@ -450,15 +450,6 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
throw new ResourceInvalidException( throw new ResourceInvalidException(
"common-tls-context with validation_context_sds_secret_config is not supported"); "common-tls-context with validation_context_sds_secret_config is not supported");
} }
if (commonTlsContext.hasValidationContextCertificateProvider()) {
throw new ResourceInvalidException(
"common-tls-context with validation_context_certificate_provider is not supported");
}
if (commonTlsContext.hasValidationContextCertificateProviderInstance()) {
throw new ResourceInvalidException(
"common-tls-context with validation_context_certificate_provider_instance is not"
+ " supported");
}
String certInstanceName = getIdentityCertInstanceName(commonTlsContext); String certInstanceName = getIdentityCertInstanceName(commonTlsContext);
if (certInstanceName == null) { if (certInstanceName == null) {
if (server) { if (server) {
@ -473,10 +464,6 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
throw new ResourceInvalidException( throw new ResourceInvalidException(
"tls_certificate_provider_instance is unset"); "tls_certificate_provider_instance is unset");
} }
if (commonTlsContext.hasTlsCertificateCertificateProvider()) {
throw new ResourceInvalidException(
"tls_certificate_provider_instance is unset");
}
} else if (certProviderInstances == null || !certProviderInstances.contains(certInstanceName)) { } else if (certProviderInstances == null || !certProviderInstances.contains(certInstanceName)) {
throw new ResourceInvalidException( throw new ResourceInvalidException(
"CertificateProvider instance name '" + certInstanceName "CertificateProvider instance name '" + certInstanceName
@ -505,7 +492,9 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
.getDefaultValidationContext(); .getDefaultValidationContext();
} }
if (certificateValidationContext != null) { if (certificateValidationContext != null) {
if (certificateValidationContext.getMatchSubjectAltNamesCount() > 0 && server) { @SuppressWarnings("deprecation") // gRFC A29 predates match_typed_subject_alt_names
int matchSubjectAltNamesCount = certificateValidationContext.getMatchSubjectAltNamesCount();
if (matchSubjectAltNamesCount > 0 && server) {
throw new ResourceInvalidException( throw new ResourceInvalidException(
"match_subject_alt_names only allowed in upstream_tls_context"); "match_subject_alt_names only allowed in upstream_tls_context");
} }
@ -536,8 +525,6 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
private static String getIdentityCertInstanceName(CommonTlsContext commonTlsContext) { private static String getIdentityCertInstanceName(CommonTlsContext commonTlsContext) {
if (commonTlsContext.hasTlsCertificateProviderInstance()) { if (commonTlsContext.hasTlsCertificateProviderInstance()) {
return commonTlsContext.getTlsCertificateProviderInstance().getInstanceName(); return commonTlsContext.getTlsCertificateProviderInstance().getInstanceName();
} else if (commonTlsContext.hasTlsCertificateCertificateProviderInstance()) {
return commonTlsContext.getTlsCertificateCertificateProviderInstance().getInstanceName();
} }
return null; return null;
} }
@ -556,10 +543,6 @@ class XdsClusterResource extends XdsResourceType<CdsUpdate> {
.hasCaCertificateProviderInstance()) { .hasCaCertificateProviderInstance()) {
return combinedCertificateValidationContext.getDefaultValidationContext() return combinedCertificateValidationContext.getDefaultValidationContext()
.getCaCertificateProviderInstance().getInstanceName(); .getCaCertificateProviderInstance().getInstanceName();
} else if (combinedCertificateValidationContext
.hasValidationContextCertificateProviderInstance()) {
return combinedCertificateValidationContext
.getValidationContextCertificateProviderInstance().getInstanceName();
} }
} }
return null; return null;

View File

@ -451,8 +451,7 @@ class XdsRouteConfigureResource extends XdsResourceType<RdsUpdate> {
config.getHeader(); config.getHeader();
Pattern regEx = null; Pattern regEx = null;
String regExSubstitute = null; String regExSubstitute = null;
if (headerCfg.hasRegexRewrite() && headerCfg.getRegexRewrite().hasPattern() if (headerCfg.hasRegexRewrite() && headerCfg.getRegexRewrite().hasPattern()) {
&& headerCfg.getRegexRewrite().getPattern().hasGoogleRe2()) {
regEx = Pattern.compile(headerCfg.getRegexRewrite().getPattern().getRegex()); regEx = Pattern.compile(headerCfg.getRegexRewrite().getPattern().getRegex());
regExSubstitute = headerCfg.getRegexRewrite().getSubstitution(); regExSubstitute = headerCfg.getRegexRewrite().getSubstitution();
} }

View File

@ -26,9 +26,12 @@ public final class MatcherParser {
io.envoyproxy.envoy.config.route.v3.HeaderMatcher proto) { io.envoyproxy.envoy.config.route.v3.HeaderMatcher proto) {
switch (proto.getHeaderMatchSpecifierCase()) { switch (proto.getHeaderMatchSpecifierCase()) {
case EXACT_MATCH: case EXACT_MATCH:
@SuppressWarnings("deprecation") // gRFC A63: support indefinitely
String exactMatch = proto.getExactMatch();
return Matchers.HeaderMatcher.forExactValue( return Matchers.HeaderMatcher.forExactValue(
proto.getName(), proto.getExactMatch(), proto.getInvertMatch()); proto.getName(), exactMatch, proto.getInvertMatch());
case SAFE_REGEX_MATCH: case SAFE_REGEX_MATCH:
@SuppressWarnings("deprecation") // gRFC A63: support indefinitely
String rawPattern = proto.getSafeRegexMatch().getRegex(); String rawPattern = proto.getSafeRegexMatch().getRegex();
Pattern safeRegExMatch; Pattern safeRegExMatch;
try { try {
@ -49,14 +52,20 @@ public final class MatcherParser {
return Matchers.HeaderMatcher.forPresent( return Matchers.HeaderMatcher.forPresent(
proto.getName(), proto.getPresentMatch(), proto.getInvertMatch()); proto.getName(), proto.getPresentMatch(), proto.getInvertMatch());
case PREFIX_MATCH: case PREFIX_MATCH:
@SuppressWarnings("deprecation") // gRFC A63: support indefinitely
String prefixMatch = proto.getPrefixMatch();
return Matchers.HeaderMatcher.forPrefix( return Matchers.HeaderMatcher.forPrefix(
proto.getName(), proto.getPrefixMatch(), proto.getInvertMatch()); proto.getName(), prefixMatch, proto.getInvertMatch());
case SUFFIX_MATCH: case SUFFIX_MATCH:
@SuppressWarnings("deprecation") // gRFC A63: support indefinitely
String suffixMatch = proto.getSuffixMatch();
return Matchers.HeaderMatcher.forSuffix( return Matchers.HeaderMatcher.forSuffix(
proto.getName(), proto.getSuffixMatch(), proto.getInvertMatch()); proto.getName(), suffixMatch, proto.getInvertMatch());
case CONTAINS_MATCH: case CONTAINS_MATCH:
@SuppressWarnings("deprecation") // gRFC A63: support indefinitely
String containsMatch = proto.getContainsMatch();
return Matchers.HeaderMatcher.forContains( return Matchers.HeaderMatcher.forContains(
proto.getName(), proto.getContainsMatch(), proto.getInvertMatch()); proto.getName(), containsMatch, proto.getInvertMatch());
case STRING_MATCH: case STRING_MATCH:
return Matchers.HeaderMatcher.forString( return Matchers.HeaderMatcher.forString(
proto.getName(), parseStringMatcher(proto.getStringMatch()), proto.getInvertMatch()); proto.getName(), parseStringMatcher(proto.getStringMatch()), proto.getInvertMatch());

View File

@ -18,7 +18,6 @@ package io.grpc.xds.internal.security;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext;
/** Class for utility functions for {@link CommonTlsContext}. */ /** Class for utility functions for {@link CommonTlsContext}. */
public final class CommonTlsContextUtil { public final class CommonTlsContextUtil {
@ -29,22 +28,8 @@ public final class CommonTlsContextUtil {
if (commonTlsContext == null) { if (commonTlsContext == null) {
return false; return false;
} }
return hasIdentityCertificateProviderInstance(commonTlsContext)
|| hasCertProviderValidationContext(commonTlsContext);
}
private static boolean hasCertProviderValidationContext(CommonTlsContext commonTlsContext) {
if (commonTlsContext.hasCombinedValidationContext()) {
CombinedCertificateValidationContext combinedCertificateValidationContext =
commonTlsContext.getCombinedValidationContext();
return combinedCertificateValidationContext.hasValidationContextCertificateProviderInstance();
}
return hasValidationProviderInstance(commonTlsContext);
}
private static boolean hasIdentityCertificateProviderInstance(CommonTlsContext commonTlsContext) {
return commonTlsContext.hasTlsCertificateProviderInstance() return commonTlsContext.hasTlsCertificateProviderInstance()
|| commonTlsContext.hasTlsCertificateCertificateProviderInstance(); || hasValidationProviderInstance(commonTlsContext);
} }
private static boolean hasValidationProviderInstance(CommonTlsContext commonTlsContext) { private static boolean hasValidationProviderInstance(CommonTlsContext commonTlsContext) {
@ -52,7 +37,9 @@ public final class CommonTlsContextUtil {
.hasCaCertificateProviderInstance()) { .hasCaCertificateProviderInstance()) {
return true; return true;
} }
return commonTlsContext.hasValidationContextCertificateProviderInstance(); return commonTlsContext.hasCombinedValidationContext()
&& commonTlsContext.getCombinedValidationContext().getDefaultValidationContext()
.hasCaCertificateProviderInstance();
} }
/** /**

View File

@ -99,8 +99,6 @@ abstract class CertProviderSslContextProvider extends DynamicSslContextProvider
CommonTlsContext commonTlsContext) { CommonTlsContext commonTlsContext) {
if (commonTlsContext.hasTlsCertificateProviderInstance()) { if (commonTlsContext.hasTlsCertificateProviderInstance()) {
return CommonTlsContextUtil.convert(commonTlsContext.getTlsCertificateProviderInstance()); return CommonTlsContextUtil.convert(commonTlsContext.getTlsCertificateProviderInstance());
} else if (commonTlsContext.hasTlsCertificateCertificateProviderInstance()) {
return commonTlsContext.getTlsCertificateCertificateProviderInstance();
} }
return null; return null;
} }
@ -128,15 +126,6 @@ abstract class CertProviderSslContextProvider extends DynamicSslContextProvider
if (certValidationContext != null && certValidationContext.hasCaCertificateProviderInstance()) { if (certValidationContext != null && certValidationContext.hasCaCertificateProviderInstance()) {
return CommonTlsContextUtil.convert(certValidationContext.getCaCertificateProviderInstance()); return CommonTlsContextUtil.convert(certValidationContext.getCaCertificateProviderInstance());
} }
if (commonTlsContext.hasCombinedValidationContext()) {
CommonTlsContext.CombinedCertificateValidationContext combinedValidationContext =
commonTlsContext.getCombinedValidationContext();
if (combinedValidationContext.hasValidationContextCertificateProviderInstance()) {
return combinedValidationContext.getValidationContextCertificateProviderInstance();
}
} else if (commonTlsContext.hasValidationContextCertificateProviderInstance()) {
return commonTlsContext.getValidationContextCertificateProviderInstance();
}
return null; return null;
} }

View File

@ -207,6 +207,7 @@ final class XdsX509TrustManager extends X509ExtendedTrustManager implements X509
if (certContext == null) { if (certContext == null) {
return; return;
} }
@SuppressWarnings("deprecation") // gRFC A29 predates match_typed_subject_alt_names
List<StringMatcher> verifyList = certContext.getMatchSubjectAltNamesList(); List<StringMatcher> verifyList = certContext.getMatchSubjectAltNamesList();
if (verifyList.isEmpty()) { if (verifyList.isEmpty()) {
return; return;

View File

@ -1125,7 +1125,6 @@ public class FilterChainMatchingProtocolNegotiatorsTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void filterChainMatch_unsupportedMatchers() throws Exception { public void filterChainMatch_unsupportedMatchers() throws Exception {
EnvoyServerProtoData.DownstreamTlsContext tlsContext1 = EnvoyServerProtoData.DownstreamTlsContext tlsContext1 =
CommonTlsContextTestsUtil.buildTestInternalDownstreamTlsContext("CERT1", "ROOTCA"); CommonTlsContextTestsUtil.buildTestInternalDownstreamTlsContext("CERT1", "ROOTCA");
@ -1194,7 +1193,7 @@ public class FilterChainMatchingProtocolNegotiatorsTest {
assertThat(sslSet.get()).isEqualTo(defaultFilterChain.sslContextProviderSupplier()); assertThat(sslSet.get()).isEqualTo(defaultFilterChain.sslContextProviderSupplier());
assertThat(routingSettable.get()).isEqualTo(noopConfig); assertThat(routingSettable.get()).isEqualTo(noopConfig);
assertThat(sslSet.get().getTlsContext().getCommonTlsContext() assertThat(sslSet.get().getTlsContext().getCommonTlsContext()
.getTlsCertificateCertificateProviderInstance() .getTlsCertificateProviderInstance()
.getCertificateName()).isEqualTo("CERT3"); .getCertificateName()).isEqualTo("CERT3");
} }

View File

@ -98,7 +98,6 @@ import io.envoyproxy.envoy.extensions.transport_sockets.http_11_proxy.v3.Http11P
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CertificateProviderInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.SdsSecretConfig; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.SdsSecretConfig;
@ -3042,35 +3041,6 @@ public class GrpcXdsClientImplDataTest {
XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false); XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false);
} }
@Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_validationContextCertificateProvider()
throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setValidationContextCertificateProvider(
CommonTlsContext.CertificateProvider.getDefaultInstance())
.build();
thrown.expect(ResourceInvalidException.class);
thrown.expectMessage(
"common-tls-context with validation_context_certificate_provider is not supported");
XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false);
}
@Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_validationContextCertificateProviderInstance()
throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setValidationContextCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.build();
thrown.expect(ResourceInvalidException.class);
thrown.expectMessage(
"common-tls-context with validation_context_certificate_provider_instance is not "
+ "supported");
XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false);
}
@Test @Test
public void validateCommonTlsContext_tlsCertificateProviderInstance_isRequiredForServer() public void validateCommonTlsContext_tlsCertificateProviderInstance_isRequiredForServer()
throws ResourceInvalidException { throws ResourceInvalidException {
@ -3083,36 +3053,33 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_tlsNewCertificateProviderInstance() public void validateCommonTlsContext_tlsNewCertificateProviderInstance()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setTlsCertificateProviderInstance( .setTlsCertificateProviderInstance(
CertificateProviderPluginInstance.newBuilder().setInstanceName("name1").build()) CertificateProviderPluginInstance.newBuilder().setInstanceName("name1"))
.build(); .build();
XdsClusterResource XdsClusterResource
.validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), true); .validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), true);
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_tlsCertificateProviderInstance() public void validateCommonTlsContext_tlsCertificateProviderInstance()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(
CertificateProviderInstance.newBuilder().setInstanceName("name1").build()) CertificateProviderPluginInstance.newBuilder().setInstanceName("name1"))
.build(); .build();
XdsClusterResource XdsClusterResource
.validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), true); .validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), true);
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_tlsCertificateProviderInstance_absentInBootstrapFile() public void validateCommonTlsContext_tlsCertificateProviderInstance_absentInBootstrapFile()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(
CertificateProviderInstance.newBuilder().setInstanceName("bad-name").build()) CertificateProviderPluginInstance.newBuilder().setInstanceName("bad-name"))
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage( thrown.expectMessage(
@ -3122,15 +3089,14 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_validationContextProviderInstance() public void validateCommonTlsContext_validationContextProviderInstance()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CertificateProviderInstance.newBuilder().setInstanceName("name1").build()) .setCaCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
.build()) .setInstanceName("name1"))))
.build(); .build();
XdsClusterResource XdsClusterResource
.validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), false); .validateCommonTlsContext(commonTlsContext, ImmutableSet.of("name1", "name2"), false);
@ -3218,15 +3184,14 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_validationContextProviderInstance_absentInBootstrapFile() public void validateCommonTlsContext_validationContextProviderInstance_absentInBootstrapFile()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CertificateProviderInstance.newBuilder().setInstanceName("bad-name").build()) .setCaCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
.build()) .setInstanceName("bad-name"))))
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage( thrown.expectMessage(
@ -3258,20 +3223,6 @@ public class GrpcXdsClientImplDataTest {
XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false); XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false);
} }
@Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_tlsCertificateCertificateProvider()
throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setTlsCertificateCertificateProvider(
CommonTlsContext.CertificateProvider.getDefaultInstance())
.build();
thrown.expect(ResourceInvalidException.class);
thrown.expectMessage(
"tls_certificate_provider_instance is unset");
XdsClusterResource.validateCommonTlsContext(commonTlsContext, null, false);
}
@Test @Test
public void validateCommonTlsContext_combinedValidationContext_isRequiredForClient() public void validateCommonTlsContext_combinedValidationContext_isRequiredForClient()
throws ResourceInvalidException { throws ResourceInvalidException {
@ -3304,13 +3255,13 @@ public class GrpcXdsClientImplDataTest {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CombinedCertificateValidationContext.newBuilder() CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(
CertificateProviderInstance.getDefaultInstance())
.setDefaultValidationContext(CertificateValidationContext.newBuilder() .setDefaultValidationContext(CertificateValidationContext.newBuilder()
.setCaCertificateProviderInstance(
CertificateProviderPluginInstance.getDefaultInstance())
.addMatchSubjectAltNames(StringMatcher.newBuilder().setExact("foo.com").build()) .addMatchSubjectAltNames(StringMatcher.newBuilder().setExact("foo.com").build())
.build())) .build()))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(
CertificateProviderInstance.getDefaultInstance()) CertificateProviderPluginInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage("match_subject_alt_names only allowed in upstream_tls_context"); thrown.expectMessage("match_subject_alt_names only allowed in upstream_tls_context");
@ -3318,18 +3269,16 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_combinedValContextWithDefaultValContextVerifyCertSpki() public void validateCommonTlsContext_combinedValContextWithDefaultValContextVerifyCertSpki()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CommonTlsContext.CertificateProviderInstance.getDefaultInstance()) .setCaCertificateProviderInstance(
.setDefaultValidationContext( CertificateProviderPluginInstance.getDefaultInstance())
CertificateValidationContext.newBuilder().addVerifyCertificateSpki("foo"))) .addVerifyCertificateSpki("foo")))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage("verify_certificate_spki in default_validation_context is not " thrown.expectMessage("verify_certificate_spki in default_validation_context is not "
@ -3338,18 +3287,16 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_combinedValContextWithDefaultValContextVerifyCertHash() public void validateCommonTlsContext_combinedValContextWithDefaultValContextVerifyCertHash()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CommonTlsContext.CertificateProviderInstance.getDefaultInstance()) .setCaCertificateProviderInstance(
.setDefaultValidationContext( CertificateProviderPluginInstance.getDefaultInstance())
CertificateValidationContext.newBuilder().addVerifyCertificateHash("foo"))) .addVerifyCertificateHash("foo")))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage("verify_certificate_hash in default_validation_context is not " thrown.expectMessage("verify_certificate_hash in default_validation_context is not "
@ -3358,18 +3305,17 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_combinedValContextDfltValContextRequireSignedCertTimestamp() public void validateCommonTlsContext_combinedValContextDfltValContextRequireSignedCertTimestamp()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.setDefaultValidationContext(CertificateValidationContext.newBuilder() .setDefaultValidationContext(CertificateValidationContext.newBuilder()
.setCaCertificateProviderInstance(
CertificateProviderPluginInstance.getDefaultInstance())
.setRequireSignedCertificateTimestamp(BoolValue.of(true)))) .setRequireSignedCertificateTimestamp(BoolValue.of(true))))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.getDefaultInstance()) CertificateProviderPluginInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage( thrown.expectMessage(
@ -3379,18 +3325,16 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_combinedValidationContextWithDefaultValidationContextCrl() public void validateCommonTlsContext_combinedValidationContextWithDefaultValidationContextCrl()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.setDefaultValidationContext(CertificateValidationContext.newBuilder() .setDefaultValidationContext(CertificateValidationContext.newBuilder()
.setCaCertificateProviderInstance(
CertificateProviderPluginInstance.getDefaultInstance())
.setCrl(DataSource.getDefaultInstance()))) .setCrl(DataSource.getDefaultInstance())))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage("crl in default_validation_context is not supported"); thrown.expectMessage("crl in default_validation_context is not supported");
@ -3398,18 +3342,16 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateCommonTlsContext_combinedValContextWithDfltValContextCustomValidatorConfig() public void validateCommonTlsContext_combinedValContextWithDfltValContextCustomValidatorConfig()
throws ResourceInvalidException { throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.setDefaultValidationContext(CertificateValidationContext.newBuilder() .setDefaultValidationContext(CertificateValidationContext.newBuilder()
.setCaCertificateProviderInstance(
CertificateProviderPluginInstance.getDefaultInstance())
.setCustomValidatorConfig(TypedExtensionConfig.getDefaultInstance()))) .setCustomValidatorConfig(TypedExtensionConfig.getDefaultInstance())))
.setTlsCertificateCertificateProviderInstance( .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())
.build(); .build();
thrown.expect(ResourceInvalidException.class); thrown.expect(ResourceInvalidException.class);
thrown.expectMessage("custom_validator_config in default_validation_context is not " thrown.expectMessage("custom_validator_config in default_validation_context is not "
@ -3426,15 +3368,14 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateDownstreamTlsContext_hasRequireSni() throws ResourceInvalidException { public void validateDownstreamTlsContext_hasRequireSni() throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())) .setCaCertificateProviderInstance(
.setTlsCertificateCertificateProviderInstance( CertificateProviderPluginInstance.getDefaultInstance())))
CommonTlsContext.CertificateProviderInstance.getDefaultInstance()) .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
.build(); .build();
DownstreamTlsContext downstreamTlsContext = DownstreamTlsContext.newBuilder() DownstreamTlsContext downstreamTlsContext = DownstreamTlsContext.newBuilder()
.setCommonTlsContext(commonTlsContext) .setCommonTlsContext(commonTlsContext)
@ -3446,15 +3387,14 @@ public class GrpcXdsClientImplDataTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void validateDownstreamTlsContext_hasOcspStaplePolicy() throws ResourceInvalidException { public void validateDownstreamTlsContext_hasOcspStaplePolicy() throws ResourceInvalidException {
CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder() CommonTlsContext commonTlsContext = CommonTlsContext.newBuilder()
.setCombinedValidationContext( .setCombinedValidationContext(
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance( .setDefaultValidationContext(CertificateValidationContext.newBuilder()
CommonTlsContext.CertificateProviderInstance.getDefaultInstance())) .setCaCertificateProviderInstance(
.setTlsCertificateCertificateProviderInstance( CertificateProviderPluginInstance.getDefaultInstance())))
CommonTlsContext.CertificateProviderInstance.getDefaultInstance()) .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.getDefaultInstance())
.build(); .build();
DownstreamTlsContext downstreamTlsContext = DownstreamTlsContext.newBuilder() DownstreamTlsContext downstreamTlsContext = DownstreamTlsContext.newBuilder()
.setCommonTlsContext(commonTlsContext) .setCommonTlsContext(commonTlsContext)

View File

@ -47,7 +47,6 @@ import io.envoyproxy.envoy.config.route.v3.FilterConfig;
import io.envoyproxy.envoy.config.route.v3.WeightedCluster; import io.envoyproxy.envoy.config.route.v3.WeightedCluster;
import io.envoyproxy.envoy.extensions.filters.http.router.v3.Router; import io.envoyproxy.envoy.extensions.filters.http.router.v3.Router;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext;
import io.grpc.BindableService; import io.grpc.BindableService;
import io.grpc.ChannelCredentials; import io.grpc.ChannelCredentials;
import io.grpc.Context; import io.grpc.Context;
@ -2245,7 +2244,6 @@ public abstract class GrpcXdsClientImplTestBase {
* CDS response containing UpstreamTlsContext for a cluster. * CDS response containing UpstreamTlsContext for a cluster.
*/ */
@Test @Test
@SuppressWarnings("deprecation")
public void cdsResponseWithUpstreamTlsContext() { public void cdsResponseWithUpstreamTlsContext() {
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
cdsResourceWatcher); cdsResourceWatcher);
@ -2269,9 +2267,9 @@ public abstract class GrpcXdsClientImplTestBase {
verify(cdsResourceWatcher, times(1)) verify(cdsResourceWatcher, times(1))
.onChanged(cdsUpdateCaptor.capture()); .onChanged(cdsUpdateCaptor.capture());
CdsUpdate cdsUpdate = cdsUpdateCaptor.getValue(); CdsUpdate cdsUpdate = cdsUpdateCaptor.getValue();
CommonTlsContext.CertificateProviderInstance certificateProviderInstance = CertificateProviderPluginInstance certificateProviderInstance =
cdsUpdate.upstreamTlsContext().getCommonTlsContext().getCombinedValidationContext() cdsUpdate.upstreamTlsContext().getCommonTlsContext().getCombinedValidationContext()
.getValidationContextCertificateProviderInstance(); .getDefaultValidationContext().getCaCertificateProviderInstance();
assertThat(certificateProviderInstance.getInstanceName()).isEqualTo("cert-instance-name"); assertThat(certificateProviderInstance.getInstanceName()).isEqualTo("cert-instance-name");
assertThat(certificateProviderInstance.getCertificateName()).isEqualTo("cert1"); assertThat(certificateProviderInstance.getCertificateName()).isEqualTo("cert1");
verifyResourceMetadataAcked(CDS, CDS_RESOURCE, clusterEds, VERSION_1, TIME_INCREMENT); verifyResourceMetadataAcked(CDS, CDS_RESOURCE, clusterEds, VERSION_1, TIME_INCREMENT);
@ -2282,7 +2280,6 @@ public abstract class GrpcXdsClientImplTestBase {
* CDS response containing new UpstreamTlsContext for a cluster. * CDS response containing new UpstreamTlsContext for a cluster.
*/ */
@Test @Test
@SuppressWarnings("deprecation")
public void cdsResponseWithNewUpstreamTlsContext() { public void cdsResponseWithNewUpstreamTlsContext() {
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
cdsResourceWatcher); cdsResourceWatcher);
@ -2344,7 +2341,6 @@ public abstract class GrpcXdsClientImplTestBase {
* CDS response containing OutlierDetection for a cluster. * CDS response containing OutlierDetection for a cluster.
*/ */
@Test @Test
@SuppressWarnings("deprecation")
public void cdsResponseWithOutlierDetection() { public void cdsResponseWithOutlierDetection() {
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,
cdsResourceWatcher); cdsResourceWatcher);
@ -2413,7 +2409,6 @@ public abstract class GrpcXdsClientImplTestBase {
* CDS response containing OutlierDetection for a cluster. * CDS response containing OutlierDetection for a cluster.
*/ */
@Test @Test
@SuppressWarnings("deprecation")
public void cdsResponseWithInvalidOutlierDetectionNacks() { public void cdsResponseWithInvalidOutlierDetectionNacks() {
DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE, DiscoveryRpcCall call = startResourceWatcher(XdsClusterResource.getInstance(), CDS_RESOURCE,

View File

@ -613,18 +613,15 @@ public class GrpcXdsClientImplV3Test extends GrpcXdsClientImplTestBase {
} }
@Override @Override
@SuppressWarnings("deprecation")
protected Message buildUpstreamTlsContext(String instanceName, String certName) { protected Message buildUpstreamTlsContext(String instanceName, String certName) {
CommonTlsContext.Builder commonTlsContextBuilder = CommonTlsContext.newBuilder(); CommonTlsContext.Builder commonTlsContextBuilder = CommonTlsContext.newBuilder();
if (instanceName != null && certName != null) { if (instanceName != null && certName != null) {
CommonTlsContext.CertificateProviderInstance providerInstance =
CommonTlsContext.CertificateProviderInstance.newBuilder()
.setInstanceName(instanceName)
.setCertificateName(certName)
.build();
CommonTlsContext.CombinedCertificateValidationContext combined = CommonTlsContext.CombinedCertificateValidationContext combined =
CommonTlsContext.CombinedCertificateValidationContext.newBuilder() CommonTlsContext.CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(providerInstance) .setDefaultValidationContext(CertificateValidationContext.newBuilder()
.setCaCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
.setInstanceName(instanceName)
.setCertificateName(certName)))
.build(); .build();
commonTlsContextBuilder.setCombinedValidationContext(combined); commonTlsContextBuilder.setCombinedValidationContext(combined);
} }
@ -751,7 +748,6 @@ public class GrpcXdsClientImplV3Test extends GrpcXdsClientImplTestBase {
.build(); .build();
} }
@SuppressWarnings("deprecation")
@Override @Override
protected FilterChain buildFilterChain( protected FilterChain buildFilterChain(
List<String> alpn, Message tlsContext, String transportSocketName, List<String> alpn, Message tlsContext, String transportSocketName,

View File

@ -317,7 +317,6 @@ public class ClientSslContextProviderFactoryTest {
.isSameInstanceAs(sslContextProvider); .isSameInstanceAs(sslContextProvider);
} }
@SuppressWarnings("deprecation")
static CommonTlsContext.Builder addFilenames( static CommonTlsContext.Builder addFilenames(
CommonTlsContext.Builder builder, String certChain, String privateKey, String trustCa) { CommonTlsContext.Builder builder, String certChain, String privateKey, String trustCa) {
TlsCertificate tlsCert = TlsCertificate tlsCert =
@ -329,13 +328,10 @@ public class ClientSslContextProviderFactoryTest {
CertificateValidationContext.newBuilder() CertificateValidationContext.newBuilder()
.setTrustedCa(DataSource.newBuilder().setFilename(trustCa)) .setTrustedCa(DataSource.newBuilder().setFilename(trustCa))
.build(); .build();
CommonTlsContext.CertificateProviderInstance certificateProviderInstance =
builder.getValidationContextCertificateProviderInstance();
CommonTlsContext.CombinedCertificateValidationContext.Builder combinedBuilder = CommonTlsContext.CombinedCertificateValidationContext.Builder combinedBuilder =
CommonTlsContext.CombinedCertificateValidationContext.newBuilder(); CommonTlsContext.CombinedCertificateValidationContext.newBuilder();
combinedBuilder combinedBuilder
.setDefaultValidationContext(certContext) .setDefaultValidationContext(certContext);
.setValidationContextCertificateProviderInstance(certificateProviderInstance);
return builder return builder
.addTlsCertificates(tlsCert) .addTlsCertificates(tlsCert)
.setCombinedValidationContext(combinedBuilder.build()); .setCombinedValidationContext(combinedBuilder.build());

View File

@ -23,7 +23,6 @@ import com.google.protobuf.BoolValue;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateProviderPluginInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CertificateProviderInstance;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext;
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext; import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext;
@ -63,48 +62,26 @@ public class CommonTlsContextTestsUtil {
public static final String BAD_CLIENT_KEY_FILE = "badclient.key"; public static final String BAD_CLIENT_KEY_FILE = "badclient.key";
/** takes additional values and creates CombinedCertificateValidationContext as needed. */ /** takes additional values and creates CombinedCertificateValidationContext as needed. */
@SuppressWarnings("deprecation") private static CommonTlsContext buildCommonTlsContextWithAdditionalValues(
static CommonTlsContext buildCommonTlsContextWithAdditionalValues(
String certInstanceName, String certName, String certInstanceName, String certName,
String validationContextCertInstanceName, String validationContextCertName, String validationContextCertInstanceName, String validationContextCertName,
Iterable<StringMatcher> matchSubjectAltNames, Iterable<StringMatcher> matchSubjectAltNames,
Iterable<String> alpnNames) { Iterable<String> alpnNames) {
@SuppressWarnings("deprecation") // gRFC A29 predates match_typed_subject_alt_names
CommonTlsContext.Builder builder = CommonTlsContext.newBuilder(); CertificateValidationContext.Builder certificateValidationContextBuilder
= CertificateValidationContext.newBuilder()
CertificateProviderInstance certificateProviderInstance = CertificateProviderInstance .addAllMatchSubjectAltNames(matchSubjectAltNames);
.newBuilder().setInstanceName(certInstanceName).setCertificateName(certName).build(); return CommonTlsContext.newBuilder()
if (certificateProviderInstance != null) { .setTlsCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
builder.setTlsCertificateCertificateProviderInstance(certificateProviderInstance); .setInstanceName(certInstanceName)
} .setCertificateName(certName))
CertificateProviderInstance validationCertificateProviderInstance = .setCombinedValidationContext(CombinedCertificateValidationContext.newBuilder()
CertificateProviderInstance.newBuilder().setInstanceName(validationContextCertInstanceName) .setDefaultValidationContext(certificateValidationContextBuilder
.setCertificateName(validationContextCertName).build(); .setCaCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
CertificateValidationContext certValidationContext = .setInstanceName(validationContextCertInstanceName)
matchSubjectAltNames == null .setCertificateName(validationContextCertName))))
? null .addAllAlpnProtocols(alpnNames)
: CertificateValidationContext.newBuilder() .build();
.addAllMatchSubjectAltNames(matchSubjectAltNames)
.build();
if (validationCertificateProviderInstance != null) {
CombinedCertificateValidationContext.Builder combinedBuilder =
CombinedCertificateValidationContext.newBuilder()
.setValidationContextCertificateProviderInstance(
validationCertificateProviderInstance);
if (certValidationContext != null) {
combinedBuilder = combinedBuilder.setDefaultValidationContext(certValidationContext);
}
builder.setCombinedValidationContext(combinedBuilder);
} else if (validationCertificateProviderInstance != null) {
builder
.setValidationContextCertificateProviderInstance(validationCertificateProviderInstance);
} else if (certValidationContext != null) {
builder.setValidationContext(certValidationContext);
}
if (alpnNames != null) {
builder.addAllAlpnProtocols(alpnNames);
}
return builder.build();
} }
/** Helper method to build DownstreamTlsContext for multiple test classes. */ /** Helper method to build DownstreamTlsContext for multiple test classes. */
@ -152,7 +129,7 @@ public class CommonTlsContextTestsUtil {
useSans ? Arrays.asList( useSans ? Arrays.asList(
StringMatcher.newBuilder() StringMatcher.newBuilder()
.setExact("spiffe://grpc-sds-testing.svc.id.goog/ns/default/sa/bob") .setExact("spiffe://grpc-sds-testing.svc.id.goog/ns/default/sa/bob")
.build()) : null, .build()) : Arrays.asList(),
Arrays.asList("managed-tls")); Arrays.asList("managed-tls"));
} }
return buildDownstreamTlsContext(commonTlsContext, /* requireClientCert= */ false); return buildDownstreamTlsContext(commonTlsContext, /* requireClientCert= */ false);
@ -199,7 +176,6 @@ public class CommonTlsContextTestsUtil {
} }
} }
@SuppressWarnings("deprecation")
private static CommonTlsContext buildCommonTlsContextForCertProviderInstance( private static CommonTlsContext buildCommonTlsContextForCertProviderInstance(
String certInstanceName, String certInstanceName,
String certName, String certName,
@ -210,10 +186,10 @@ public class CommonTlsContextTestsUtil {
CommonTlsContext.Builder builder = CommonTlsContext.newBuilder(); CommonTlsContext.Builder builder = CommonTlsContext.newBuilder();
if (certInstanceName != null) { if (certInstanceName != null) {
builder = builder =
builder.setTlsCertificateCertificateProviderInstance( builder.setTlsCertificateProviderInstance(
CommonTlsContext.CertificateProviderInstance.newBuilder() CertificateProviderPluginInstance.newBuilder()
.setInstanceName(certInstanceName) .setInstanceName(certInstanceName)
.setCertificateName(certName)); .setCertificateName(certName));
} }
builder = builder =
addCertificateValidationContext( addCertificateValidationContext(
@ -248,35 +224,28 @@ public class CommonTlsContextTestsUtil {
return builder.build(); return builder.build();
} }
@SuppressWarnings("deprecation")
private static CommonTlsContext.Builder addCertificateValidationContext( private static CommonTlsContext.Builder addCertificateValidationContext(
CommonTlsContext.Builder builder, CommonTlsContext.Builder builder,
String rootInstanceName, String rootInstanceName,
String rootCertName, String rootCertName,
CertificateValidationContext staticCertValidationContext) { CertificateValidationContext staticCertValidationContext) {
CertificateProviderInstance providerInstance = null; if (staticCertValidationContext == null && rootInstanceName == null) {
return builder;
}
CertificateValidationContext.Builder contextBuilder;
if (staticCertValidationContext == null) {
contextBuilder = CertificateValidationContext.newBuilder();
} else {
contextBuilder = staticCertValidationContext.toBuilder();
}
if (rootInstanceName != null) { if (rootInstanceName != null) {
providerInstance = CertificateProviderInstance.newBuilder() contextBuilder.setCaCertificateProviderInstance(CertificateProviderPluginInstance.newBuilder()
.setInstanceName(rootInstanceName) .setInstanceName(rootInstanceName)
.setCertificateName(rootCertName) .setCertificateName(rootCertName));
.build(); builder.setValidationContext(contextBuilder.build());
} }
if (providerInstance != null) { return builder.setCombinedValidationContext(CombinedCertificateValidationContext.newBuilder()
builder = builder.setValidationContextCertificateProviderInstance(providerInstance); .setDefaultValidationContext(contextBuilder));
}
CombinedCertificateValidationContext.Builder combined =
CombinedCertificateValidationContext.newBuilder();
if (providerInstance != null) {
combined = combined.setValidationContextCertificateProviderInstance(providerInstance);
}
if (staticCertValidationContext != null) {
combined = combined.setDefaultValidationContext(staticCertValidationContext);
}
if (combined.hasValidationContextCertificateProviderInstance()
|| combined.hasDefaultValidationContext()) {
builder = builder.setCombinedValidationContext(combined.build());
}
return builder;
} }
private static CommonTlsContext.Builder addNewCertificateValidationContext( private static CommonTlsContext.Builder addNewCertificateValidationContext(

View File

@ -123,7 +123,6 @@ public class CertificateProviderStoreTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void onePluginSameConfig_sameInstance() { public void onePluginSameConfig_sameInstance() {
registerPlugin("plugin1"); registerPlugin("plugin1");
CertificateProvider.Watcher mockWatcher1 = mock(CertificateProvider.Watcher.class); CertificateProvider.Watcher mockWatcher1 = mock(CertificateProvider.Watcher.class);
@ -167,7 +166,6 @@ public class CertificateProviderStoreTest {
} }
@Test @Test
@SuppressWarnings("deprecation")
public void onePluginSameConfig_secondWatcherAfterFirstNotify() { public void onePluginSameConfig_secondWatcherAfterFirstNotify() {
registerPlugin("plugin1"); registerPlugin("plugin1");
CertificateProvider.Watcher mockWatcher1 = mock(CertificateProvider.Watcher.class); CertificateProvider.Watcher mockWatcher1 = mock(CertificateProvider.Watcher.class);
@ -275,7 +273,6 @@ public class CertificateProviderStoreTest {
mockWatcher1, handle1, certProviderProvider1, mockWatcher2, handle2, certProviderProvider2); mockWatcher1, handle1, certProviderProvider1, mockWatcher2, handle2, certProviderProvider2);
} }
@SuppressWarnings("deprecation")
private static void checkDifferentInstances( private static void checkDifferentInstances(
CertificateProvider.Watcher mockWatcher1, CertificateProvider.Watcher mockWatcher1,
CertificateProviderStore.Handle handle1, CertificateProviderStore.Handle handle1,