All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.schlichtherle.truezip.fs.archive.zip.raes.ZipRaesDriverService Maven / Gradle / Ivy

/*
 * Copyright (C) 2005-2015 Schlichtherle IT Services.
 * All rights reserved. Use is subject to license terms.
 */
package de.schlichtherle.truezip.fs.archive.zip.raes;

import de.schlichtherle.truezip.fs.FsDriver;
import de.schlichtherle.truezip.fs.FsScheme;
import de.schlichtherle.truezip.fs.spi.FsDriverService;
import de.schlichtherle.truezip.key.sl.KeyManagerLocator;
import de.schlichtherle.truezip.socket.sl.IOPoolLocator;
import java.util.Map;
import javax.annotation.concurrent.Immutable;

/**
 * An immutable container of a map of drivers for the ZIP.RAES file format.
 * The map provided by this service consists of the following entries:
 * 

URI Schemes / Archive File Suffixes File System Driver Class
{@code tzp}, {@code zip.rae}, {@code zip.raes} {@link de.schlichtherle.truezip.fs.archive.zip.raes.SafeZipRaesDriver}
*

* Note that the regular expression is actually decomposed into separate * {@link FsScheme} objects which get mapped individually. * * @author Christian Schlichtherle */ @Immutable public final class ZipRaesDriverService extends FsDriverService { private static final Map DRIVERS = newMap(new Object[][] { { "tzp|zip.rae|zip.raes", // Select exactly ONE of the following drivers by // uncommenting it. // Please refer to the class Javadoc for more information. // If you're quite paranoid, then this driver is for you: // It authenticates every input archive file using // the Message Authentication Code (MAC) specified by the // RAES file format, which makes it comparably slow. // The driver also uses unencrypted byte arrays for // temporary storage of archive entries whenever required. // If you were completely paranoid, you would even want to // use encrypted byte arrays or wipe them with nulls after // use. // However, then you would have to write this yourself! ;-) /*new ParanoidZipRaesDriver( new ByteArrayIOPoolProvider(2048), KeyManagerLocator.SINGLETON),*/ // If you're just a bit paranoid, then use this driver: // It authenticates every input archive file using // the Message Authentication Code (MAC) specified by the // RAES file format, which makes it comparably slow. // The driver also uses unencrypted temporary files for // archive entries whenever required. /*new ParanoidZipRaesDriver( IOPoolLocator.SINGLETON, KeyManagerLocator.SINGLETON),*/ // For the rest of us, this driver is our choice: // It authenticates input archive files up to 512 KB using // the Message Authentication Code (MAC) specified by the // RAES file format. // For larger input archive files, it just checks the // CRC-32 value whenever an archive entry input stream is // closed. // CRC-32 has frequent collisions when compared to a MAC. // However, it should not be feasible to make an // undetectable modification. // The driver also uses unencrypted temporary files for // archive entries whenever required. new SafeZipRaesDriver( IOPoolLocator.SINGLETON, KeyManagerLocator.SINGLETON), }, }); @Override public Map get() { return DRIVERS; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy