Skip to content

Commit d0b7c71

Browse files
committed
Fix encodings UvfMetadataPayload.
1 parent bc8ed9d commit d0b7c71

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

hub/src/main/java/ch/iterate/hub/crypto/uvf/UvfMetadataPayload.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public String toJSON() throws JsonProcessingException {
100100
}
101101

102102
public static UvfMetadataPayload create() {
103-
final String kid = new AlphanumericRandomStringService(4).random();
103+
final String kid = Base64URL.encode(new AlphanumericRandomStringService(4).random()).toString();
104104
final byte[] rawSeed = new byte[32];
105105
FastSecureRandomProvider.get().provide().nextBytes(rawSeed);
106106
final byte[] kdfSalt = new byte[32];
@@ -109,12 +109,12 @@ public static UvfMetadataPayload create() {
109109
.withFileFormat("AES-256-GCM-32k")
110110
.withNameFormat("AES-SIV-512-B64URL")
111111
.withSeeds(new HashMap<String, String>() {{
112-
put(kid, Base64URL.encode(rawSeed).toString());
112+
put(kid, Base64.getEncoder().encodeToString(rawSeed));
113113
}})
114114
.withLatestSeed(kid)
115115
.withinitialSeed(kid)
116116
.withKdf("HKDF-SHA512")
117-
.withKdfSalt(Base64URL.encode(kdfSalt).toString());
117+
.withKdfSalt(Base64.getEncoder().encodeToString(kdfSalt));
118118
}
119119

120120
public byte[] computeRootDirId() {

hub/src/test/java/ch/iterate/hub/crypto/uvf/UvfMetadataPayloadTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44

55
package ch.iterate.hub.crypto.uvf;
66

7+
import ch.cyberduck.core.AbstractPath;
8+
import ch.cyberduck.core.Path;
9+
import ch.cyberduck.core.cryptomator.UVFVault;
710
import ch.cyberduck.core.cryptomator.random.FastSecureRandomProvider;
11+
import ch.cyberduck.core.exception.BackgroundException;
812

13+
import org.cryptomator.cryptolib.api.UVFMasterkey;
914
import org.cryptomator.cryptolib.common.ECKeyPair;
1015
import org.cryptomator.cryptolib.common.P384KeyPair;
1116
import org.junit.jupiter.api.Test;
@@ -15,6 +20,7 @@
1520
import java.security.spec.InvalidKeySpecException;
1621
import java.text.ParseException;
1722
import java.util.Base64;
23+
import java.util.EnumSet;
1824
import java.util.HashMap;
1925
import java.util.UUID;
2026

@@ -177,4 +183,18 @@ public void computeRootDirIdHash() throws ParseException, JOSEException, JsonPro
177183
final String hash = meta.computeRootDirIdHash(rootDirId);
178184
assertEquals("6DYU3E5BTPAZ4DWEQPQK3AIHX2DXSPHG", hash);
179185
}
186+
187+
@Test
188+
public void testUVFMasterkeyFromUvfMetadataPayload() throws JsonProcessingException {
189+
final UvfMetadataPayload uvmetadataPayload = UvfMetadataPayload.create();
190+
UVFMasterkey.fromDecryptedPayload(uvmetadataPayload.toJSON());
191+
}
192+
193+
@Test
194+
public void testUvfVaultLoadFromMetadataPayload() throws JsonProcessingException, BackgroundException {
195+
final UvfMetadataPayload uvfMetadataPayload = UvfMetadataPayload.create();
196+
final String decryptedPayload = uvfMetadataPayload.toJSON();
197+
final UVFVault uvfVault = new UVFVault(new Path("/", EnumSet.of(AbstractPath.Type.directory)), decryptedPayload, null, null);
198+
uvfVault.load(null, null);
199+
}
180200
}

0 commit comments

Comments
 (0)