1616import com .uid2 .shared .auth .RotatingOperatorKeyProvider ;
1717import com .uid2 .shared .cloud .CloudUtils ;
1818import com .uid2 .shared .cloud .ICloudStorage ;
19+ import com .uid2 .shared .cloud .TaggableCloudStorage ;
1920import com .uid2 .shared .model .EncryptionKey ;
2021import com .uid2 .shared .model .KeysetKey ;
2122import com .uid2 .shared .model .Site ;
2223import com .uid2 .shared .store .CloudPath ;
2324import com .uid2 .admin .legacy .LegacyClientKey ;
25+ import com .uid2 .shared .store .RotatingEncryptedSaltProvider ;
26+ import com .uid2 .shared .store .RotatingSaltProvider ;
2427import com .uid2 .shared .store .reader .RotatingCloudEncryptionKeyProvider ;
2528import com .uid2 .shared .store .scope .GlobalScope ;
2629import io .vertx .core .json .JsonObject ;
3235public class EncryptedFilesSyncJob extends Job {
3336 private final JsonObject config ;
3437 private final WriteLock writeLock ;
35- private final RotatingCloudEncryptionKeyProvider RotatingCloudEncryptionKeyProvider ;
38+ private final RotatingCloudEncryptionKeyProvider rotatingCloudEncryptionKeyProvider ;
3639
3740 public EncryptedFilesSyncJob (JsonObject config , WriteLock writeLock , RotatingCloudEncryptionKeyProvider RotatingCloudEncryptionKeyProvider ) {
3841 this .config = config ;
3942 this .writeLock = writeLock ;
40- this .RotatingCloudEncryptionKeyProvider = RotatingCloudEncryptionKeyProvider ;
43+ this .rotatingCloudEncryptionKeyProvider = RotatingCloudEncryptionKeyProvider ;
4144 }
4245
4346 @ Override
@@ -47,20 +50,22 @@ public String getId() {
4750
4851 @ Override
4952 public void execute () throws Exception {
50- ICloudStorage cloudStorage = CloudUtils .createStorage (config .getString (Const .Config .CoreS3BucketProp ), config );
53+ TaggableCloudStorage cloudStorage = CloudUtils .createStorage (config .getString (Const .Config .CoreS3BucketProp ), config );
5154 FileStorage fileStorage = new TmpFileStorage ();
5255 ObjectWriter jsonWriter = JsonUtil .createJsonWriter ();
5356 Clock clock = new InstantClock ();
5457 VersionGenerator versionGenerator = new EpochVersionGenerator (clock );
5558 FileManager fileManager = new FileManager (cloudStorage , fileStorage );
5659
60+ RotatingSaltProvider saltProvider = new RotatingSaltProvider (cloudStorage , config .getString (Const .Config .SaltsMetadataPathProp ));
61+
5762 SiteStoreFactory siteStoreFactory = new SiteStoreFactory (
5863 cloudStorage ,
5964 new CloudPath (config .getString (Const .Config .SitesMetadataPathProp )),
6065 jsonWriter ,
6166 versionGenerator ,
6267 clock ,
63- RotatingCloudEncryptionKeyProvider ,
68+ rotatingCloudEncryptionKeyProvider ,
6469 fileManager );
6570
6671 ClientKeyStoreFactory clientKeyStoreFactory = new ClientKeyStoreFactory (
@@ -69,15 +74,15 @@ public void execute() throws Exception {
6974 jsonWriter ,
7075 versionGenerator ,
7176 clock ,
72- RotatingCloudEncryptionKeyProvider ,
77+ rotatingCloudEncryptionKeyProvider ,
7378 fileManager );
7479
7580 EncryptionKeyStoreFactory encryptionKeyStoreFactory = new EncryptionKeyStoreFactory (
7681 cloudStorage ,
7782 new CloudPath (config .getString (Const .Config .KeysMetadataPathProp )),
7883 versionGenerator ,
7984 clock ,
80- RotatingCloudEncryptionKeyProvider ,
85+ rotatingCloudEncryptionKeyProvider ,
8186 fileManager );
8287
8388 KeyAclStoreFactory keyAclStoreFactory = new KeyAclStoreFactory (
@@ -86,7 +91,7 @@ public void execute() throws Exception {
8691 jsonWriter ,
8792 versionGenerator ,
8893 clock ,
89- RotatingCloudEncryptionKeyProvider ,
94+ rotatingCloudEncryptionKeyProvider ,
9095 fileManager );
9196
9297 KeysetStoreFactory keysetStoreFactory = new KeysetStoreFactory (
@@ -96,7 +101,7 @@ public void execute() throws Exception {
96101 versionGenerator ,
97102 clock ,
98103 fileManager ,
99- RotatingCloudEncryptionKeyProvider ,
104+ rotatingCloudEncryptionKeyProvider ,
100105 config .getBoolean (enableKeysetConfigProp ));
101106
102107 KeysetKeyStoreFactory keysetKeyStoreFactory = new KeysetKeyStoreFactory (
@@ -105,15 +110,24 @@ public void execute() throws Exception {
105110 versionGenerator ,
106111 clock ,
107112 fileManager ,
108- RotatingCloudEncryptionKeyProvider ,
113+ rotatingCloudEncryptionKeyProvider ,
109114 config .getBoolean (enableKeysetConfigProp ));
110115
116+ SaltStoreFactory saltStoreFactory = new SaltStoreFactory (
117+ config ,
118+ new CloudPath (config .getString (Const .Config .SaltsMetadataPathProp )),
119+ fileManager ,
120+ cloudStorage ,
121+ versionGenerator ,
122+ rotatingCloudEncryptionKeyProvider
123+ );
124+
111125 CloudPath operatorMetadataPath = new CloudPath (config .getString (Const .Config .OperatorsMetadataPathProp ));
112126 GlobalScope operatorScope = new GlobalScope (operatorMetadataPath );
113127 RotatingOperatorKeyProvider operatorKeyProvider = new RotatingOperatorKeyProvider (cloudStorage , cloudStorage , operatorScope );
114128
115129 synchronized (writeLock ) {
116- RotatingCloudEncryptionKeyProvider .loadContent ();
130+ rotatingCloudEncryptionKeyProvider .loadContent ();
117131 operatorKeyProvider .loadContent (operatorKeyProvider .getMetadata ());
118132 siteStoreFactory .getGlobalReader ().loadContent (siteStoreFactory .getGlobalReader ().getMetadata ());
119133 clientKeyStoreFactory .getGlobalReader ().loadContent ();
@@ -123,7 +137,9 @@ public void execute() throws Exception {
123137 keysetStoreFactory .getGlobalReader ().loadContent ();
124138 keysetKeyStoreFactory .getGlobalReader ().loadContent ();
125139 }
140+ saltProvider .loadContent ();
126141 }
142+
127143 Collection <OperatorKey > globalOperators = operatorKeyProvider .getAll ();
128144 Collection <Site > globalSites = siteStoreFactory .getGlobalReader ().getAllSites ();
129145 Collection <LegacyClientKey > globalClients = clientKeyStoreFactory .getGlobalReader ().getAll ();
@@ -146,6 +162,10 @@ public void execute() throws Exception {
146162 fileManager ,
147163 keyAclStoreFactory ,
148164 MultiScopeStoreWriter ::areMapsEqual );
165+ MultiScopeStoreWriter <Collection <RotatingSaltProvider .SaltSnapshot >> saltWriter = new MultiScopeStoreWriter <>(
166+ fileManager ,
167+ saltStoreFactory ,
168+ MultiScopeStoreWriter ::areCollectionsEqual );
149169
150170 SiteEncryptionJob siteEncryptionSyncJob = new SiteEncryptionJob (siteWriter , globalSites , globalOperators );
151171 ClientKeyEncryptionJob clientEncryptionSyncJob = new ClientKeyEncryptionJob (clientWriter , globalClients , globalOperators );
@@ -158,10 +178,13 @@ public void execute() throws Exception {
158178 encryptionKeyWriter
159179 );
160180 KeyAclEncryptionJob keyAclEncryptionSyncJob = new KeyAclEncryptionJob (keyAclWriter , globalOperators , globalKeyAcls );
181+ SaltEncryptionJob saltEncryptionJob = new SaltEncryptionJob (globalOperators , saltProvider .getSnapshots (), saltWriter );
182+
161183 siteEncryptionSyncJob .execute ();
162184 clientEncryptionSyncJob .execute ();
163185 encryptionKeyEncryptionSyncJob .execute ();
164186 keyAclEncryptionSyncJob .execute ();
187+ saltEncryptionJob .execute ();
165188
166189 if (config .getBoolean (enableKeysetConfigProp )) {
167190 Map <Integer , Keyset > globalKeysets = keysetStoreFactory .getGlobalReader ().getSnapshot ().getAllKeysets ();
0 commit comments