Skip to content

Commit 77f476d

Browse files
Merge pull request #185 from IABTechLab/cbc-UID2-4571-cloud-encryption-cleanup
Adding logic for salts and clientSideKeys
2 parents 7a33db7 + 63efb3e commit 77f476d

9 files changed

+45
-13
lines changed

conf/local-e2e-config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@
3535
"optout_url": "http://localhost:8081",
3636
"s3_keys_metadata_path": "s3encryption_keys/metadata.json",
3737
"cloud_keys_metadata_path": "cloud_encryption_keys/metadata.json",
38-
"encryption_support_version": "6.0.0"
38+
"encryption_support_version": "5.43.5"
3939
}

conf/local-e2e-docker-config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@
3333
"core_public_url": "http://core:8088",
3434
"optout_url": "http://optout:8081",
3535
"cloud_encryption_keys_metadata_path": "cloud_encryption_keys/metadata.json",
36-
"encryption_support_version": "6.0.0"
36+
"encryption_support_version": "5.34.5"
3737
}

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.uid2</groupId>
88
<artifactId>uid2-core</artifactId>
9-
<version>2.22.0</version>
9+
<version>2.22.4-alpha-68-SNAPSHOT</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -24,7 +24,7 @@
2424
<vertx.verticle>com.uid2.core.vertx.CoreVerticle</vertx.verticle>
2525
<launcher.class>io.vertx.core.Launcher</launcher.class>
2626

27-
<uid2-shared.version>8.0.0</uid2-shared.version>
27+
<uid2-shared.version>8.0.25</uid2-shared.version>
2828
<image.version>${project.version}</image.version>
2929
</properties>
3030

src/main/java/com/uid2/core/service/ClientSideKeypairMetadataProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.uid2.core.service;
22

33
import com.uid2.core.model.SecretStore;
4+
import com.uid2.core.util.OperatorInfo;
45
import com.uid2.shared.cloud.ICloudStorage;
56
import com.uid2.shared.store.CloudPath;
67
import com.uid2.shared.store.scope.GlobalScope;
@@ -11,6 +12,7 @@
1112
import java.io.InputStream;
1213
import java.io.InputStreamReader;
1314

15+
import static com.uid2.core.util.MetadataHelper.getMetadataPathName;
1416
import static com.uid2.core.util.MetadataHelper.readToEndAsString;
1517

