22
33import com .fasterxml .jackson .databind .ObjectWriter ;
44import com .uid2 .admin .job .EncryptionJob .*;
5- import com .uid2 .admin .job .EncryptionJob .ClientKeyEncryptionJob ;
65import com .uid2 .admin .job .model .Job ;
76import com .uid2 .admin .store .*;
87import com .uid2 .admin .store .factory .*;
1716import com .uid2 .shared .auth .RotatingOperatorKeyProvider ;
1817import com .uid2 .shared .cloud .CloudUtils ;
1918import com .uid2 .shared .cloud .ICloudStorage ;
19+ import com .uid2 .shared .cloud .TaggableCloudStorage ;
20+ import com .uid2 .shared .model .ClientSideKeypair ;
2021import com .uid2 .shared .model .EncryptionKey ;
2122import com .uid2 .shared .model .KeysetKey ;
2223import com .uid2 .shared .model .Site ;
2324import com .uid2 .shared .store .CloudPath ;
2425import com .uid2 .admin .legacy .LegacyClientKey ;
25- import com .uid2 .shared .store .reader .RotatingCloudEncryptionKeyProvider ;
26+ import com .uid2 .shared .store .EncryptedRotatingSaltProvider ;
27+ import com .uid2 .shared .store .RotatingSaltProvider ;
2628import com .uid2 .shared .store .reader .RotatingCloudEncryptionKeyProvider ;
2729import com .uid2 .shared .store .scope .GlobalScope ;
2830import io .vertx .core .json .JsonObject ;
3436public class EncryptedFilesSyncJob extends Job {
3537 private final JsonObject config ;
3638 private final WriteLock writeLock ;
37- private final RotatingCloudEncryptionKeyProvider RotatingCloudEncryptionKeyProvider ;
39+ private final RotatingCloudEncryptionKeyProvider rotatingCloudEncryptionKeyProvider ;
3840
3941 public EncryptedFilesSyncJob (JsonObject config , WriteLock writeLock , RotatingCloudEncryptionKeyProvider RotatingCloudEncryptionKeyProvider ) {
4042 this .config = config ;
4143 this .writeLock = writeLock ;
42- this .RotatingCloudEncryptionKeyProvider = RotatingCloudEncryptionKeyProvider ;
44+ this .rotatingCloudEncryptionKeyProvider = RotatingCloudEncryptionKeyProvider ;
4345 }
4446
4547 @ Override
@@ -49,20 +51,22 @@ public String getId() {
4951
5052 @ Override
5153 public void execute () throws Exception {
52- ICloudStorage cloudStorage = CloudUtils .createStorage (config .getString (Const .Config .CoreS3BucketProp ), config );
54+ TaggableCloudStorage cloudStorage = CloudUtils .createStorage (config .getString (Const .Config .CoreS3BucketProp ), config );
5355 FileStorage fileStorage = new TmpFileStorage ();
5456 ObjectWriter jsonWriter = JsonUtil .createJsonWriter ();
5557 Clock clock = new InstantClock ();
5658 VersionGenerator versionGenerator = new EpochVersionGenerator (clock );
5759 FileManager fileManager = new FileManager (cloudStorage , fileStorage );
5860
61+ RotatingSaltProvider saltProvider = new RotatingSaltProvider (cloudStorage , config .getString (Const .Config .SaltsMetadataPathProp ));
62+
5963 SiteStoreFactory siteStoreFactory = new SiteStoreFactory (
6064 cloudStorage ,
6165 new CloudPath (config .getString (Const .Config .SitesMetadataPathProp )),
6266 jsonWriter ,
6367 versionGenerator ,
6468 clock ,
65- RotatingCloudEncryptionKeyProvider ,
69+ rotatingCloudEncryptionKeyProvider ,
6670 fileManager );
6771
6872 ClientKeyStoreFactory clientKeyStoreFactory = new ClientKeyStoreFactory (
@@ -71,15 +75,15 @@ public void execute() throws Exception {
7175 jsonWriter ,
7276 versionGenerator ,
7377 clock ,
74- RotatingCloudEncryptionKeyProvider ,
78+ rotatingCloudEncryptionKeyProvider ,
7579 fileManager );
7680
7781 EncryptionKeyStoreFactory encryptionKeyStoreFactory = new EncryptionKeyStoreFactory (
7882 cloudStorage ,
7983 new CloudPath (config .getString (Const .Config .KeysMetadataPathProp )),
8084 versionGenerator ,
8185 clock ,
82- RotatingCloudEncryptionKeyProvider ,
86+ rotatingCloudEncryptionKeyProvider ,
8387 fileManager );
8488
8589 KeyAclStoreFactory keyAclStoreFactory = new KeyAclStoreFactory (
@@ -88,7 +92,7 @@ public void execute() throws Exception {
8892 jsonWriter ,
8993 versionGenerator ,
9094 clock ,
91- RotatingCloudEncryptionKeyProvider ,
95+ rotatingCloudEncryptionKeyProvider ,
9296 fileManager );
9397
9498 KeysetStoreFactory keysetStoreFactory = new KeysetStoreFactory (
@@ -98,7 +102,7 @@ public void execute() throws Exception {
98102 versionGenerator ,
99103 clock ,
100104 fileManager ,
101- RotatingCloudEncryptionKeyProvider ,
105+ rotatingCloudEncryptionKeyProvider ,
102106 config .getBoolean (enableKeysetConfigProp ));
103107
104108 KeysetKeyStoreFactory keysetKeyStoreFactory = new KeysetKeyStoreFactory (
@@ -107,15 +111,33 @@ public void execute() throws Exception {
107111 versionGenerator ,
108112 clock ,
109113 fileManager ,
110- RotatingCloudEncryptionKeyProvider ,
114+ rotatingCloudEncryptionKeyProvider ,
111115 config .getBoolean (enableKeysetConfigProp ));
112116
117+ SaltStoreFactory saltStoreFactory = new SaltStoreFactory (
118+ config ,
119+ new CloudPath (config .getString (Const .Config .SaltsMetadataPathProp )),
120+ fileManager ,
121+ cloudStorage ,
122+ versionGenerator ,
123+ rotatingCloudEncryptionKeyProvider
124+ );
125+
126+ ClientSideKeypairStoreFactory clientSideKeypairStoreFactory = new ClientSideKeypairStoreFactory (
127+ cloudStorage ,
128+ new CloudPath (config .getString (Const .Config .ClientSideKeypairsMetadataPathProp )),
129+ versionGenerator ,
130+ clock ,
131+ rotatingCloudEncryptionKeyProvider ,
132+ fileManager
133+ );
134+
113135 CloudPath operatorMetadataPath = new CloudPath (config .getString (Const .Config .OperatorsMetadataPathProp ));
114136 GlobalScope operatorScope = new GlobalScope (operatorMetadataPath );
115137 RotatingOperatorKeyProvider operatorKeyProvider = new RotatingOperatorKeyProvider (cloudStorage , cloudStorage , operatorScope );
116138
117139 synchronized (writeLock ) {
118- RotatingCloudEncryptionKeyProvider .loadContent ();
140+ rotatingCloudEncryptionKeyProvider .loadContent ();
119141 operatorKeyProvider .loadContent (operatorKeyProvider .getMetadata ());
120142 siteStoreFactory .getGlobalReader ().loadContent (siteStoreFactory .getGlobalReader ().getMetadata ());
121143 clientKeyStoreFactory .getGlobalReader ().loadContent ();
@@ -125,13 +147,18 @@ public void execute() throws Exception {
125147 keysetStoreFactory .getGlobalReader ().loadContent ();
126148 keysetKeyStoreFactory .getGlobalReader ().loadContent ();
127149 }
150+ saltProvider .loadContent ();
151+ clientSideKeypairStoreFactory .getGlobalReader ().loadContent ();
128152 }
153+
129154 Collection <OperatorKey > globalOperators = operatorKeyProvider .getAll ();
130155 Collection <Site > globalSites = siteStoreFactory .getGlobalReader ().getAllSites ();
131156 Collection <LegacyClientKey > globalClients = clientKeyStoreFactory .getGlobalReader ().getAll ();
132157 Collection <EncryptionKey > globalEncryptionKeys = encryptionKeyStoreFactory .getGlobalReader ().getSnapshot ().getActiveKeySet ();
133158 Integer globalMaxKeyId = encryptionKeyStoreFactory .getGlobalReader ().getMetadata ().getInteger ("max_key_id" );
134159 Map <Integer , EncryptionKeyAcl > globalKeyAcls = keyAclStoreFactory .getGlobalReader ().getSnapshot ().getAllAcls ();
160+ Collection <ClientSideKeypair > globalClientSideKeypair = clientSideKeypairStoreFactory .getGlobalReader ().getAll ();
161+
135162 MultiScopeStoreWriter <Collection <Site >> siteWriter = new MultiScopeStoreWriter <>(
136163 fileManager ,
137164 siteStoreFactory ,
@@ -148,6 +175,14 @@ public void execute() throws Exception {
148175 fileManager ,
149176 keyAclStoreFactory ,
150177 MultiScopeStoreWriter ::areMapsEqual );
178+ MultiScopeStoreWriter <Collection <RotatingSaltProvider .SaltSnapshot >> saltWriter = new MultiScopeStoreWriter <>(
179+ fileManager ,
180+ saltStoreFactory ,
181+ MultiScopeStoreWriter ::areCollectionsEqual );
182+ MultiScopeStoreWriter <Collection <ClientSideKeypair >> clientSideKeypairWriter = new MultiScopeStoreWriter <>(
183+ fileManager ,
184+ clientSideKeypairStoreFactory ,
185+ MultiScopeStoreWriter ::areCollectionsEqual );
151186
152187 SiteEncryptionJob siteEncryptionSyncJob = new SiteEncryptionJob (siteWriter , globalSites , globalOperators );
153188 ClientKeyEncryptionJob clientEncryptionSyncJob = new ClientKeyEncryptionJob (clientWriter , globalClients , globalOperators );
@@ -160,10 +195,15 @@ public void execute() throws Exception {
160195 encryptionKeyWriter
161196 );
162197 KeyAclEncryptionJob keyAclEncryptionSyncJob = new KeyAclEncryptionJob (keyAclWriter , globalOperators , globalKeyAcls );
198+ SaltEncryptionJob saltEncryptionJob = new SaltEncryptionJob (globalOperators , saltProvider .getSnapshots (), saltWriter );
199+ ClientSideKeypairEncryptionJob clientSideKeypairEncryptionJob = new ClientSideKeypairEncryptionJob (globalOperators , globalClientSideKeypair , clientSideKeypairWriter );
200+
163201 siteEncryptionSyncJob .execute ();
164202 clientEncryptionSyncJob .execute ();
165203 encryptionKeyEncryptionSyncJob .execute ();
166204 keyAclEncryptionSyncJob .execute ();
205+ saltEncryptionJob .execute ();
206+ clientSideKeypairEncryptionJob .execute ();
167207
168208 if (config .getBoolean (enableKeysetConfigProp )) {
169209 Map <Integer , Keyset > globalKeysets = keysetStoreFactory .getGlobalReader ().getSnapshot ().getAllKeysets ();
0 commit comments