Search in sources :

Example 1 with NoApplicableMigratorException

use of org.cryptomator.cryptofs.migration.api.NoApplicableMigratorException in project cryptofs by cryptomator.

the class Migrators method migrate.

/**
 * Performs the actual migration. This task may take a while and this method will block.
 *
 * @param pathToVault Path to the vault's root
 * @param masterkeyFilename Name of the masterkey file located in the vault
 * @param passphrase The passphrase needed to unlock the vault
 * @throws NoApplicableMigratorException If the vault can not be migrated, because no migrator could be found
 * @throws InvalidPassphraseException If the passphrase could not be used to unlock the vault
 * @throws IOException if an I/O error occurs migrating the vault
 */
public void migrate(Path pathToVault, String masterkeyFilename, CharSequence passphrase) throws NoApplicableMigratorException, InvalidPassphraseException, IOException {
    Path masterKeyPath = pathToVault.resolve(masterkeyFilename);
    byte[] keyFileContents = Files.readAllBytes(masterKeyPath);
    KeyFile keyFile = KeyFile.parse(keyFileContents);
    try {
        Migrator migrator = findApplicableMigrator(keyFile.getVersion()).orElseThrow(NoApplicableMigratorException::new);
        migrator.migrate(pathToVault, masterkeyFilename, passphrase);
    } catch (UnsupportedVaultFormatException e) {
        // might be a tampered masterkey file, as this exception is also thrown if the vault version MAC is not authentic.
        throw new IllegalStateException("Vault version checked beforehand but not supported by migrator.");
    }
}
Also used : Path(java.nio.file.Path) NoApplicableMigratorException(org.cryptomator.cryptofs.migration.api.NoApplicableMigratorException) KeyFile(org.cryptomator.cryptolib.api.KeyFile) Migrator(org.cryptomator.cryptofs.migration.api.Migrator) UnsupportedVaultFormatException(org.cryptomator.cryptolib.api.UnsupportedVaultFormatException)

Aggregations

Path (java.nio.file.Path)1 Migrator (org.cryptomator.cryptofs.migration.api.Migrator)1 NoApplicableMigratorException (org.cryptomator.cryptofs.migration.api.NoApplicableMigratorException)1 KeyFile (org.cryptomator.cryptolib.api.KeyFile)1 UnsupportedVaultFormatException (org.cryptomator.cryptolib.api.UnsupportedVaultFormatException)1