Skip to content

Commit e9e6e5f

Browse files
committed
Renamed IAttestationProvider to ICoreAttestationService
Removes the duplication of IAttestationProvider interface
1 parent f22e466 commit e9e6e5f

11 files changed

+47
-59
lines changed

src/main/java/com/uid2/shared/secure/AzureCCAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/AzureCCCoreAttestationService.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@
1717

1818
// CC stands for Confidential Container
1919
@Slf4j
20-
public class AzureCCAttestationProvider implements IAttestationProvider {
20+
public class AzureCCCoreAttestationService implements ICoreAttestationService {
2121

2222
private final Set<String> allowedEnclaveIds = new HashSet<>();
2323

2424
private final IMaaTokenSignatureValidator tokenSignatureValidator;
2525

2626
private final IPolicyValidator policyValidator;
2727

28-
public AzureCCAttestationProvider(String maaServerBaseUrl) {
28+
public AzureCCCoreAttestationService(String maaServerBaseUrl) {
2929
this(new MaaTokenSignatureValidator(maaServerBaseUrl), new PolicyValidator());
3030
}
3131

3232
// used in UT
33-
protected AzureCCAttestationProvider(IMaaTokenSignatureValidator tokenSignatureValidator, IPolicyValidator policyValidator) {
33+
protected AzureCCCoreAttestationService(IMaaTokenSignatureValidator tokenSignatureValidator, IPolicyValidator policyValidator) {
3434
this.tokenSignatureValidator = tokenSignatureValidator;
3535
this.policyValidator = policyValidator;
3636
}

src/main/java/com/uid2/shared/secure/GcpOidcAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/GcpOidcCoreAttestationService.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@
1010
import java.nio.charset.StandardCharsets;
1111
import java.util.*;
1212

13-
public class GcpOidcAttestationProvider implements IAttestationProvider{
14-
private static final Logger LOGGER = LoggerFactory.getLogger(GcpOidcAttestationProvider.class);
13+
public class GcpOidcCoreAttestationService implements ICoreAttestationService {
14+
private static final Logger LOGGER = LoggerFactory.getLogger(GcpOidcCoreAttestationService.class);
1515

1616
private final ITokenSignatureValidator tokenSignatureValidator;
1717

1818
private final List<IPolicyValidator> supportedPolicyValidators;
1919

2020
private final Set<String> allowedEnclaveIds = new HashSet<>();
2121

22-
public GcpOidcAttestationProvider(){
22+
public GcpOidcCoreAttestationService(){
2323
this(new TokenSignatureValidator(), Arrays.asList(new PolicyValidator()));
2424
}
2525

2626
// used in UT
27-
protected GcpOidcAttestationProvider(ITokenSignatureValidator tokenSignatureValidator, List<IPolicyValidator> supportedPolicyValidators){
27+
protected GcpOidcCoreAttestationService(ITokenSignatureValidator tokenSignatureValidator, List<IPolicyValidator> supportedPolicyValidators){
2828
this.tokenSignatureValidator = tokenSignatureValidator;
2929
this.supportedPolicyValidators = supportedPolicyValidators;
3030
}

src/main/java/com/uid2/shared/secure/GcpVmidAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/GcpVmidCoreAttestationService.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
import java.nio.charset.StandardCharsets;
1818
import java.util.*;
1919

20-
public class GcpVmidAttestationProvider implements IAttestationProvider {
21-
private static final Logger LOGGER = LoggerFactory.getLogger(GcpVmidAttestationProvider.class);
20+
public class GcpVmidCoreAttestationService implements ICoreAttestationService {
21+
private static final Logger LOGGER = LoggerFactory.getLogger(GcpVmidCoreAttestationService.class);
2222

2323
private final InstanceDocumentVerifier idVerifier = new InstanceDocumentVerifier();
2424
private final VmConfigVerifier vmConfigVerifier;
2525
private final Set<String> allowedVmConfigIds = new HashSet<>();
2626

27-
public GcpVmidAttestationProvider(GoogleCredentials credentials, Set<String> enclaveParams) throws Exception {
27+
public GcpVmidCoreAttestationService(GoogleCredentials credentials, Set<String> enclaveParams) throws Exception {
2828
LoadBalancerRegistry.getDefaultRegistry().register(new PickFirstLoadBalancerProvider());
2929
this.vmConfigVerifier = new VmConfigVerifier(credentials, enclaveParams);
3030
LOGGER.info("Using Google Service Account: " + credentials.toString());

src/main/java/com/uid2/shared/secure/IAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/ICoreAttestationService.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package com.uid2.shared.secure;
22

3-
import com.uid2.shared.secure.AttestationException;
4-
import com.uid2.shared.secure.AttestationResult;
5-
63
import java.util.Collection;
74

85
import io.vertx.core.AsyncResult;
96
import io.vertx.core.Handler;
107

11-
public interface IAttestationProvider {
8+
public interface ICoreAttestationService {
129
void attest(
1310
byte[] attestationRequest,
1411
byte[] publicKey,

src/main/java/com/uid2/shared/secure/NitroAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/NitroCoreAttestationService.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.uid2.shared.secure.nitro.AttestationDocument;
44
import com.uid2.shared.secure.nitro.AttestationRequest;
55

6-
import java.net.MalformedURLException;
7-
import java.net.URL;
86
import java.util.Arrays;
97
import java.util.Base64;
108
import java.util.Collection;
@@ -19,15 +17,15 @@
1917
import org.slf4j.Logger;
2018
import org.slf4j.LoggerFactory;
2119

22-
public class NitroAttestationProvider implements IAttestationProvider {
20+
public class NitroCoreAttestationService implements ICoreAttestationService {
2321

2422
private final String attestationUrl;
2523
private Set<NitroEnclaveIdentifier> allowedEnclaveIds;
2624
private final ICertificateProvider certificateProvider;
2725

28-
private static final Logger LOGGER = LoggerFactory.getLogger(NitroAttestationProvider.class);
26+
private static final Logger LOGGER = LoggerFactory.getLogger(NitroCoreAttestationService.class);
2927

30-
public NitroAttestationProvider(ICertificateProvider certificateProvider, String attestationUrl) {
28+
public NitroCoreAttestationService(ICertificateProvider certificateProvider, String attestationUrl) {
3129
this.attestationUrl = attestationUrl;
3230
this.allowedEnclaveIds = new HashSet<>();
3331
this.certificateProvider = certificateProvider;

src/main/java/com/uid2/shared/secure/TrustedAttestationProvider.java renamed to src/main/java/com/uid2/shared/secure/TrustedCoreAttestationService.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import java.util.Collection;
88
import java.util.Collections;
99

10-
public class TrustedAttestationProvider implements IAttestationProvider {
11-
public TrustedAttestationProvider() {}
10+
public class TrustedCoreAttestationService implements ICoreAttestationService {
11+
public TrustedCoreAttestationService() {}
1212

1313
@Override
1414
public void attest(byte[] attestationRequest, byte[] publicKey, Handler<AsyncResult<AttestationResult>> handler) {

src/main/java/com/uid2/shared/secure/gcpoidc/PolicyValidator.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ public class PolicyValidator implements IPolicyValidator {
3030

3131
private static final List<String> REQUIRED_ENV_OVERRIDES = ImmutableList.of(
3232
ENV_ENVIRONMENT,
33-
ENV_OPERATOR_API_KEY_SECRET_NAME
33+
ENV_OPERATOR_API_KEY_SECRET_NAME,
34+
ENV_CORE_ENDPOINT,
35+
ENV_OPT_OUT_ENDPOINT
3436
);
3537

3638
private static final Map<Environment, List<String>> OPTIONAL_ENV_OVERRIDES_MAP = ImmutableMap.of(
37-
Environment.Integration, ImmutableList.of(ENV_CORE_ENDPOINT, ENV_OPT_OUT_ENDPOINT)
39+
Environment.Integration, ImmutableList.of()
3840
);
3941

4042
@Override

src/test/java/com/uid2/shared/secure/AzureCCAttestationProviderTest.java renamed to src/test/java/com/uid2/shared/secure/AzureCCCoreAttestationServiceTest.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
@ExtendWith(MockitoExtension.class)
2323
@MockitoSettings(strictness = Strictness.LENIENT)
24-
class AzureCCAttestationProviderTest {
24+
class AzureCCCoreAttestationServiceTest {
2525
private static final String ATTESTATION_REQUEST = "test-attestation-request";
2626

2727
private static final String PUBLIC_KEY = "test-public-key";
@@ -49,7 +49,7 @@ public void setup() throws AttestationException {
4949

5050
@Test
5151
public void testHappyPath() throws AttestationException {
52-
var provider = new AzureCCAttestationProvider(alwaysPassTokenValidator, alwaysPassPolicyValidator);
52+
var provider = new AzureCCCoreAttestationService(alwaysPassTokenValidator, alwaysPassPolicyValidator);
5353
provider.registerEnclave(ENCLAVE_ID);
5454
attest(provider, ar -> {
5555
assertTrue(ar.succeeded());
@@ -61,7 +61,7 @@ public void testHappyPath() throws AttestationException {
6161
public void testSignatureCheckFailed_ClientError() throws AttestationException {
6262
var errorStr = "token signature validation failed";
6363
when(alwaysFailTokenValidator.validate(any())).thenThrow(new AttestationClientException(errorStr));
64-
var provider = new AzureCCAttestationProvider(alwaysFailTokenValidator, alwaysPassPolicyValidator);
64+
var provider = new AzureCCCoreAttestationService(alwaysFailTokenValidator, alwaysPassPolicyValidator);
6565
provider.registerEnclave(ENCLAVE_ID);
6666
attest(provider, ar -> {
6767
assertTrue(ar.succeeded());
@@ -73,7 +73,7 @@ public void testSignatureCheckFailed_ClientError() throws AttestationException {
7373
@Test
7474
public void testSignatureCheckFailed_ServerError() throws AttestationException {
7575
when(alwaysFailTokenValidator.validate(any())).thenThrow(new AttestationException("unknown server error"));
76-
var provider = new AzureCCAttestationProvider(alwaysFailTokenValidator, alwaysPassPolicyValidator);
76+
var provider = new AzureCCCoreAttestationService(alwaysFailTokenValidator, alwaysPassPolicyValidator);
7777
provider.registerEnclave(ENCLAVE_ID);
7878
attest(provider, ar -> {
7979
assertFalse(ar.succeeded());
@@ -85,7 +85,7 @@ public void testSignatureCheckFailed_ServerError() throws AttestationException {
8585
public void testPolicyCheckFailed_ClientError() throws AttestationException {
8686
var errorStr = "policy validation failed";
8787
when(alwaysFailPolicyValidator.validate(any(), any())).thenThrow(new AttestationClientException(errorStr));
88-
var provider = new AzureCCAttestationProvider(alwaysFailTokenValidator, alwaysFailPolicyValidator);
88+
var provider = new AzureCCCoreAttestationService(alwaysFailTokenValidator, alwaysFailPolicyValidator);
8989
provider.registerEnclave(ENCLAVE_ID);
9090
attest(provider, ar -> {
9191
assertTrue(ar.succeeded());
@@ -97,7 +97,7 @@ public void testPolicyCheckFailed_ClientError() throws AttestationException {
9797
@Test
9898
public void testPolicyCheckFailed_ServerError() throws AttestationException {
9999
when(alwaysFailPolicyValidator.validate(any(), any())).thenThrow(new AttestationException("unknown server error"));
100-
var provider = new AzureCCAttestationProvider(alwaysFailTokenValidator, alwaysFailPolicyValidator);
100+
var provider = new AzureCCCoreAttestationService(alwaysFailTokenValidator, alwaysFailPolicyValidator);
101101
provider.registerEnclave(ENCLAVE_ID);
102102
attest(provider, ar -> {
103103
assertFalse(ar.succeeded());
@@ -107,15 +107,15 @@ public void testPolicyCheckFailed_ServerError() throws AttestationException {
107107

108108
@Test
109109
public void testEnclaveNotRegistered() throws AttestationException {
110-
var provider = new AzureCCAttestationProvider(alwaysFailTokenValidator, alwaysPassPolicyValidator);
110+
var provider = new AzureCCCoreAttestationService(alwaysFailTokenValidator, alwaysPassPolicyValidator);
111111
attest(provider, ar -> {
112112
assertTrue(ar.succeeded());
113113
assertFalse(ar.result().isSuccess());
114114
assertEquals(AttestationFailure.FORBIDDEN_ENCLAVE, ar.result().getFailure());
115115
});
116116
}
117117

118-
private static void attest(IAttestationProvider provider, Handler<AsyncResult<AttestationResult>> handler) {
118+
private static void attest(ICoreAttestationService provider, Handler<AsyncResult<AttestationResult>> handler) {
119119
provider.attest(
120120
ATTESTATION_REQUEST.getBytes(StandardCharsets.UTF_8),
121121
PUBLIC_KEY.getBytes(StandardCharsets.UTF_8),

src/test/java/com/uid2/shared/secure/GcpOidcAttestationProviderTest.java renamed to src/test/java/com/uid2/shared/secure/GcpOidcCoreAttestationServiceTest.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
@ExtendWith(MockitoExtension.class)
2424
@MockitoSettings(strictness = Strictness.LENIENT)
25-
public class GcpOidcAttestationProviderTest {
25+
public class GcpOidcCoreAttestationServiceTest {
2626
private static final String ATTESTATION_REQUEST = "test-attestation-request";
2727
private static final String PUBLIC_KEY = "test-public-key";
2828

@@ -56,7 +56,7 @@ public void setup() throws AttestationException {
5656

5757
@Test
5858
public void testHappyPath() throws AttestationException {
59-
var provider = new GcpOidcAttestationProvider(alwaysPassTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
59+
var provider = new GcpOidcCoreAttestationService(alwaysPassTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
6060
provider.registerEnclave(ENCLAVE_ID_1);
6161
attest(provider, ar -> {
6262
assertTrue(ar.succeeded());
@@ -68,7 +68,7 @@ public void testHappyPath() throws AttestationException {
6868
public void testSignatureCheckFailed_ClientError() throws AttestationException {
6969
var errorStr = "signature validation failed";
7070
when(alwaysFailTokenValidator.validate(any())).thenThrow(new AttestationClientException(errorStr));
71-
var provider = new GcpOidcAttestationProvider(alwaysFailTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
71+
var provider = new GcpOidcCoreAttestationService(alwaysFailTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
7272
provider.registerEnclave(ENCLAVE_ID_1);
7373
attest(provider, ar -> {
7474
assertTrue(ar.succeeded());
@@ -80,7 +80,7 @@ public void testSignatureCheckFailed_ClientError() throws AttestationException {
8080
@Test
8181
public void testSignatureCheckFailed_ServerError() throws AttestationException {
8282
when(alwaysFailTokenValidator.validate(any())).thenThrow(new AttestationException("unknown server error"));
83-
var provider = new GcpOidcAttestationProvider(alwaysFailTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
83+
var provider = new GcpOidcCoreAttestationService(alwaysFailTokenValidator, Arrays.asList(alwaysPassPolicyValidator1));
8484
provider.registerEnclave(ENCLAVE_ID_1);
8585
attest(provider, ar -> {
8686
assertFalse(ar.succeeded());
@@ -92,7 +92,7 @@ public void testSignatureCheckFailed_ServerError() throws AttestationException {
9292
public void testPolicyCheckFailed_ClientError() throws AttestationException {
9393
var errorStr = "policy validation failed";
9494
when(alwaysFailPolicyValidator.validate(any())).thenThrow(new AttestationClientException(errorStr));
95-
var provider = new GcpOidcAttestationProvider(alwaysPassTokenValidator, Arrays.asList(alwaysFailPolicyValidator));
95+
var provider = new GcpOidcCoreAttestationService(alwaysPassTokenValidator, Arrays.asList(alwaysFailPolicyValidator));
9696
provider.registerEnclave(ENCLAVE_ID_1);
9797
attest(provider, ar -> {
9898
assertTrue(ar.succeeded());
@@ -104,7 +104,7 @@ public void testPolicyCheckFailed_ClientError() throws AttestationException {
104104
@Test
105105
public void testPolicyCheckFailed_ServerError() throws AttestationException {
106106
when(alwaysFailPolicyValidator.validate(any())).thenThrow(new AttestationException("unknown server error"));
107-
var provider = new GcpOidcAttestationProvider(alwaysPassTokenValidator, Arrays.asList(alwaysFailPolicyValidator));
107+
var provider = new GcpOidcCoreAttestationService(alwaysPassTokenValidator, Arrays.asList(alwaysFailPolicyValidator));
108108
provider.registerEnclave(ENCLAVE_ID_1);
109109
attest(provider, ar -> {
110110
assertFalse(ar.succeeded());
@@ -114,7 +114,7 @@ public void testPolicyCheckFailed_ServerError() throws AttestationException {
114114

115115
@Test
116116
public void testNoPolicyConfigured() throws AttestationException {
117-
var provider = new GcpOidcAttestationProvider(alwaysPassTokenValidator, Arrays.asList());
117+
var provider = new GcpOidcCoreAttestationService(alwaysPassTokenValidator, Arrays.asList());
118118
provider.registerEnclave(ENCLAVE_ID_1);
119119
attest(provider, ar -> {
120120
assertTrue(ar.succeeded());
@@ -125,15 +125,15 @@ public void testNoPolicyConfigured() throws AttestationException {
125125

126126
@Test
127127
public void testMultiplePolicyValidators() throws AttestationException {
128-
var provider = new GcpOidcAttestationProvider(alwaysPassTokenValidator, Arrays.asList(alwaysPassPolicyValidator1, alwaysFailPolicyValidator, alwaysPassPolicyValidator2));
128+
var provider = new GcpOidcCoreAttestationService(alwaysPassTokenValidator, Arrays.asList(alwaysPassPolicyValidator1, alwaysFailPolicyValidator, alwaysPassPolicyValidator2));
129129
provider.registerEnclave(ENCLAVE_ID_2);
130130
attest(provider, ar -> {
131131
assertTrue(ar.succeeded());
132132
assertTrue(ar.result().isSuccess());
133133
});
134134
}
135135

136-
private static void attest(IAttestationProvider provider, Handler<AsyncResult<AttestationResult>> handler) {
136+
private static void attest(ICoreAttestationService provider, Handler<AsyncResult<AttestationResult>> handler) {
137137
provider.attest(
138138
ATTESTATION_REQUEST.getBytes(StandardCharsets.UTF_8),
139139
PUBLIC_KEY.getBytes(StandardCharsets.UTF_8),

src/test/java/com/uid2/shared/secure/gcpoidc/PolicyValidatorTest.java

+7-18
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111

1212
public class PolicyValidatorTest {
1313
@Test
14-
public void testValicationSuccess_FullProd() throws AttestationException {
14+
public void testValidationSuccess_FullProd() throws AttestationException {
1515
var validator = new PolicyValidator();
1616
var payload = generateBasicPayload();
1717
var enclaveId = validator.validate(payload);
1818
}
1919

2020
@Test
21-
public void testValicationFailure_MissRequiredEnvProd() {
21+
public void testValidationFailure_MissRequiredEnvProd() {
2222
var validator = new PolicyValidator();
2323
var payload = generateBasicPayload();
2424
var envOverrides = new HashMap<>(payload.getEnvOverrides());
@@ -30,7 +30,7 @@ public void testValicationFailure_MissRequiredEnvProd() {
3030
}
3131

3232
@Test
33-
public void testValicationFailure_UnknownEnv() {
33+
public void testValidationFailure_UnknownEnv() {
3434
var validator = new PolicyValidator();
3535
var payload = generateBasicPayload();
3636
var envOverrides = new HashMap<>(payload.getEnvOverrides());
@@ -42,7 +42,7 @@ public void testValicationFailure_UnknownEnv() {
4242
}
4343

4444
@Test
45-
public void testValicationSuccess_IntegNoOptionalEnv() throws AttestationException {
45+
public void testValidationSuccess_IntegNoOptionalEnv() throws AttestationException {
4646
var validator = new PolicyValidator();
4747
var payload = generateBasicPayload();
4848
var envOverrides = new HashMap<>(payload.getEnvOverrides());
@@ -53,19 +53,6 @@ public void testValicationSuccess_IntegNoOptionalEnv() throws AttestationExcepti
5353
var enclaveId = validator.validate(payload);
5454
}
5555

56-
@Test
57-
public void testValicationSuccess_IntegHasOptionalEnv() throws AttestationException {
58-
var validator = new PolicyValidator();
59-
var payload = generateBasicPayload();
60-
var envOverrides = new HashMap<>(payload.getEnvOverrides());
61-
envOverrides.put(PolicyValidator.ENV_ENVIRONMENT, "integ");
62-
envOverrides.put(PolicyValidator.ENV_CORE_ENDPOINT, "coreendpoint");
63-
payload = payload.toBuilder()
64-
.envOverrides(envOverrides)
65-
.build();
66-
var enclaveId = validator.validate(payload);
67-
}
68-
6956
@Test
7057
public void testValidationFailure_ExtraEnvOverride(){
7158
var validator = new PolicyValidator();
@@ -171,7 +158,9 @@ private TokenPayload generateBasicPayload(){
171158
.restartPolicy("NEVER")
172159
.envOverrides(Map.of(
173160
PolicyValidator.ENV_ENVIRONMENT, "prod",
174-
PolicyValidator.ENV_OPERATOR_API_KEY_SECRET_NAME, "dummy_api_key"
161+
PolicyValidator.ENV_OPERATOR_API_KEY_SECRET_NAME, "dummy_api_key",
162+
PolicyValidator.ENV_CORE_ENDPOINT, "core_endpoint",
163+
PolicyValidator.ENV_OPT_OUT_ENDPOINT, "optout_endpoint"
175164
));
176165
return builder.build();
177166
}

src/test/resources/com.uid2.shared/test/secure/gcpoidc/jwt_payload_policy_valid.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
"image_id": "sha256:5be33a19451733a45ea1bdb340fcb858a0fc733e91ca0a0d99638652f6dcabd0",
2929
"env_override": {
3030
"DEPLOYMENT_ENVIRONMENT": "prod",
31-
"API_TOKEN_SECRET_NAME": "dummy"
31+
"API_TOKEN_SECRET_NAME": "dummy",
32+
"CORE_BASE_URL": "core-url",
33+
"OPTOUT_BASE_URL": "optout-url"
3234
},
3335
"cmd_override": null,
3436
"env": {

0 commit comments

Comments
 (0)