@Override public Bucket createShadow() { Bucket undershadow = underlying.createShadow(); AEADCryptBucket ret = new AEADCryptBucket(undershadow, key); ret.setReadOnly(); return ret; }
public InputStream getInputStream() throws IOException { return new BufferedInputStream(getInputStreamUnbuffered()); }
@Override public OutputStream getOutputStream() throws IOException { return new BufferedOutputStream(getOutputStreamUnbuffered()); }
public Bucket createEncryptedBucketForClientLayer(Bucket underlying) { return new AEADCryptBucket(underlying, getKeyForClientLayer()); }
public void checkCopyBucketNotDivisibleBy16(long length) throws IOException { ArrayBucket underlying = new ArrayBucket(); byte[] key = new byte[16]; AEADCryptBucket encryptedBucket = new AEADCryptBucket(underlying, key); BucketTools.fill(encryptedBucket, length); assertEquals(length + AEADCryptBucket.OVERHEAD, underlying.size()); assertEquals(length, encryptedBucket.size()); ArrayBucket copyTo = new ArrayBucket(); BucketTools.copy(encryptedBucket, copyTo); assertEquals(length, encryptedBucket.size()); assertEquals(length, copyTo.size()); assertTrue(BucketTools.equalBuckets(encryptedBucket, copyTo)); }
private Bucket findPluginStoreBucket(String storeIdentifier, boolean isEncrypted, boolean backup) throws FileNotFoundException { File f = getPluginStoreFile(storeIdentifier, isEncrypted, backup); if(!f.exists()) return null; Bucket bucket = new FileBucket(f, false, false, false, false); if(isEncrypted) { byte[] key = node.getPluginStoreKey(storeIdentifier); if(key != null) { // We pad then encrypt, which is wasteful, but we have no way to persist the size. // Unfortunately AEADCryptBucket needs to know the real termination point. bucket = new AEADCryptBucket(bucket, key); bucket = new PaddedBucket(bucket, bucket.size()); } } return bucket; }
private Bucket makePluginStoreBucket(String storeIdentifier, boolean isEncrypted, boolean backup) throws FileNotFoundException { File f = getPluginStoreFile(storeIdentifier, isEncrypted, backup); Bucket bucket = new FileBucket(f, false, true, false, false); if(isEncrypted) { byte[] key = node.getPluginStoreKey(storeIdentifier); if(key != null) { // We pad then encrypt, which is wasteful, but we have no way to persist the size. // Unfortunately AEADCryptBucket needs to know the real termination point. bucket = new AEADCryptBucket(bucket, key); bucket = new PaddedBucket(bucket); } } return bucket; }
switch(magic) { case AEADCryptBucket.MAGIC: return new AEADCryptBucket(dis, fg, persistentFileTracker, masterKey); case FileBucket.MAGIC: return new FileBucket(dis);