1618
public class ClientSideKeypairMetadataProvider implements IClientSideKeypairMetadataProvider {
@@ -24,8 +26,8 @@ public ClientSideKeypairMetadataProvider(ICloudStorage cloudStorage) {
2426
}
2527

2628
@Override
27-
public String getMetadata() throws Exception {
28-
String pathname = new GlobalScope(new CloudPath(SecretStore.Global.get(ClientSideKeypairMetadataPathName))).getMetadataPath().toString();
29+
public String getMetadata(OperatorInfo info) throws Exception {
30+
String pathname = getMetadataPathName(info, SecretStore.Global.get(ClientSideKeypairMetadataPathName));
2931
String original = readToEndAsString(metadataStreamProvider.download(pathname));
3032
JsonObject main = (JsonObject) Json.decodeValue(original);
3133
JsonObject obj = main.getJsonObject("client_side_keypairs");
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.uid2.core.service;
22

33

4+
import com.uid2.core.util.OperatorInfo;
5+
46
public interface IClientSideKeypairMetadataProvider {
5-
String getMetadata() throws Exception;
7+
String getMetadata(OperatorInfo info) throws Exception;
68
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.uid2.core.service;
22

3+
import com.uid2.core.util.OperatorInfo;
4+
35
public interface ISaltMetadataProvider {
4-
String getMetadata() throws Exception;
6+
String getMetadata(OperatorInfo info) throws Exception;
57
}

src/main/java/com/uid2/core/service/SaltMetadataProvider.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package com.uid2.core.service;
22

33
import com.uid2.core.model.SecretStore;
4+
import com.uid2.core.util.OperatorInfo;
45
import com.uid2.shared.cloud.ICloudStorage;
56
import io.vertx.core.json.Json;
67
import io.vertx.core.json.JsonArray;
78
import io.vertx.core.json.JsonObject;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
811

912
import java.io.IOException;
1013
import java.io.InputStream;
1114
import java.io.InputStreamReader;
12-
import static com.uid2.core.util.MetadataHelper.readToEndAsString;
15+
16+
import static com.uid2.core.util.MetadataHelper.*;
1317

1418
public class SaltMetadataProvider implements ISaltMetadataProvider {
19+
private static final Logger LOGGER = LoggerFactory.getLogger(SaltMetadataProvider.class);
1520

1621
public static final String SaltsMetadataPathName = "salts_metadata_path";
1722

@@ -28,8 +33,9 @@ public SaltMetadataProvider(ICloudStorage fileStreamProvider, ICloudStorage down
2833
}
2934

3035
@Override
31-
public String getMetadata() throws Exception {
32-
String original = readToEndAsString(metadataStreamProvider.download(SecretStore.Global.get(SaltsMetadataPathName)));
36+
public String getMetadata(OperatorInfo info) throws Exception {
37+
String pathname = getMetadataPathNameOldPrivateNoSite(info, SecretStore.Global.get(SaltsMetadataPathName));
38+
String original = readToEndAsString(metadataStreamProvider.download(pathname));
3339
JsonObject main = (JsonObject) Json.decodeValue(original);
3440
JsonArray salts = main.getJsonArray("salts");
3541
for(int i=0;i<salts.size();++i) {

src/main/java/com/uid2/core/util/MetadataHelper.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,25 @@ public static String getMetadataPathName(OperatorType operatorType, int siteId,
5555
return store.getMetadataPath().toString();
5656
}
5757

58+
// This exists because salts were never split into site folders for private operators.
59+
public static String getMetadataPathNameOldPrivateNoSite(OperatorInfo info, String metadataPathName) {
60+
StoreScope store;
61+
Boolean providePrivateSiteData = ConfigStore.Global.getBoolean("provide_private_site_data");
62+
if (info.getSupportsEncryption()) { // Check if decryption is possible
63+
if (info.getOperatorType() == OperatorType.PUBLIC ) //siteId_public folder
64+
{
65+
store = new EncryptedScope(new CloudPath(metadataPathName), info.getSiteId(), true);
66+
} else //siteId_private folder
67+
{
68+
store = new EncryptedScope(new CloudPath(metadataPathName), info.getSiteId(), false);
69+
}
70+
} else {
71+
store = new GlobalScope(new CloudPath(metadataPathName));
72+
}
73+
74+
return store.getMetadataPath().toString();
75+
}
76+
5877
public static String readToEndAsString(InputStream stream) throws IOException {
5978
final InputStreamReader reader = new InputStreamReader(stream);
6079
final char[] buff = new char[1024];

src/main/java/com/uid2/core/vertx/CoreVerticle.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,9 @@ private void handleSiteRefresh(RoutingContext rc) {
392392

393393
private void handleSaltRefresh(RoutingContext rc) {
394394
try {
395+
OperatorInfo info = OperatorInfo.getOperatorInfo(rc);
395396
rc.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json")
396-
.end(saltMetadataProvider.getMetadata());
397+
.end(saltMetadataProvider.getMetadata(info));
397398
} catch (Exception e) {
398399
logger.warn("exception in handleSaltRefresh: " + e.getMessage(), e);
399400
Error("error", 500, rc, "error processing salt refresh");
@@ -463,7 +464,7 @@ private void handleClientSideKeypairRefresh(RoutingContext rc) {
463464
return;
464465
}
465466
rc.response().putHeader(HttpHeaders.CONTENT_TYPE, "application/json")
466-
.end(clientSideKeypairMetadataProvider.getMetadata());
467+
.end(clientSideKeypairMetadataProvider.getMetadata(info));
467468
} catch (Exception e) {
468469
logger.warn("exception in handleClientSideKeypairRefresh: " + e.getMessage(), e);
469470
Error("error", 500, rc, "error processing client_side_keypairs refresh");

0 commit comments

Comments
 (0)