From a79ed49fe7dd23565bf95e359fb6c811039b0935 Mon Sep 17 00:00:00 2001 From: Aleksandrs Ulme Date: Mon, 28 Apr 2025 15:58:33 +0800 Subject: [PATCH] Upgrade shared, no changes to salt files --- pom.xml | 2 +- src/main/java/com/uid2/admin/Main.java | 2 +- .../uid2/admin/job/EncryptionJob/SaltEncryptionJob.java | 2 +- .../com/uid2/admin/job/jobsync/EncryptedFilesSyncJob.java | 2 +- src/main/java/com/uid2/admin/secret/ISaltRotation.java | 2 +- src/main/java/com/uid2/admin/secret/SaltRotation.java | 6 +++--- .../com/uid2/admin/store/factory/SaltStoreFactory.java | 5 ++--- .../uid2/admin/store/writer/EncryptedSaltStoreWriter.java | 4 ++-- .../java/com/uid2/admin/store/writer/SaltStoreWriter.java | 6 +++--- src/main/java/com/uid2/admin/util/PrivateSiteUtil.java | 2 +- src/main/java/com/uid2/admin/util/PublicSiteUtil.java | 2 +- .../java/com/uid2/admin/vertx/service/SaltService.java | 6 +++--- src/test/java/com/uid2/admin/secret/SaltRotationTest.java | 6 +++--- .../admin/store/writer/EncryptedSaltStoreWriterTest.java | 8 ++++---- src/test/java/com/uid2/admin/vertx/SaltServiceTest.java | 4 ++-- 15 files changed, 29 insertions(+), 30 deletions(-) diff --git a/pom.xml b/pom.xml index 42d41e13a..2111ad52d 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ 1.12.2 5.11.2 - 9.1.0 + 9.2.0 0.5.10 ${project.version} diff --git a/src/main/java/com/uid2/admin/Main.java b/src/main/java/com/uid2/admin/Main.java index 1c0f0ee50..25caf0560 100644 --- a/src/main/java/com/uid2/admin/Main.java +++ b/src/main/java/com/uid2/admin/Main.java @@ -39,7 +39,7 @@ import com.uid2.shared.jmx.AdminApi; import com.uid2.shared.model.Site; import com.uid2.shared.store.CloudPath; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import com.uid2.shared.store.reader.*; import com.uid2.shared.store.scope.GlobalScope; import com.uid2.shared.util.HTTPPathMetricFilter; diff --git a/src/main/java/com/uid2/admin/job/EncryptionJob/SaltEncryptionJob.java b/src/main/java/com/uid2/admin/job/EncryptionJob/SaltEncryptionJob.java index 8ebae0b26..074fea26d 100644 --- a/src/main/java/com/uid2/admin/job/EncryptionJob/SaltEncryptionJob.java +++ b/src/main/java/com/uid2/admin/job/EncryptionJob/SaltEncryptionJob.java @@ -7,7 +7,7 @@ import com.uid2.admin.util.PublicSiteUtil; import com.uid2.shared.auth.OperatorKey; import com.uid2.shared.model.SaltEntry; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import java.util.Collection; import java.util.List; diff --git a/src/main/java/com/uid2/admin/job/jobsync/EncryptedFilesSyncJob.java b/src/main/java/com/uid2/admin/job/jobsync/EncryptedFilesSyncJob.java index 594445dd9..18e24adec 100644 --- a/src/main/java/com/uid2/admin/job/jobsync/EncryptedFilesSyncJob.java +++ b/src/main/java/com/uid2/admin/job/jobsync/EncryptedFilesSyncJob.java @@ -22,7 +22,7 @@ import com.uid2.shared.model.Site; import com.uid2.shared.store.CloudPath; import com.uid2.admin.legacy.LegacyClientKey; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import com.uid2.shared.store.reader.RotatingCloudEncryptionKeyProvider; import com.uid2.shared.store.scope.GlobalScope; import io.vertx.core.json.JsonObject; diff --git a/src/main/java/com/uid2/admin/secret/ISaltRotation.java b/src/main/java/com/uid2/admin/secret/ISaltRotation.java index 4d36c0fe2..f01104af6 100644 --- a/src/main/java/com/uid2/admin/secret/ISaltRotation.java +++ b/src/main/java/com/uid2/admin/secret/ISaltRotation.java @@ -1,6 +1,6 @@ package com.uid2.admin.secret; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import java.time.Duration; diff --git a/src/main/java/com/uid2/admin/secret/SaltRotation.java b/src/main/java/com/uid2/admin/secret/SaltRotation.java index 9343ea731..6a92f18b6 100644 --- a/src/main/java/com/uid2/admin/secret/SaltRotation.java +++ b/src/main/java/com/uid2/admin/secret/SaltRotation.java @@ -2,7 +2,7 @@ import com.uid2.shared.model.SaltEntry; import com.uid2.shared.secret.IKeyGenerator; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import io.vertx.core.json.JsonObject; import java.time.Duration; @@ -77,7 +77,7 @@ private void addIndexesToRotate(List entryIndexes, int maxIndexes) { final SaltEntry[] entries = lastSnapshot.getAllRotatingSalts(); final List candidateIndexes = IntStream.range(0, entries.length) - .filter(i -> isBetween(entries[i].getLastUpdated(), minLastUpdated, maxLastUpdated)) + .filter(i -> isBetween(entries[i].lastUpdated(), minLastUpdated, maxLastUpdated)) .boxed().collect(toList()); if (candidateIndexes.size() <= maxIndexes) { entryIndexes.addAll(candidateIndexes); @@ -103,7 +103,7 @@ private RotatingSaltProvider.SaltSnapshot createRotatedSnapshot(RotatingSaltProv for (Integer i : entryIndexes) { final SaltEntry oldSalt = nextSnapshot.getAllRotatingSalts()[i]; final String secret = this.keyGenerator.generateRandomKeyString(32); - nextSnapshot.getAllRotatingSalts()[i] = new SaltEntry(oldSalt.getId(), oldSalt.getHashedId(), lastUpdated, secret); + nextSnapshot.getAllRotatingSalts()[i] = new SaltEntry(oldSalt.id(), oldSalt.hashedId(), lastUpdated, secret, null, null, null, null); } return nextSnapshot; } diff --git a/src/main/java/com/uid2/admin/store/factory/SaltStoreFactory.java b/src/main/java/com/uid2/admin/store/factory/SaltStoreFactory.java index 8261e9425..25cdbd7db 100644 --- a/src/main/java/com/uid2/admin/store/factory/SaltStoreFactory.java +++ b/src/main/java/com/uid2/admin/store/factory/SaltStoreFactory.java @@ -4,11 +4,10 @@ import com.uid2.admin.store.version.VersionGenerator; import com.uid2.admin.store.writer.EncryptedSaltStoreWriter; import com.uid2.admin.store.writer.StoreWriter; -import com.uid2.shared.Const; import com.uid2.shared.cloud.TaggableCloudStorage; import com.uid2.shared.store.CloudPath; -import com.uid2.shared.store.EncryptedRotatingSaltProvider; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.EncryptedRotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import com.uid2.shared.store.reader.RotatingCloudEncryptionKeyProvider; import com.uid2.shared.store.reader.StoreReader; import com.uid2.shared.store.scope.EncryptedScope; diff --git a/src/main/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriter.java b/src/main/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriter.java index 8f3e16b9e..aa2180eda 100644 --- a/src/main/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriter.java +++ b/src/main/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriter.java @@ -8,7 +8,7 @@ import com.uid2.shared.model.CloudEncryptionKey; import com.uid2.shared.model.SaltEntry; import com.uid2.shared.store.CloudPath; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import com.uid2.shared.store.reader.RotatingCloudEncryptionKeyProvider; import com.uid2.shared.store.scope.StoreScope; import org.slf4j.Logger; @@ -85,7 +85,7 @@ protected boolean tryUploadSaltsSnapshot(RotatingSaltProvider.SaltSnapshot snaps StringBuilder stringBuilder = new StringBuilder(); for (SaltEntry entry: snapshot.getAllRotatingSalts()) { - stringBuilder.append(entry.getId()).append(",").append(entry.getLastUpdated()).append(",").append(entry.getSalt()).append("\n"); + stringBuilder.append(entry.id()).append(",").append(entry.lastUpdated()).append(",").append(entry.currentSalt()).append("\n"); } String data = stringBuilder.toString(); diff --git a/src/main/java/com/uid2/admin/store/writer/SaltStoreWriter.java b/src/main/java/com/uid2/admin/store/writer/SaltStoreWriter.java index ab4a65d83..a3557830e 100644 --- a/src/main/java/com/uid2/admin/store/writer/SaltStoreWriter.java +++ b/src/main/java/com/uid2/admin/store/writer/SaltStoreWriter.java @@ -7,7 +7,7 @@ import com.uid2.shared.cloud.TaggableCloudStorage; import com.uid2.shared.model.SaltEntry; import com.uid2.shared.store.CloudPath; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import org.slf4j.Logger; @@ -54,7 +54,7 @@ private List getSnapshots(RotatingSaltProvide List snapshots = null; snapshots = Stream.concat(currentSnapshots.stream(), Stream.of(data)) .sorted(Comparator.comparing(RotatingSaltProvider.SaltSnapshot::getEffective)) - .collect(Collectors.toList()); + .toList(); RotatingSaltProvider.SaltSnapshot newestEffectiveSnapshot = snapshots.stream() .filter(snapshot -> snapshot.isEffective(now)) .reduce((a, b) -> b).orElse(null); @@ -203,7 +203,7 @@ protected boolean tryUploadSaltsSnapshot(RotatingSaltProvider.SaltSnapshot snaps final Path newSaltsFile = Files.createTempFile("operators", ".txt"); try (BufferedWriter w = Files.newBufferedWriter(newSaltsFile)) { for (SaltEntry entry : snapshot.getAllRotatingSalts()) { - w.write(entry.getId() + "," + entry.getLastUpdated() + "," + entry.getSalt() + "\n"); + w.write(entry.id() + "," + entry.lastUpdated() + "," + entry.currentSalt() + "\n"); } } this.upload(newSaltsFile.toString(), location); diff --git a/src/main/java/com/uid2/admin/util/PrivateSiteUtil.java b/src/main/java/com/uid2/admin/util/PrivateSiteUtil.java index 525b9494b..6f8b9b93d 100644 --- a/src/main/java/com/uid2/admin/util/PrivateSiteUtil.java +++ b/src/main/java/com/uid2/admin/util/PrivateSiteUtil.java @@ -8,7 +8,7 @@ import com.uid2.shared.model.KeysetKey; import com.uid2.shared.model.SaltEntry; import com.uid2.shared.model.Site; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/uid2/admin/util/PublicSiteUtil.java b/src/main/java/com/uid2/admin/util/PublicSiteUtil.java index 815454b49..6f7bd7b8c 100644 --- a/src/main/java/com/uid2/admin/util/PublicSiteUtil.java +++ b/src/main/java/com/uid2/admin/util/PublicSiteUtil.java @@ -7,7 +7,7 @@ import com.uid2.shared.auth.OperatorKey; import com.uid2.shared.auth.OperatorType; import com.uid2.shared.model.*; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/uid2/admin/vertx/service/SaltService.java b/src/main/java/com/uid2/admin/vertx/service/SaltService.java index 88ec92511..811963313 100644 --- a/src/main/java/com/uid2/admin/vertx/service/SaltService.java +++ b/src/main/java/com/uid2/admin/vertx/service/SaltService.java @@ -8,7 +8,7 @@ import com.uid2.admin.vertx.WriteLock; import com.uid2.shared.auth.Role; import com.uid2.shared.model.SaltEntry; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import io.vertx.core.http.HttpHeaders; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; @@ -109,10 +109,10 @@ private JsonObject toJson(RotatingSaltProvider.SaltSnapshot snapshot) { jo.put("expires", snapshot.getExpires().toEpochMilli()); jo.put("salts_count", snapshot.getAllRotatingSalts().length); jo.put("min_last_updated", Arrays.stream(snapshot.getAllRotatingSalts()) - .map(SaltEntry::getLastUpdated) + .map(SaltEntry::lastUpdated) .min(Long::compare).orElse(null)); jo.put("max_last_updated", Arrays.stream(snapshot.getAllRotatingSalts()) - .map(SaltEntry::getLastUpdated) + .map(SaltEntry::lastUpdated) .max(Long::compare).orElse(null)); return jo; } diff --git a/src/test/java/com/uid2/admin/secret/SaltRotationTest.java b/src/test/java/com/uid2/admin/secret/SaltRotationTest.java index 8acfa094a..fabdbeb83 100644 --- a/src/test/java/com/uid2/admin/secret/SaltRotationTest.java +++ b/src/test/java/com/uid2/admin/secret/SaltRotationTest.java @@ -2,7 +2,7 @@ import com.uid2.shared.model.SaltEntry; import com.uid2.shared.secret.IKeyGenerator; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import io.vertx.core.json.JsonObject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -48,7 +48,7 @@ private SnapshotBuilder() {} public SnapshotBuilder withEntries(int count, Instant lastUpdated) { for (int i = 0; i < count; ++i) { - entries.add(new SaltEntry(entries.size(), "h", lastUpdated.toEpochMilli(), "salt" + entries.size())); + entries.add(new SaltEntry(entries.size(), "h", lastUpdated.toEpochMilli(), "salt" + entries.size(), null, null, null, null)); } return this; } @@ -60,7 +60,7 @@ public RotatingSaltProvider.SaltSnapshot build(Instant effective, Instant expire } private int countEntriesWithLastUpdated(SaltEntry[] entries, Instant lastUpdated) { - return (int)Arrays.stream(entries).filter(e -> e.getLastUpdated() == lastUpdated.toEpochMilli()).count(); + return (int)Arrays.stream(entries).filter(e -> e.lastUpdated() == lastUpdated.toEpochMilli()).count(); } private static void assertEqualsClose(Instant expected, Instant actual, int withinSeconds) { diff --git a/src/test/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriterTest.java b/src/test/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriterTest.java index b2ea0a7f2..cc4123891 100644 --- a/src/test/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriterTest.java +++ b/src/test/java/com/uid2/admin/store/writer/EncryptedSaltStoreWriterTest.java @@ -7,7 +7,7 @@ import com.uid2.shared.model.CloudEncryptionKey; import com.uid2.shared.model.SaltEntry; import com.uid2.shared.store.CloudPath; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import com.uid2.shared.store.reader.RotatingCloudEncryptionKeyProvider; import com.uid2.shared.store.scope.StoreScope; import io.vertx.core.json.JsonArray; @@ -84,7 +84,7 @@ public void setup() throws Exception { private RotatingSaltProvider.SaltSnapshot makeSnapshot(Instant effective, Instant expires, int nsalts) { SaltEntry[] entries = new SaltEntry[nsalts]; for (int i = 0; i < entries.length; ++i) { - entries[i] = new SaltEntry(i, "hashed_id", effective.toEpochMilli(), "salt"); + entries[i] = new SaltEntry(i, "hashed_id", effective.toEpochMilli(), "salt", null, null, null, null); } return new RotatingSaltProvider.SaltSnapshot(effective, expires, entries, "test_first_level_salt"); } @@ -96,8 +96,8 @@ private void verifyFile(String filelocation, RotatingSaltProvider.SaltSnapshot s int idx = 0; for (String line : contents.split("\n")) { String[] entrySplit = line.split(","); - assertEquals(entries[idx].getId(), Long.parseLong(entrySplit[0])); - assertEquals(entries[idx].getSalt(), entrySplit[2]); + assertEquals(entries[idx].id(), Long.parseLong(entrySplit[0])); + assertEquals(entries[idx].currentSalt(), entrySplit[2]); idx++; } } diff --git a/src/test/java/com/uid2/admin/vertx/SaltServiceTest.java b/src/test/java/com/uid2/admin/vertx/SaltServiceTest.java index b701c1cc8..43b634183 100644 --- a/src/test/java/com/uid2/admin/vertx/SaltServiceTest.java +++ b/src/test/java/com/uid2/admin/vertx/SaltServiceTest.java @@ -6,7 +6,7 @@ import com.uid2.admin.vertx.test.ServiceTestBase; import com.uid2.shared.auth.Role; import com.uid2.shared.model.SaltEntry; -import com.uid2.shared.store.RotatingSaltProvider; +import com.uid2.shared.store.salt.RotatingSaltProvider; import io.vertx.core.Vertx; import io.vertx.core.json.JsonObject; import io.vertx.junit5.VertxTestContext; @@ -47,7 +47,7 @@ private void setSnapshots(RotatingSaltProvider.SaltSnapshot... snapshots) { private RotatingSaltProvider.SaltSnapshot makeSnapshot(Instant effective, Instant expires, int nsalts) { SaltEntry[] entries = new SaltEntry[nsalts]; for (int i = 0; i < entries.length; ++i) { - entries[i] = new SaltEntry(i, "hashed_id", effective.toEpochMilli(), "salt"); + entries[i] = new SaltEntry(i, "hashed_id", effective.toEpochMilli(), "salt", null, null, null, null); } return new RotatingSaltProvider.SaltSnapshot(effective, expires, entries, "test_first_level_salt"); }