Enhance visibility for testing
This commit is contained in:
parent
a4762fb32a
commit
65ad054ff3
@ -52,7 +52,7 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
private final SecureRandom secureRandom;
|
private final SecureRandom secureRandom;
|
||||||
|
|
||||||
public MasterkeyCryptoCloudProvider(CloudContentRepository cloudContentRepository, //
|
public MasterkeyCryptoCloudProvider(CloudContentRepository cloudContentRepository, //
|
||||||
CryptoCloudContentRepositoryFactory cryptoCloudContentRepositoryFactory,
|
CryptoCloudContentRepositoryFactory cryptoCloudContentRepositoryFactory, //
|
||||||
SecureRandom secureRandom) {
|
SecureRandom secureRandom) {
|
||||||
this.cloudContentRepository = cloudContentRepository;
|
this.cloudContentRepository = cloudContentRepository;
|
||||||
this.cryptoCloudContentRepositoryFactory = cryptoCloudContentRepositoryFactory;
|
this.cryptoCloudContentRepositoryFactory = cryptoCloudContentRepositoryFactory;
|
||||||
@ -138,7 +138,7 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
Vault vault = aCopyOf(token.getVault()) //
|
Vault vault = aCopyOf(token.getVault()) //
|
||||||
.withUnlocked(true) //
|
.withUnlocked(true) //
|
||||||
.withFormat(vaultFormat) //
|
.withFormat(vaultFormat) //
|
||||||
.withMaxFileNameLength(maxFileNameLength)
|
.withMaxFileNameLength(maxFileNameLength) //
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
cryptoCloudContentRepositoryFactory.registerCryptor(vault, cryptor);
|
cryptoCloudContentRepositoryFactory.registerCryptor(vault, cryptor);
|
||||||
@ -182,7 +182,8 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
return data.toByteArray();
|
return data.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Cryptor cryptorFor(Masterkey keyFile, VaultCipherCombo vaultCipherCombo) {
|
// Visible for testing
|
||||||
|
Cryptor cryptorFor(Masterkey keyFile, VaultCipherCombo vaultCipherCombo) {
|
||||||
return vaultCipherCombo.getCryptorProvider(secureRandom).withKey(keyFile);
|
return vaultCipherCombo.getCryptorProvider(secureRandom).withKey(keyFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,14 +191,15 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
public boolean isVaultPasswordValid(Vault vault, Optional<UnverifiedVaultConfig> unverifiedVaultConfig, CharSequence password) throws BackendException {
|
public boolean isVaultPasswordValid(Vault vault, Optional<UnverifiedVaultConfig> unverifiedVaultConfig, CharSequence password) throws BackendException {
|
||||||
try {
|
try {
|
||||||
// create a cryptor, which checks the password, then destroy it immediately
|
// create a cryptor, which checks the password, then destroy it immediately
|
||||||
Masterkey masterkey = createUnlockToken(vault, unverifiedVaultConfig).getKeyFile(password);
|
UnlockTokenImpl unlockToken = createUnlockToken(vault, unverifiedVaultConfig);
|
||||||
|
Masterkey masterkey = unlockToken.getKeyFile(password);
|
||||||
VaultCipherCombo vaultCipherCombo;
|
VaultCipherCombo vaultCipherCombo;
|
||||||
if(unverifiedVaultConfig.isPresent()) {
|
if (unverifiedVaultConfig.isPresent()) {
|
||||||
VaultConfig vaultConfig = VaultConfig.verify(masterkey.getEncoded(), unverifiedVaultConfig.get());
|
VaultConfig vaultConfig = VaultConfig.verify(masterkey.getEncoded(), unverifiedVaultConfig.get());
|
||||||
assertVaultVersionIsSupported(vaultConfig.getVaultFormat());
|
assertVaultVersionIsSupported(vaultConfig.getVaultFormat());
|
||||||
vaultCipherCombo = vaultConfig.getCipherCombo();
|
vaultCipherCombo = vaultConfig.getCipherCombo();
|
||||||
} else {
|
} else {
|
||||||
int vaultVersion = MasterkeyFileAccess.readAllegedVaultVersion(masterkey.getEncoded());
|
int vaultVersion = MasterkeyFileAccess.readAllegedVaultVersion(unlockToken.keyFileData);
|
||||||
assertLegacyVaultVersionIsSupported(vaultVersion);
|
assertLegacyVaultVersionIsSupported(vaultVersion);
|
||||||
vaultCipherCombo = SIV_CTRMAC;
|
vaultCipherCombo = SIV_CTRMAC;
|
||||||
}
|
}
|
||||||
@ -234,8 +236,6 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
@Override
|
@Override
|
||||||
public void changePassword(Vault vault, Optional<UnverifiedVaultConfig> unverifiedVaultConfig, String oldPassword, String newPassword) throws BackendException {
|
public void changePassword(Vault vault, Optional<UnverifiedVaultConfig> unverifiedVaultConfig, String oldPassword, String newPassword) throws BackendException {
|
||||||
CloudFolder vaultLocation = vaultLocation(vault);
|
CloudFolder vaultLocation = vaultLocation(vault);
|
||||||
ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStream();
|
|
||||||
|
|
||||||
CloudFile masterkeyFile;
|
CloudFile masterkeyFile;
|
||||||
if (unverifiedVaultConfig.isPresent()) {
|
if (unverifiedVaultConfig.isPresent()) {
|
||||||
masterkeyFile = masterkeyFile(vaultLocation, unverifiedVaultConfig.get());
|
masterkeyFile = masterkeyFile(vaultLocation, unverifiedVaultConfig.get());
|
||||||
@ -243,6 +243,7 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
masterkeyFile = legacyMasterkeyFile(vaultLocation);
|
masterkeyFile = legacyMasterkeyFile(vaultLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ByteArrayOutputStream dataOutputStream = new ByteArrayOutputStream();
|
||||||
cloudContentRepository.read(masterkeyFile, Optional.empty(), dataOutputStream, NO_OP_PROGRESS_AWARE);
|
cloudContentRepository.read(masterkeyFile, Optional.empty(), dataOutputStream, NO_OP_PROGRESS_AWARE);
|
||||||
byte[] data = dataOutputStream.toByteArray();
|
byte[] data = dataOutputStream.toByteArray();
|
||||||
|
|
||||||
@ -298,12 +299,12 @@ public class MasterkeyCryptoCloudProvider implements CryptoCloudProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class UnlockTokenImpl implements UnlockToken {
|
static class UnlockTokenImpl implements UnlockToken {
|
||||||
|
|
||||||
private final Vault vault;
|
private final Vault vault;
|
||||||
private final byte[] keyFileData;
|
private final byte[] keyFileData;
|
||||||
|
|
||||||
private UnlockTokenImpl(Vault vault, byte[] keyFileData) {
|
UnlockTokenImpl(Vault vault, byte[] keyFileData) {
|
||||||
this.vault = vault;
|
this.vault = vault;
|
||||||
this.keyFileData = keyFileData;
|
this.keyFileData = keyFileData;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user