1 6 21 22 package de.schlichtherle.io; 23 24 import de.schlichtherle.crypto.io.raes.KeyManagerRaesParameters; 25 import de.schlichtherle.crypto.io.raes.RaesParameters; 26 import de.schlichtherle.key.KeyManager; 27 import de.schlichtherle.crypto.io.raes.RaesOutputStream; 28 import de.schlichtherle.crypto.io.raes.Type0RaesParameters; 29 import de.schlichtherle.crypto.io.raes.RaesReadOnlyFile; 30 import de.schlichtherle.io.rof.ReadOnlyFileInputStream; 31 32 import java.io.IOException ; 33 import java.io.InputStream ; 34 import java.io.OutputStream ; 35 36 43 public class RaesFileUtils { 44 45 51 public static void encrypt( 52 final String plainFilePath, 53 final String raesFilePath) 54 throws IOException { 55 encrypt(plainFilePath, raesFilePath, File.getDefaultArchiveDetector()); 56 } 57 58 64 public static void encrypt( 65 final String plainFilePath, 66 final String raesFilePath, 67 final ArchiveDetector archiveDetector) 68 throws IOException { 69 final File plainFile = createNonArchiveFile(plainFilePath, archiveDetector); 70 final InputStream in = archiveDetector.createFileInputStream(plainFile); 71 final RaesOutputStream out; 72 try { 73 final File raesFile = createNonArchiveFile(raesFilePath, archiveDetector); 74 final RaesParameters params = new KeyManagerRaesParameters( 75 raesFile.getCanonicalPath()); out = RaesOutputStream.getInstance( 77 archiveDetector.createFileOutputStream(raesFile, false), 78 params); 79 } catch (IOException failure) { 80 in.close(); 81 throw failure; 82 } 83 File.cp(in, out); 84 } 85 86 92 public static void decrypt( 93 final String raesFilePath, 94 final String plainFilePath, 95 final boolean strongAuthentication) 96 throws IOException { 97 decrypt(raesFilePath, plainFilePath, strongAuthentication, 98 File.getDefaultArchiveDetector()); 99 } 100 101 113 public static void decrypt( 114 final String raesFilePath, 115 final String plainFilePath, 116 final boolean strongAuthentication, 117 final ArchiveDetector archiveDetector) 118 throws IOException { 119 final File raesFile = createNonArchiveFile(raesFilePath, archiveDetector); 120 final RaesParameters params = new KeyManagerRaesParameters( 121 raesFile.getCanonicalPath()); final RaesReadOnlyFile rrof = RaesReadOnlyFile.getInstance( 123 raesFile, params); 124 final InputStream in; 125 final OutputStream out; 126 try { 127 if (strongAuthentication) 128 rrof.authenticate(); 129 in = new ReadOnlyFileInputStream(rrof); 130 final File plainFile = createNonArchiveFile(plainFilePath, archiveDetector); 131 out = archiveDetector.createFileOutputStream(plainFile, false); 132 } catch (IOException failure) { 133 rrof.close(); 134 throw failure; 135 } 136 File.cp(in, out); 137 } 138 139 145 private static final File createNonArchiveFile( 146 final String path, 147 final ArchiveDetector archiveDetector) { 148 final File file = archiveDetector.createFile(path); 149 return ArchiveDetector.NULL.createFile(file.getParentFile(), file.getName()); 150 } 151 152 153 protected RaesFileUtils() { 154 } 155 } 156 | Popular Tags |