Skip to content

Commit 588f6ce

Browse files
abuabraham-ttdRelease Workflow
andauthored
Only respect value in request header (#258)
* Only respect value in request header for encrypted files --------- Co-authored-by: Release Workflow <[email protected]>
1 parent 7aed2e9 commit 588f6ce

File tree

3 files changed

+5
-78
lines changed

3 files changed

+5
-78
lines changed
Lines changed: 1 addition & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
package com.uid2.core.util;
2-
import com.uid2.core.Const;
32
import com.uid2.shared.auth.IAuthorizable;
43
import com.uid2.shared.auth.OperatorKey;
54
import com.uid2.shared.auth.OperatorType;
6-
import io.vertx.core.http.HttpServerRequest;
75
import io.vertx.ext.web.RoutingContext;
8-
9-
import java.util.regex.Matcher;
10-
import java.util.regex.Pattern;
11-
import com.uid2.core.model.ConfigStore;
126
import org.slf4j.Logger;
137
import org.slf4j.LoggerFactory;
14-
15-
import static com.uid2.shared.Const.Config.encryptionSupportVersion;
16-
import static com.uid2.shared.Const.Http.AppVersionHeader;
178
import static com.uid2.shared.middleware.AuthMiddleware.API_CLIENT_PROP;
189

1910
/**
@@ -53,54 +44,6 @@ public static OperatorInfo getOperatorInfo(RoutingContext rc) throws Exception {
5344
}
5445

5546
static boolean supportsEncryption(RoutingContext rc) {
56-
String appVersion = rc.request().getHeader(AppVersionHeader);
57-
if (appVersion == null) {
58-
logger.warn("AppVersion header is missing.");
59-
return false;
60-
}
61-
String[] versions = appVersion.split(";");
62-
for (String version : versions) {
63-
if (version.startsWith("uid2-operator=")) {
64-
String operatorVersion = version.substring("uid2-operator=".length());
65-
boolean isSupported = isVersionGreaterOrEqual(operatorVersion, ConfigStore.Global.getOrDefault(encryptionSupportVersion, "9999"));
66-
logger.debug("Operator version: {}, {}",
67-
operatorVersion, isSupported ? "Supports encryption" : "Does not support encryption");
68-
return isSupported;
69-
}
70-
}
71-
return false;
72-
}
73-
74-
/*
75-
Returns if the version of a semvar v1 is greater or equal to v2
76-
*/
77-
static boolean isVersionGreaterOrEqual(String v1, String v2) {
78-
Pattern pattern = Pattern.compile("(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?");
79-
Matcher m1 = pattern.matcher(v1);
80-
Matcher m2 = pattern.matcher(v2);
81-
82-
int[] parts1 = extractParts(m1);
83-
int[] parts2 = extractParts(m2);
84-
85-
for (int i = 0; i < Math.max(parts1.length, parts2.length); i++) {
86-
int p1 = i < parts1.length ? parts1[i] : 0;
87-
int p2 = i < parts2.length ? parts2[i] : 0;
88-
if (p1 != p2) {
89-
return p1 > p2;
90-
}
91-
}
92-
93-
return true;
94-
}
95-
96-
private static int[] extractParts(Matcher matcher) {
97-
int[] parts = new int[3];
98-
if (matcher.find()) {
99-
for (int i = 1; i <= 3; i++) {
100-
String group = matcher.group(i);
101-
parts[i - 1] = group != null ? Integer.parseInt(group) : 0;
102-
}
103-
}
104-
return parts;
47+
return Boolean.parseBoolean(rc.request().getHeader("Encrypted"));
10548
}
10649
}

src/test/java/com/uid2/core/util/OperatorInfoTest.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ void testGetOperatorInfo() throws Exception {
5252
Map<String, Object> data = new HashMap<>();
5353
data.put(API_CLIENT_PROP, mockOperatorKey);
5454
when(mockRoutingContext.data()).thenReturn(data);
55-
when(mockRequest.getHeader(AppVersionHeader)).thenReturn("uid2-operator=3.0.0");
56-
55+
when(mockRequest.getHeader("Encrypted")).thenReturn("true");
5756
OperatorInfo result = OperatorInfo.getOperatorInfo(mockRoutingContext);
5857

5958
assertNotNull(result);
@@ -73,7 +72,7 @@ void testGetOperatorInfoThrowsException() {
7372

7473
@Test
7574
void testSupportsEncryptionTrue() {
76-
when(mockRequest.getHeader(AppVersionHeader)).thenReturn("uid2-operator=3.0.0");
75+
when(mockRequest.getHeader("Encrypted")).thenReturn("true");
7776
assertTrue(OperatorInfo.supportsEncryption(mockRoutingContext));
7877
}
7978

@@ -88,18 +87,4 @@ void testSupportsEncryptionMissingHeader() {
8887
when(mockRequest.getHeader(AppVersionHeader)).thenReturn(null);
8988
assertFalse(OperatorInfo.supportsEncryption(mockRoutingContext));
9089
}
91-
92-
@Test
93-
void testIsVersionGreaterOrEqual() {
94-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("2.0.0", "1.0.0"));
95-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("2.0.0", "2.0.0"));
96-
assertFalse(OperatorInfo.isVersionGreaterOrEqual("1.0.0", "2.0.0"));
97-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("2.1.0", "2.0.0"));
98-
assertFalse(OperatorInfo.isVersionGreaterOrEqual("2.0.1", "2.1.0"));
99-
assertFalse(OperatorInfo.isVersionGreaterOrEqual("operator.5.26.19-56899dc0d7", "operator.5.27.19-56899dc0d7"));
100-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("operator.5.27.19-56899dc0d7", "operator.5.27.19-56899dc0d7"));
101-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("operator.5.27.19-56899dc0d7", "operator.5.26.19-56899dc0d7"));
102-
103-
assertTrue(OperatorInfo.isVersionGreaterOrEqual("uid2-operator.5.40.25-alpha-15-SNAPSHOT", "uid2-operator.5.40.25-alpha-15-SNAPSHOT"));
104-
}
10590
}

src/test/java/com/uid2/core/vertx/CoreVerticleTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ void cloudEncryptionKeyRetrieveNoKeysOrError(Vertx vertx, VertxTestContext testC
815815

816816
@Tag("dontForceJwt")
817817
@Test
818-
void keysetRefreshSuccessHigherVersion(Vertx vertx, VertxTestContext testContext) throws Exception {
818+
void keysetRefreshSuccessEncrypted(Vertx vertx, VertxTestContext testContext) throws Exception {
819819
fakeAuth(attestationProtocolPublic, Role.OPERATOR);
820820
addAttestationProvider(attestationProtocolPublic);
821821
onHandleAttestationRequest(() -> {
@@ -824,8 +824,7 @@ void keysetRefreshSuccessHigherVersion(Vertx vertx, VertxTestContext testContext
824824
});
825825

826826
MultiMap headers = MultiMap.caseInsensitiveMultiMap();
827-
headers.add(Const.Http.AppVersionHeader, "uid2-operator=3.7.16-SNAPSHOT;uid2-attestation-api=1.1.0;uid2-shared=2.7.0-3e279acefa");
828-
827+
headers.add("Encrypted","true");
829828
getWithVersion(vertx, "key/keyset/refresh", headers, ar -> {
830829
assertTrue(ar.succeeded());
831830
if (ar.succeeded()) {

0 commit comments

Comments
 (0)