Skip to content

Commit 9e6f94f

Browse files
adjusted to latest cryptolib api changes
1 parent 1178bf1 commit 9e6f94f

14 files changed

+34
-71
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<maven.compiler.release>16</maven.compiler.release>
1919

2020
<!-- dependencies -->
21-
<cryptolib.version>2.0.0-rc5</cryptolib.version>
21+
<cryptolib.version>2.0.0-rc6</cryptolib.version>
2222
<jwt.version>3.17.0</jwt.version>
2323
<dagger.version>2.37</dagger.version>
2424
<guava.version>30.1.1-jre</guava.version>

src/main/java/org/cryptomator/cryptofs/CryptoFileSystemProperties.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.cryptomator.cryptofs;
1010

1111
import com.google.common.base.Strings;
12+
import org.cryptomator.cryptolib.api.CryptorProvider;
1213
import org.cryptomator.cryptolib.api.MasterkeyLoader;
1314

1415
import java.net.URI;
@@ -91,7 +92,7 @@ public enum FileSystemFlags {
9192
*/
9293
public static final String PROPERTY_CIPHER_COMBO = "cipherCombo";
9394

94-
static final VaultCipherCombo DEFAULT_CIPHER_COMBO = VaultCipherCombo.SIV_GCM;
95+
static final CryptorProvider.Scheme DEFAULT_CIPHER_COMBO = CryptorProvider.Scheme.SIV_GCM;
9596

9697
private final Set<Entry<String, Object>> entries;
9798

@@ -110,8 +111,8 @@ MasterkeyLoader keyLoader() {
110111
return (MasterkeyLoader) get(PROPERTY_KEYLOADER);
111112
}
112113

113-
public VaultCipherCombo cipherCombo() {
114-
return (VaultCipherCombo) get(PROPERTY_CIPHER_COMBO);
114+
public CryptorProvider.Scheme cipherCombo() {
115+
return (CryptorProvider.Scheme) get(PROPERTY_CIPHER_COMBO);
115116
}
116117

117118
@SuppressWarnings("unchecked")
@@ -183,7 +184,7 @@ public static CryptoFileSystemProperties wrap(Map<String, ?> properties) {
183184
*/
184185
public static class Builder {
185186

186-
public VaultCipherCombo cipherCombo = DEFAULT_CIPHER_COMBO;
187+
public CryptorProvider.Scheme cipherCombo = DEFAULT_CIPHER_COMBO;
187188
private MasterkeyLoader keyLoader = null;
188189
private final Set<FileSystemFlags> flags = EnumSet.copyOf(DEFAULT_FILESYSTEM_FLAGS);
189190
private String vaultConfigFilename = DEFAULT_VAULTCONFIG_FILENAME;
@@ -199,7 +200,7 @@ private Builder(Map<String, ?> properties) {
199200
checkedSet(String.class, PROPERTY_MASTERKEY_FILENAME, properties, this::withMasterkeyFilename);
200201
checkedSet(Set.class, PROPERTY_FILESYSTEM_FLAGS, properties, this::withFlags);
201202
checkedSet(Integer.class, PROPERTY_MAX_CLEARTEXT_NAME_LENGTH, properties, this::withMaxCleartextNameLength);
202-
checkedSet(VaultCipherCombo.class, PROPERTY_CIPHER_COMBO, properties, this::withCipherCombo);
203+
checkedSet(CryptorProvider.Scheme.class, PROPERTY_CIPHER_COMBO, properties, this::withCipherCombo);
203204
}
204205

205206
private <T> void checkedSet(Class<T> type, String key, Map<String, ?> properties, Consumer<T> setter) {
@@ -235,7 +236,7 @@ public Builder withMaxCleartextNameLength(int maxCleartextNameLength) {
235236
* @return this
236237
* @since 2.0.0
237238
*/
238-
public Builder withCipherCombo(VaultCipherCombo cipherCombo) {
239+
public Builder withCipherCombo(CryptorProvider.Scheme cipherCombo) {
239240
this.cipherCombo = cipherCombo;
240241
return this;
241242
}

src/main/java/org/cryptomator/cryptofs/CryptoFileSystemProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.cryptomator.cryptofs.common.Constants;
1313
import org.cryptomator.cryptofs.common.FileSystemCapabilityChecker;
1414
import org.cryptomator.cryptolib.api.Cryptor;
15+
import org.cryptomator.cryptolib.api.CryptorProvider;
1516
import org.cryptomator.cryptolib.api.Masterkey;
1617
import org.cryptomator.cryptolib.api.MasterkeyLoadingFailedException;
1718

@@ -143,7 +144,7 @@ public static void initialize(Path pathToVault, CryptoFileSystemProperties prope
143144
byte[] rawKey = new byte[0];
144145
var config = VaultConfig.createNew().cipherCombo(properties.cipherCombo()).shorteningThreshold(Constants.DEFAULT_SHORTENING_THRESHOLD).build();
145146
try (Masterkey key = properties.keyLoader().loadKey(keyId);
146-
Cryptor cryptor = config.getCipherCombo().getCryptorProvider(strongSecureRandom()).withKey(key)) {
147+
Cryptor cryptor = CryptorProvider.forScheme(config.getCipherCombo()).provide(key, strongSecureRandom())) {
147148
rawKey = key.getEncoded();
148149
// save vault config:
149150
Path vaultConfigPath = pathToVault.resolve(properties.vaultConfigFilename());

src/main/java/org/cryptomator/cryptofs/CryptoFileSystems.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.cryptomator.cryptofs.common.Constants;
44
import org.cryptomator.cryptofs.common.FileSystemCapabilityChecker;
55
import org.cryptomator.cryptolib.api.Cryptor;
6+
import org.cryptomator.cryptolib.api.CryptorProvider;
67
import org.cryptomator.cryptolib.api.Masterkey;
78
import org.cryptomator.cryptolib.api.MasterkeyLoadingFailedException;
89
import org.slf4j.Logger;
@@ -51,7 +52,7 @@ public CryptoFileSystemImpl create(CryptoFileSystemProvider provider, Path pathT
5152
try (Masterkey key = properties.keyLoader().loadKey(keyId)) {
5253
var config = configLoader.verify(key.getEncoded(), Constants.VAULT_VERSION);
5354
var adjustedProperties = adjustForCapabilities(pathToVault, properties);
54-
var cryptor = config.getCipherCombo().getCryptorProvider(csprng).withKey(key.clone());
55+
var cryptor = CryptorProvider.forScheme(config.getCipherCombo()).provide(key.clone(), csprng);
5556
try {
5657
checkVaultRootExistence(pathToVault, cryptor);
5758
return fileSystems.compute(normalizedPathToVault, (path, fs) -> {

src/main/java/org/cryptomator/cryptofs/VaultCipherCombo.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/main/java/org/cryptomator/cryptofs/VaultConfig.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.auth0.jwt.exceptions.SignatureVerificationException;
99
import com.auth0.jwt.interfaces.DecodedJWT;
1010
import org.cryptomator.cryptofs.common.Constants;
11+
import org.cryptomator.cryptolib.api.CryptorProvider;
1112
import org.cryptomator.cryptolib.api.Masterkey;
1213
import org.cryptomator.cryptolib.api.MasterkeyLoader;
1314
import org.cryptomator.cryptolib.api.MasterkeyLoadingFailedException;
@@ -36,13 +37,13 @@ public class VaultConfig {
3637

3738
private final String id;
3839
private final int vaultVersion;
39-
private final VaultCipherCombo cipherCombo;
40+
private final CryptorProvider.Scheme cipherCombo;
4041
private final int shorteningThreshold;
4142

4243
private VaultConfig(DecodedJWT verifiedConfig) {
4344
this.id = verifiedConfig.getId();
4445
this.vaultVersion = verifiedConfig.getClaim(JSON_KEY_VAULTVERSION).asInt();
45-
this.cipherCombo = VaultCipherCombo.valueOf(verifiedConfig.getClaim(JSON_KEY_CIPHERCONFIG).asString());
46+
this.cipherCombo = CryptorProvider.Scheme.valueOf(verifiedConfig.getClaim(JSON_KEY_CIPHERCONFIG).asString());
4647
this.shorteningThreshold = verifiedConfig.getClaim(JSON_KEY_SHORTENING_THRESHOLD).asInt();
4748
}
4849

@@ -61,7 +62,7 @@ public int getVaultVersion() {
6162
return vaultVersion;
6263
}
6364

64-
public VaultCipherCombo getCipherCombo() {
65+
public CryptorProvider.Scheme getCipherCombo() {
6566
return cipherCombo;
6667
}
6768

@@ -184,10 +185,10 @@ public static class VaultConfigBuilder {
184185

185186
private final String id = UUID.randomUUID().toString();
186187
private final int vaultVersion = Constants.VAULT_VERSION;
187-
private VaultCipherCombo cipherCombo;
188+
private CryptorProvider.Scheme cipherCombo;
188189
private int shorteningThreshold;
189190

190-
public VaultConfigBuilder cipherCombo(VaultCipherCombo cipherCombo) {
191+
public VaultConfigBuilder cipherCombo(CryptorProvider.Scheme cipherCombo) {
191192
this.cipherCombo = cipherCombo;
192193
return this;
193194
}

src/main/java/org/cryptomator/cryptofs/attr/CryptoBasicFileAttributes.java

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

1111
import org.cryptomator.cryptofs.common.CiphertextFileType;
1212
import org.cryptomator.cryptofs.fh.OpenCryptoFile;
13-
import org.cryptomator.cryptolib.Cryptors;
1413
import org.cryptomator.cryptolib.api.Cryptor;
1514
import org.slf4j.Logger;
1615
import org.slf4j.LoggerFactory;
@@ -53,7 +52,8 @@ private static long getPlaintextFileSize(Path ciphertextPath, long size, Optiona
5352

5453
private static long calculatePlaintextFileSize(Path ciphertextPath, long size, Cryptor cryptor) {
5554
try {
56-
return Cryptors.cleartextSize(size - cryptor.fileHeaderCryptor().headerSize(), cryptor);
55+
long payloadSize = size - cryptor.fileHeaderCryptor().headerSize();
56+
return cryptor.fileContentCryptor().cleartextSize(payloadSize);
5757
} catch (IllegalArgumentException e) {
5858
LOG.warn("Unable to calculate cleartext file size for {}. Ciphertext size (including header): {}", ciphertextPath, size);
5959
return 0l;

src/main/java/org/cryptomator/cryptofs/ch/CleartextFileChannel.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
import static java.lang.Math.max;
3434
import static java.lang.Math.min;
35-
import static org.cryptomator.cryptolib.Cryptors.ciphertextSize;
3635

3736
@ChannelScoped
3837
public class CleartextFileChannel extends AbstractFileChannel {
@@ -192,7 +191,7 @@ protected void truncateLocked(long newSize) throws IOException {
192191
if (sizeOfIncompleteChunk > 0) {
193192
chunkCache.get(indexOfLastChunk).truncate(sizeOfIncompleteChunk);
194193
}
195-
long ciphertextFileSize = cryptor.fileHeaderCryptor().headerSize() + ciphertextSize(newSize, cryptor);
194+
long ciphertextFileSize = cryptor.fileHeaderCryptor().headerSize() + cryptor.fileContentCryptor().ciphertextSize(newSize);
196195
chunkCache.invalidateAll(); // make sure no chunks _after_ newSize exist that would otherwise be written during the next cache eviction
197196
ciphertextFileChannel.truncate(ciphertextFileSize);
198197
position = min(newSize, position);

src/main/java/org/cryptomator/cryptofs/fh/OpenCryptoFile.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.cryptomator.cryptofs.EffectiveOpenOptions;
1212
import org.cryptomator.cryptofs.ch.ChannelComponent;
1313
import org.cryptomator.cryptofs.ch.CleartextFileChannel;
14-
import org.cryptomator.cryptolib.Cryptors;
1514
import org.cryptomator.cryptolib.api.Cryptor;
1615
import org.cryptomator.cryptolib.api.FileHeader;
1716
import org.slf4j.Logger;
@@ -135,7 +134,8 @@ private void initFileSize(FileChannel ciphertextFileChannel) throws IOException
135134
try {
136135
long ciphertextSize = ciphertextFileChannel.size();
137136
if (ciphertextSize > 0l) {
138-
cleartextSize = Cryptors.cleartextSize(ciphertextSize - cryptor.fileHeaderCryptor().headerSize(), cryptor);
137+
long payloadSize = ciphertextSize - cryptor.fileHeaderCryptor().headerSize();
138+
cleartextSize = cryptor.fileContentCryptor().cleartextSize(payloadSize);
139139
}
140140
} catch (IllegalArgumentException e) {
141141
LOG.warn("Invalid cipher text file size. Assuming empty file.", e);

src/main/java/org/cryptomator/cryptofs/fh/OpenCryptoFileModule.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import java.util.concurrent.locks.ReentrantReadWriteLock;
1919
import java.util.function.Supplier;
2020

21-
import static org.cryptomator.cryptolib.Cryptors.cleartextSize;
22-
2321
@Module
2422
public class OpenCryptoFileModule {
2523

0 commit comments

Comments
 (0)