mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 21:29:54 +01:00
Renamed some classes.
This commit is contained in:
@@ -49,7 +49,7 @@ class ConnectionReaderFactoryImpl implements ConnectionReaderFactory {
|
|||||||
Cipher tagCipher = crypto.getTagCipher();
|
Cipher tagCipher = crypto.getTagCipher();
|
||||||
Cipher frameCipher = crypto.getFrameCipher();
|
Cipher frameCipher = crypto.getFrameCipher();
|
||||||
Mac mac = crypto.getMac();
|
Mac mac = crypto.getMac();
|
||||||
FrameSource decrypter = new ConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter = new IncomingEncryptionLayerImpl(in, tagCipher,
|
||||||
frameCipher, tagKey, frameKey, mac.getMacLength(), false);
|
frameCipher, tagKey, frameKey, mac.getMacLength(), false);
|
||||||
// Create the reader
|
// Create the reader
|
||||||
return new ConnectionReaderImpl(decrypter, mac, macKey);
|
return new ConnectionReaderImpl(decrypter, mac, macKey);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import net.sf.briar.api.transport.ConnectionReader;
|
|||||||
|
|
||||||
class ConnectionReaderImpl extends InputStream implements ConnectionReader {
|
class ConnectionReaderImpl extends InputStream implements ConnectionReader {
|
||||||
|
|
||||||
private final FrameSource decrypter;
|
private final IncomingEncryptionLayer decrypter;
|
||||||
private final Mac mac;
|
private final Mac mac;
|
||||||
private final int macLength;
|
private final int macLength;
|
||||||
private final byte[] buf;
|
private final byte[] buf;
|
||||||
@@ -24,7 +24,7 @@ class ConnectionReaderImpl extends InputStream implements ConnectionReader {
|
|||||||
private long frame = 0L;
|
private long frame = 0L;
|
||||||
private int bufOffset = 0, bufLength = 0;
|
private int bufOffset = 0, bufLength = 0;
|
||||||
|
|
||||||
ConnectionReaderImpl(FrameSource decrypter, Mac mac, ErasableKey macKey) {
|
ConnectionReaderImpl(IncomingEncryptionLayer decrypter, Mac mac, ErasableKey macKey) {
|
||||||
this.decrypter = decrypter;
|
this.decrypter = decrypter;
|
||||||
this.mac = mac;
|
this.mac = mac;
|
||||||
// Initialise the MAC
|
// Initialise the MAC
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class ConnectionWriterFactoryImpl implements ConnectionWriterFactory {
|
|||||||
// Create the encrypter
|
// Create the encrypter
|
||||||
Cipher tagCipher = crypto.getTagCipher();
|
Cipher tagCipher = crypto.getTagCipher();
|
||||||
Cipher frameCipher = crypto.getFrameCipher();
|
Cipher frameCipher = crypto.getFrameCipher();
|
||||||
ConnectionEncrypter encrypter = new ConnectionEncrypterImpl(out,
|
OutgoingEncryptionLayer encrypter = new OutgoingEncryptionLayerImpl(out,
|
||||||
capacity, tagCipher, frameCipher, tagKey, frameKey, false);
|
capacity, tagCipher, frameCipher, tagKey, frameKey, false);
|
||||||
// Create the writer
|
// Create the writer
|
||||||
Mac mac = crypto.getMac();
|
Mac mac = crypto.getMac();
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ import net.sf.briar.api.transport.ConnectionWriter;
|
|||||||
*/
|
*/
|
||||||
class ConnectionWriterImpl extends OutputStream implements ConnectionWriter {
|
class ConnectionWriterImpl extends OutputStream implements ConnectionWriter {
|
||||||
|
|
||||||
private final ConnectionEncrypter encrypter;
|
private final OutgoingEncryptionLayer encrypter;
|
||||||
private final Mac mac;
|
private final Mac mac;
|
||||||
private final byte[] buf;
|
private final byte[] buf;
|
||||||
|
|
||||||
private int bufLength = FRAME_HEADER_LENGTH;
|
private int bufLength = FRAME_HEADER_LENGTH;
|
||||||
private long frame = 0L;
|
private long frame = 0L;
|
||||||
|
|
||||||
ConnectionWriterImpl(ConnectionEncrypter encrypter, Mac mac,
|
ConnectionWriterImpl(OutgoingEncryptionLayer encrypter, Mac mac,
|
||||||
ErasableKey macKey) {
|
ErasableKey macKey) {
|
||||||
this.encrypter = encrypter;
|
this.encrypter = encrypter;
|
||||||
this.mac = mac;
|
this.mac = mac;
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
package net.sf.briar.transport;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
interface FrameSink {
|
|
||||||
|
|
||||||
/** Writes the given frame. */
|
|
||||||
void writeFrame(byte[] b, int len) throws IOException;
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,7 @@ package net.sf.briar.transport;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
interface FrameSource {
|
interface IncomingEncryptionLayer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads a frame into the given buffer and returns its length, or -1 if no
|
* Reads a frame into the given buffer and returns its length, or -1 if no
|
||||||
@@ -16,7 +16,7 @@ import javax.crypto.spec.IvParameterSpec;
|
|||||||
import net.sf.briar.api.FormatException;
|
import net.sf.briar.api.FormatException;
|
||||||
import net.sf.briar.api.crypto.ErasableKey;
|
import net.sf.briar.api.crypto.ErasableKey;
|
||||||
|
|
||||||
class ConnectionDecrypter implements FrameSource {
|
class IncomingEncryptionLayerImpl implements IncomingEncryptionLayer {
|
||||||
|
|
||||||
private final InputStream in;
|
private final InputStream in;
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
@@ -27,9 +27,9 @@ class ConnectionDecrypter implements FrameSource {
|
|||||||
|
|
||||||
private long frame = 0L;
|
private long frame = 0L;
|
||||||
|
|
||||||
ConnectionDecrypter(InputStream in, Cipher tagCipher, Cipher frameCipher,
|
IncomingEncryptionLayerImpl(InputStream in, Cipher tagCipher,
|
||||||
ErasableKey tagKey, ErasableKey frameKey, int macLength,
|
Cipher frameCipher, ErasableKey tagKey, ErasableKey frameKey,
|
||||||
boolean tagEverySegment) {
|
int macLength, boolean tagEverySegment) {
|
||||||
this.in = in;
|
this.in = in;
|
||||||
this.tagCipher = tagCipher;
|
this.tagCipher = tagCipher;
|
||||||
this.frameCipher = frameCipher;
|
this.frameCipher = frameCipher;
|
||||||
@@ -16,7 +16,7 @@ import net.sf.briar.api.crypto.ErasableKey;
|
|||||||
import net.sf.briar.api.plugins.Segment;
|
import net.sf.briar.api.plugins.Segment;
|
||||||
import net.sf.briar.api.plugins.SegmentSource;
|
import net.sf.briar.api.plugins.SegmentSource;
|
||||||
|
|
||||||
class SegmentedConnectionDecrypter implements FrameSource {
|
class IncomingSegmentedEncryptionLayer implements IncomingEncryptionLayer {
|
||||||
|
|
||||||
private final SegmentSource in;
|
private final SegmentSource in;
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
@@ -28,7 +28,7 @@ class SegmentedConnectionDecrypter implements FrameSource {
|
|||||||
|
|
||||||
private long frame = 0L;
|
private long frame = 0L;
|
||||||
|
|
||||||
SegmentedConnectionDecrypter(SegmentSource in, Cipher tagCipher,
|
IncomingSegmentedEncryptionLayer(SegmentSource in, Cipher tagCipher,
|
||||||
Cipher frameCipher, ErasableKey tagKey, ErasableKey frameKey,
|
Cipher frameCipher, ErasableKey tagKey, ErasableKey frameKey,
|
||||||
int macLength, boolean tagEverySegment) {
|
int macLength, boolean tagEverySegment) {
|
||||||
this.in = in;
|
this.in = in;
|
||||||
@@ -3,7 +3,10 @@ package net.sf.briar.transport;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/** Encrypts authenticated data to be sent over a connection. */
|
/** Encrypts authenticated data to be sent over a connection. */
|
||||||
interface ConnectionEncrypter extends FrameSink {
|
interface OutgoingEncryptionLayer {
|
||||||
|
|
||||||
|
/** Writes the given frame. */
|
||||||
|
void writeFrame(byte[] b, int len) throws IOException;
|
||||||
|
|
||||||
/** Flushes the output stream. */
|
/** Flushes the output stream. */
|
||||||
void flush() throws IOException;
|
void flush() throws IOException;
|
||||||
@@ -12,7 +12,7 @@ import javax.crypto.spec.IvParameterSpec;
|
|||||||
|
|
||||||
import net.sf.briar.api.crypto.ErasableKey;
|
import net.sf.briar.api.crypto.ErasableKey;
|
||||||
|
|
||||||
class ConnectionEncrypterImpl implements ConnectionEncrypter {
|
class OutgoingEncryptionLayerImpl implements OutgoingEncryptionLayer {
|
||||||
|
|
||||||
private final OutputStream out;
|
private final OutputStream out;
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
@@ -22,7 +22,7 @@ class ConnectionEncrypterImpl implements ConnectionEncrypter {
|
|||||||
|
|
||||||
private long capacity, frame = 0L;
|
private long capacity, frame = 0L;
|
||||||
|
|
||||||
ConnectionEncrypterImpl(OutputStream out, long capacity, Cipher tagCipher,
|
OutgoingEncryptionLayerImpl(OutputStream out, long capacity, Cipher tagCipher,
|
||||||
Cipher frameCipher, ErasableKey tagKey, ErasableKey frameKey,
|
Cipher frameCipher, ErasableKey tagKey, ErasableKey frameKey,
|
||||||
boolean tagEverySegment) {
|
boolean tagEverySegment) {
|
||||||
this.out = out;
|
this.out = out;
|
||||||
@@ -14,7 +14,7 @@ import net.sf.briar.api.crypto.ErasableKey;
|
|||||||
import net.sf.briar.api.plugins.Segment;
|
import net.sf.briar.api.plugins.Segment;
|
||||||
import net.sf.briar.api.plugins.SegmentSink;
|
import net.sf.briar.api.plugins.SegmentSink;
|
||||||
|
|
||||||
class SegmentedConnectionEncrypter implements ConnectionEncrypter {
|
class OutgoingSegmentedEncryptionLayer implements OutgoingEncryptionLayer {
|
||||||
|
|
||||||
private final SegmentSink out;
|
private final SegmentSink out;
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
@@ -25,7 +25,7 @@ class SegmentedConnectionEncrypter implements ConnectionEncrypter {
|
|||||||
|
|
||||||
private long capacity, frame = 0L;
|
private long capacity, frame = 0L;
|
||||||
|
|
||||||
SegmentedConnectionEncrypter(SegmentSink out, long capacity,
|
OutgoingSegmentedEncryptionLayer(SegmentSink out, long capacity,
|
||||||
Cipher tagCipher, Cipher frameCipher, ErasableKey tagKey,
|
Cipher tagCipher, Cipher frameCipher, ErasableKey tagKey,
|
||||||
ErasableKey frameKey, boolean tagEverySegment) {
|
ErasableKey frameKey, boolean tagEverySegment) {
|
||||||
this.out = out;
|
this.out = out;
|
||||||
@@ -49,8 +49,6 @@
|
|||||||
<test name='net.sf.briar.serial.ReaderImplTest'/>
|
<test name='net.sf.briar.serial.ReaderImplTest'/>
|
||||||
<test name='net.sf.briar.serial.WriterImplTest'/>
|
<test name='net.sf.briar.serial.WriterImplTest'/>
|
||||||
<test name='net.sf.briar.setup.SetupWorkerTest'/>
|
<test name='net.sf.briar.setup.SetupWorkerTest'/>
|
||||||
<test name='net.sf.briar.transport.ConnectionDecrypterTest'/>
|
|
||||||
<test name='net.sf.briar.transport.ConnectionEncrypterImplTest'/>
|
|
||||||
<test name='net.sf.briar.transport.ConnectionReaderImplTest'/>
|
<test name='net.sf.briar.transport.ConnectionReaderImplTest'/>
|
||||||
<test name='net.sf.briar.transport.ConnectionRecogniserImplTest'/>
|
<test name='net.sf.briar.transport.ConnectionRecogniserImplTest'/>
|
||||||
<test name='net.sf.briar.transport.ConnectionRegistryImplTest'/>
|
<test name='net.sf.briar.transport.ConnectionRegistryImplTest'/>
|
||||||
@@ -58,8 +56,10 @@
|
|||||||
<test name='net.sf.briar.transport.ConnectionWriterImplTest'/>
|
<test name='net.sf.briar.transport.ConnectionWriterImplTest'/>
|
||||||
<test name='net.sf.briar.transport.ConnectionWriterTest'/>
|
<test name='net.sf.briar.transport.ConnectionWriterTest'/>
|
||||||
<test name='net.sf.briar.transport.FrameReadWriteTest'/>
|
<test name='net.sf.briar.transport.FrameReadWriteTest'/>
|
||||||
<test name='net.sf.briar.transport.SegmentedConnectionDecrypterTest'/>
|
<test name='net.sf.briar.transport.IncomingEncryptionLayerImplTest'/>
|
||||||
<test name='net.sf.briar.transport.SegmentedConnectionEncrypterTest'/>
|
<test name='net.sf.briar.transport.IncomingSegmentedEncryptionLayerTest'/>
|
||||||
|
<test name='net.sf.briar.transport.OutgoingEncryptionLayerImplTest'/>
|
||||||
|
<test name='net.sf.briar.transport.OutgoingSegmentedEncryptionLayerTest'/>
|
||||||
<test name='net.sf.briar.util.ByteUtilsTest'/>
|
<test name='net.sf.briar.util.ByteUtilsTest'/>
|
||||||
<test name='net.sf.briar.util.FileUtilsTest'/>
|
<test name='net.sf.briar.util.FileUtilsTest'/>
|
||||||
<test name='net.sf.briar.util.StringUtilsTest'/>
|
<test name='net.sf.briar.util.StringUtilsTest'/>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
||||||
// Read the frame
|
// Read the frame
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
// There should be no bytes available before EOF
|
// There should be no bytes available before EOF
|
||||||
assertEquals(-1, r.getInputStream().read());
|
assertEquals(-1, r.getInputStream().read());
|
||||||
@@ -49,7 +49,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
||||||
// Read the frame
|
// Read the frame
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
// There should be one byte available before EOF
|
// There should be one byte available before EOF
|
||||||
assertEquals(0, r.getInputStream().read());
|
assertEquals(0, r.getInputStream().read());
|
||||||
@@ -75,7 +75,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
out.write(frame1);
|
out.write(frame1);
|
||||||
// Read the first frame
|
// Read the first frame
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
byte[] read = new byte[maxPayloadLength];
|
byte[] read = new byte[maxPayloadLength];
|
||||||
TestUtils.readFully(r.getInputStream(), read);
|
TestUtils.readFully(r.getInputStream(), read);
|
||||||
@@ -109,7 +109,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
out.write(frame1);
|
out.write(frame1);
|
||||||
// Read the first frame
|
// Read the first frame
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
byte[] read = new byte[maxPayloadLength - paddingLength];
|
byte[] read = new byte[maxPayloadLength - paddingLength];
|
||||||
TestUtils.readFully(r.getInputStream(), read);
|
TestUtils.readFully(r.getInputStream(), read);
|
||||||
@@ -135,7 +135,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength + paddingLength);
|
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength + paddingLength);
|
||||||
// Read the frame
|
// Read the frame
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
// The non-zero padding should be rejected
|
// The non-zero padding should be rejected
|
||||||
try {
|
try {
|
||||||
@@ -167,7 +167,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
out.write(frame1);
|
out.write(frame1);
|
||||||
// Read the frames
|
// Read the frames
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
byte[] read = new byte[payloadLength];
|
byte[] read = new byte[payloadLength];
|
||||||
TestUtils.readFully(r.getInputStream(), read);
|
TestUtils.readFully(r.getInputStream(), read);
|
||||||
@@ -191,7 +191,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
frame[12] ^= 1;
|
frame[12] ^= 1;
|
||||||
// Try to read the frame - not a single byte should be read
|
// Try to read the frame - not a single byte should be read
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
try {
|
try {
|
||||||
r.getInputStream().read();
|
r.getInputStream().read();
|
||||||
@@ -213,7 +213,7 @@ public class ConnectionReaderImplTest extends TransportTest {
|
|||||||
frame[17] ^= 1;
|
frame[17] ^= 1;
|
||||||
// Try to read the frame - not a single byte should be read
|
// Try to read the frame - not a single byte should be read
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
ByteArrayInputStream in = new ByteArrayInputStream(frame);
|
||||||
FrameSource d = new NullConnectionDecrypter(in, macLength);
|
IncomingEncryptionLayer d = new NullConnectionDecrypter(in, macLength);
|
||||||
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
ConnectionReader r = new ConnectionReaderImpl(d, mac, macKey);
|
||||||
try {
|
try {
|
||||||
r.getInputStream().read();
|
r.getInputStream().read();
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class ConnectionWriterImplTest extends TransportTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testFlushWithoutWriteProducesNothing() throws Exception {
|
public void testFlushWithoutWriteProducesNothing() throws Exception {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ConnectionEncrypter e = new NullConnectionEncrypter(out);
|
OutgoingEncryptionLayer e = new NullConnectionEncrypter(out);
|
||||||
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
||||||
w.getOutputStream().flush();
|
w.getOutputStream().flush();
|
||||||
w.getOutputStream().flush();
|
w.getOutputStream().flush();
|
||||||
@@ -40,7 +40,7 @@ public class ConnectionWriterImplTest extends TransportTest {
|
|||||||
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
mac.doFinal(frame, FRAME_HEADER_LENGTH + payloadLength);
|
||||||
// Check that the ConnectionWriter gets the same results
|
// Check that the ConnectionWriter gets the same results
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ConnectionEncrypter e = new NullConnectionEncrypter(out);
|
OutgoingEncryptionLayer e = new NullConnectionEncrypter(out);
|
||||||
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
||||||
w.getOutputStream().write(0);
|
w.getOutputStream().write(0);
|
||||||
w.getOutputStream().flush();
|
w.getOutputStream().flush();
|
||||||
@@ -50,7 +50,7 @@ public class ConnectionWriterImplTest extends TransportTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testWriteByteToMaxLengthWritesFrame() throws Exception {
|
public void testWriteByteToMaxLengthWritesFrame() throws Exception {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ConnectionEncrypter e = new NullConnectionEncrypter(out);
|
OutgoingEncryptionLayer e = new NullConnectionEncrypter(out);
|
||||||
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
||||||
OutputStream out1 = w.getOutputStream();
|
OutputStream out1 = w.getOutputStream();
|
||||||
// The first maxPayloadLength - 1 bytes should be buffered
|
// The first maxPayloadLength - 1 bytes should be buffered
|
||||||
@@ -64,7 +64,7 @@ public class ConnectionWriterImplTest extends TransportTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testWriteArrayToMaxLengthWritesFrame() throws Exception {
|
public void testWriteArrayToMaxLengthWritesFrame() throws Exception {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ConnectionEncrypter e = new NullConnectionEncrypter(out);
|
OutgoingEncryptionLayer e = new NullConnectionEncrypter(out);
|
||||||
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
||||||
OutputStream out1 = w.getOutputStream();
|
OutputStream out1 = w.getOutputStream();
|
||||||
// The first maxPayloadLength - 1 bytes should be buffered
|
// The first maxPayloadLength - 1 bytes should be buffered
|
||||||
@@ -99,7 +99,7 @@ public class ConnectionWriterImplTest extends TransportTest {
|
|||||||
byte[] expected = out.toByteArray();
|
byte[] expected = out.toByteArray();
|
||||||
// Check that the ConnectionWriter gets the same results
|
// Check that the ConnectionWriter gets the same results
|
||||||
out.reset();
|
out.reset();
|
||||||
ConnectionEncrypter e = new NullConnectionEncrypter(out);
|
OutgoingEncryptionLayer e = new NullConnectionEncrypter(out);
|
||||||
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
ConnectionWriter w = new ConnectionWriterImpl(e, mac, macKey);
|
||||||
w.getOutputStream().write(new byte[123]);
|
w.getOutputStream().write(new byte[123]);
|
||||||
w.getOutputStream().flush();
|
w.getOutputStream().flush();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ public class FrameReadWriteTest extends BriarTestCase {
|
|||||||
ErasableKey macCopy = macKey.copy();
|
ErasableKey macCopy = macKey.copy();
|
||||||
// Write the frames
|
// Write the frames
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ConnectionEncrypter encrypter = new ConnectionEncrypterImpl(out,
|
OutgoingEncryptionLayer encrypter = new OutgoingEncryptionLayerImpl(out,
|
||||||
Long.MAX_VALUE, tagCipher, frameCipher, tagCopy, frameCopy,
|
Long.MAX_VALUE, tagCipher, frameCipher, tagCopy, frameCopy,
|
||||||
false);
|
false);
|
||||||
ConnectionWriter writer = new ConnectionWriterImpl(encrypter, mac,
|
ConnectionWriter writer = new ConnectionWriterImpl(encrypter, mac,
|
||||||
@@ -91,7 +91,7 @@ public class FrameReadWriteTest extends BriarTestCase {
|
|||||||
assertArrayEquals(tag, recoveredTag);
|
assertArrayEquals(tag, recoveredTag);
|
||||||
assertTrue(TagEncoder.validateTag(tag, 0, tagCipher, tagKey));
|
assertTrue(TagEncoder.validateTag(tag, 0, tagCipher, tagKey));
|
||||||
// Read the frames back
|
// Read the frames back
|
||||||
FrameSource decrypter = new ConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter = new IncomingEncryptionLayerImpl(in, tagCipher,
|
||||||
frameCipher, tagKey, frameKey, mac.getMacLength(), false);
|
frameCipher, tagKey, frameKey, mac.getMacLength(), false);
|
||||||
ConnectionReader reader = new ConnectionReaderImpl(decrypter, mac,
|
ConnectionReader reader = new ConnectionReaderImpl(decrypter, mac,
|
||||||
macKey);
|
macKey);
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ import org.junit.Test;
|
|||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
public class ConnectionDecrypterTest extends BriarTestCase {
|
public class IncomingEncryptionLayerImplTest extends BriarTestCase {
|
||||||
|
|
||||||
private static final int MAC_LENGTH = 32;
|
private static final int MAC_LENGTH = 32;
|
||||||
|
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
private final ErasableKey tagKey, frameKey;
|
private final ErasableKey tagKey, frameKey;
|
||||||
|
|
||||||
public ConnectionDecrypterTest() {
|
public IncomingEncryptionLayerImplTest() {
|
||||||
super();
|
super();
|
||||||
Injector i = Guice.createInjector(new CryptoModule());
|
Injector i = Guice.createInjector(new CryptoModule());
|
||||||
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
||||||
@@ -59,9 +59,9 @@ public class ConnectionDecrypterTest extends BriarTestCase {
|
|||||||
out.write(ciphertext);
|
out.write(ciphertext);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
// Use a ConnectionDecrypter to decrypt the ciphertext
|
// Use the encryption layer to decrypt the ciphertext
|
||||||
FrameSource decrypter = new ConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter = new IncomingEncryptionLayerImpl(in,
|
||||||
frameCipher, tagKey, frameKey, MAC_LENGTH, false);
|
tagCipher, frameCipher, tagKey, frameKey, MAC_LENGTH, false);
|
||||||
// First frame
|
// First frame
|
||||||
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
||||||
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
||||||
@@ -99,9 +99,9 @@ public class ConnectionDecrypterTest extends BriarTestCase {
|
|||||||
out.write(ciphertext);
|
out.write(ciphertext);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
|
||||||
// Use a ConnectionDecrypter to decrypt the ciphertext
|
// Use the encryption layer to decrypt the ciphertext
|
||||||
FrameSource decrypter = new ConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter = new IncomingEncryptionLayerImpl(in,
|
||||||
frameCipher, tagKey, frameKey, MAC_LENGTH, true);
|
tagCipher, frameCipher, tagKey, frameKey, MAC_LENGTH, true);
|
||||||
// First frame
|
// First frame
|
||||||
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
||||||
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
||||||
@@ -21,14 +21,14 @@ import org.junit.Test;
|
|||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
public class SegmentedConnectionDecrypterTest extends BriarTestCase {
|
public class IncomingSegmentedEncryptionLayerTest extends BriarTestCase {
|
||||||
|
|
||||||
private static final int MAC_LENGTH = 32;
|
private static final int MAC_LENGTH = 32;
|
||||||
|
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
private final ErasableKey tagKey, frameKey;
|
private final ErasableKey tagKey, frameKey;
|
||||||
|
|
||||||
public SegmentedConnectionDecrypterTest() {
|
public IncomingSegmentedEncryptionLayerTest() {
|
||||||
super();
|
super();
|
||||||
Injector i = Guice.createInjector(new CryptoModule());
|
Injector i = Guice.createInjector(new CryptoModule());
|
||||||
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
||||||
@@ -55,11 +55,12 @@ public class SegmentedConnectionDecrypterTest extends BriarTestCase {
|
|||||||
frameCipher.init(Cipher.ENCRYPT_MODE, frameKey, ivSpec);
|
frameCipher.init(Cipher.ENCRYPT_MODE, frameKey, ivSpec);
|
||||||
byte[] ciphertext1 = frameCipher.doFinal(plaintext1, 0,
|
byte[] ciphertext1 = frameCipher.doFinal(plaintext1, 0,
|
||||||
plaintext1.length);
|
plaintext1.length);
|
||||||
// Use a connection decrypter to decrypt the ciphertext
|
// Use the encryption layer to decrypt the ciphertext
|
||||||
byte[][] frames = new byte[][] { ciphertext, ciphertext1 };
|
byte[][] frames = new byte[][] { ciphertext, ciphertext1 };
|
||||||
SegmentSource in = new ByteArraySegmentSource(frames);
|
SegmentSource in = new ByteArraySegmentSource(frames);
|
||||||
FrameSource decrypter = new SegmentedConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter =
|
||||||
frameCipher, tagKey, frameKey, MAC_LENGTH, false);
|
new IncomingSegmentedEncryptionLayer(in, tagCipher, frameCipher,
|
||||||
|
tagKey, frameKey, MAC_LENGTH, false);
|
||||||
// First frame
|
// First frame
|
||||||
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
||||||
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
||||||
@@ -92,11 +93,12 @@ public class SegmentedConnectionDecrypterTest extends BriarTestCase {
|
|||||||
frameCipher.init(Cipher.ENCRYPT_MODE, frameKey, ivSpec);
|
frameCipher.init(Cipher.ENCRYPT_MODE, frameKey, ivSpec);
|
||||||
frameCipher.doFinal(plaintext1, 0, plaintext1.length, ciphertext1,
|
frameCipher.doFinal(plaintext1, 0, plaintext1.length, ciphertext1,
|
||||||
TAG_LENGTH);
|
TAG_LENGTH);
|
||||||
// Use a connection decrypter to decrypt the ciphertext
|
// Use the encryption layer to decrypt the ciphertext
|
||||||
byte[][] frames = new byte[][] { ciphertext, ciphertext1 };
|
byte[][] frames = new byte[][] { ciphertext, ciphertext1 };
|
||||||
SegmentSource in = new ByteArraySegmentSource(frames);
|
SegmentSource in = new ByteArraySegmentSource(frames);
|
||||||
FrameSource decrypter = new SegmentedConnectionDecrypter(in, tagCipher,
|
IncomingEncryptionLayer decrypter =
|
||||||
frameCipher, tagKey, frameKey, MAC_LENGTH, true);
|
new IncomingSegmentedEncryptionLayer(in, tagCipher, frameCipher,
|
||||||
|
tagKey, frameKey, MAC_LENGTH, true);
|
||||||
// First frame
|
// First frame
|
||||||
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
byte[] decrypted = new byte[MAX_FRAME_LENGTH];
|
||||||
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
assertEquals(plaintext.length, decrypter.readFrame(decrypted));
|
||||||
@@ -112,20 +114,20 @@ public class SegmentedConnectionDecrypterTest extends BriarTestCase {
|
|||||||
|
|
||||||
private static class ByteArraySegmentSource implements SegmentSource {
|
private static class ByteArraySegmentSource implements SegmentSource {
|
||||||
|
|
||||||
private final byte[][] frames;
|
private final byte[][] segments;
|
||||||
|
|
||||||
private int frame = 0;
|
private int segmentNumber = 0;
|
||||||
|
|
||||||
private ByteArraySegmentSource(byte[][] frames) {
|
private ByteArraySegmentSource(byte[][] frames) {
|
||||||
this.frames = frames;
|
this.segments = frames;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean readSegment(Segment s) throws IOException {
|
public boolean readSegment(Segment s) throws IOException {
|
||||||
if(frame == frames.length) return false;
|
if(segmentNumber == segments.length) return false;
|
||||||
byte[] src = frames[frame];
|
byte[] src = segments[segmentNumber];
|
||||||
System.arraycopy(src, 0, s.getBuffer(), 0, src.length);
|
System.arraycopy(src, 0, s.getBuffer(), 0, src.length);
|
||||||
s.setLength(src.length);
|
s.setLength(src.length);
|
||||||
frame++;
|
segmentNumber++;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ import java.io.InputStream;
|
|||||||
import net.sf.briar.api.FormatException;
|
import net.sf.briar.api.FormatException;
|
||||||
|
|
||||||
/** A connection decrypter that performs no decryption. */
|
/** A connection decrypter that performs no decryption. */
|
||||||
class NullConnectionDecrypter implements FrameSource {
|
class NullConnectionDecrypter implements IncomingEncryptionLayer {
|
||||||
|
|
||||||
private final InputStream in;
|
private final InputStream in;
|
||||||
private final int macLength;
|
private final int macLength;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
/** A ConnectionEncrypter that performs no encryption. */
|
/** A ConnectionEncrypter that performs no encryption. */
|
||||||
class NullConnectionEncrypter implements ConnectionEncrypter {
|
class NullConnectionEncrypter implements OutgoingEncryptionLayer {
|
||||||
|
|
||||||
private final OutputStream out;
|
private final OutputStream out;
|
||||||
|
|
||||||
|
|||||||
@@ -18,14 +18,14 @@ import org.junit.Test;
|
|||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
public class ConnectionEncrypterImplTest extends BriarTestCase {
|
public class OutgoingEncryptionLayerImplTest extends BriarTestCase {
|
||||||
|
|
||||||
private static final int MAC_LENGTH = 32;
|
private static final int MAC_LENGTH = 32;
|
||||||
|
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
private final ErasableKey tagKey, frameKey;
|
private final ErasableKey tagKey, frameKey;
|
||||||
|
|
||||||
public ConnectionEncrypterImplTest() {
|
public OutgoingEncryptionLayerImplTest() {
|
||||||
super();
|
super();
|
||||||
Injector i = Guice.createInjector(new CryptoModule());
|
Injector i = Guice.createInjector(new CryptoModule());
|
||||||
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
||||||
@@ -58,16 +58,18 @@ public class ConnectionEncrypterImplTest extends BriarTestCase {
|
|||||||
out.write(ciphertext);
|
out.write(ciphertext);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
byte[] expected = out.toByteArray();
|
byte[] expected = out.toByteArray();
|
||||||
// Use a ConnectionEncrypter to encrypt the plaintext
|
// Use the encryption layer to encrypt the plaintext
|
||||||
out.reset();
|
out.reset();
|
||||||
ConnectionEncrypter e = new ConnectionEncrypterImpl(out, Long.MAX_VALUE,
|
OutgoingEncryptionLayer encrypter = new OutgoingEncryptionLayerImpl(out,
|
||||||
tagCipher, frameCipher, tagKey, frameKey, false);
|
Long.MAX_VALUE, tagCipher, frameCipher, tagKey, frameKey,
|
||||||
e.writeFrame(plaintext, plaintext.length);
|
false);
|
||||||
e.writeFrame(plaintext1, plaintext1.length);
|
encrypter.writeFrame(plaintext, plaintext.length);
|
||||||
|
encrypter.writeFrame(plaintext1, plaintext1.length);
|
||||||
byte[] actual = out.toByteArray();
|
byte[] actual = out.toByteArray();
|
||||||
// Check that the actual ciphertext matches the expected ciphertext
|
// Check that the actual ciphertext matches the expected ciphertext
|
||||||
assertArrayEquals(expected, actual);
|
assertArrayEquals(expected, actual);
|
||||||
assertEquals(Long.MAX_VALUE - actual.length, e.getRemainingCapacity());
|
assertEquals(Long.MAX_VALUE - actual.length,
|
||||||
|
encrypter.getRemainingCapacity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -97,15 +99,16 @@ public class ConnectionEncrypterImplTest extends BriarTestCase {
|
|||||||
out.write(tag1);
|
out.write(tag1);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
byte[] expected = out.toByteArray();
|
byte[] expected = out.toByteArray();
|
||||||
// Use a ConnectionEncrypter to encrypt the plaintext
|
// Use the encryption layer to encrypt the plaintext
|
||||||
out.reset();
|
out.reset();
|
||||||
ConnectionEncrypter e = new ConnectionEncrypterImpl(out, Long.MAX_VALUE,
|
OutgoingEncryptionLayer encrypter = new OutgoingEncryptionLayerImpl(out,
|
||||||
tagCipher, frameCipher, tagKey, frameKey, true);
|
Long.MAX_VALUE, tagCipher, frameCipher, tagKey, frameKey, true);
|
||||||
e.writeFrame(plaintext, plaintext.length);
|
encrypter.writeFrame(plaintext, plaintext.length);
|
||||||
e.writeFrame(plaintext1, plaintext1.length);
|
encrypter.writeFrame(plaintext1, plaintext1.length);
|
||||||
byte[] actual = out.toByteArray();
|
byte[] actual = out.toByteArray();
|
||||||
// Check that the actual ciphertext matches the expected ciphertext
|
// Check that the actual ciphertext matches the expected ciphertext
|
||||||
assertArrayEquals(expected, actual);
|
assertArrayEquals(expected, actual);
|
||||||
assertEquals(Long.MAX_VALUE - actual.length, e.getRemainingCapacity());
|
assertEquals(Long.MAX_VALUE - actual.length,
|
||||||
|
encrypter.getRemainingCapacity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,14 +21,14 @@ import org.junit.Test;
|
|||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
public class SegmentedConnectionEncrypterTest extends BriarTestCase {
|
public class OutgoingSegmentedEncryptionLayerTest extends BriarTestCase {
|
||||||
|
|
||||||
private static final int MAC_LENGTH = 32;
|
private static final int MAC_LENGTH = 32;
|
||||||
|
|
||||||
private final Cipher tagCipher, frameCipher;
|
private final Cipher tagCipher, frameCipher;
|
||||||
private final ErasableKey tagKey, frameKey;
|
private final ErasableKey tagKey, frameKey;
|
||||||
|
|
||||||
public SegmentedConnectionEncrypterTest() {
|
public OutgoingSegmentedEncryptionLayerTest() {
|
||||||
super();
|
super();
|
||||||
Injector i = Guice.createInjector(new CryptoModule());
|
Injector i = Guice.createInjector(new CryptoModule());
|
||||||
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
CryptoComponent crypto = i.getInstance(CryptoComponent.class);
|
||||||
@@ -61,18 +61,19 @@ public class SegmentedConnectionEncrypterTest extends BriarTestCase {
|
|||||||
out.write(ciphertext);
|
out.write(ciphertext);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
byte[] expected = out.toByteArray();
|
byte[] expected = out.toByteArray();
|
||||||
// Use a connection encrypter to encrypt the plaintext
|
// Use the encryption layer to encrypt the plaintext
|
||||||
ByteArraySegmentSink sink = new ByteArraySegmentSink();
|
ByteArraySegmentSink sink = new ByteArraySegmentSink();
|
||||||
ConnectionEncrypter e = new SegmentedConnectionEncrypter(sink,
|
OutgoingEncryptionLayer encrypter =
|
||||||
Long.MAX_VALUE, tagCipher, frameCipher, tagKey, frameKey,
|
new OutgoingSegmentedEncryptionLayer(sink, Long.MAX_VALUE,
|
||||||
false);
|
tagCipher, frameCipher, tagKey, frameKey, false);
|
||||||
// The first frame's buffer must have enough space for the tag
|
// The first frame's buffer must have enough space for the tag
|
||||||
e.writeFrame(plaintext, plaintext.length);
|
encrypter.writeFrame(plaintext, plaintext.length);
|
||||||
e.writeFrame(plaintext1, plaintext1.length);
|
encrypter.writeFrame(plaintext1, plaintext1.length);
|
||||||
byte[] actual = out.toByteArray();
|
byte[] actual = out.toByteArray();
|
||||||
// Check that the actual ciphertext matches the expected ciphertext
|
// Check that the actual ciphertext matches the expected ciphertext
|
||||||
assertArrayEquals(expected, actual);
|
assertArrayEquals(expected, actual);
|
||||||
assertEquals(Long.MAX_VALUE - actual.length, e.getRemainingCapacity());
|
assertEquals(Long.MAX_VALUE - actual.length,
|
||||||
|
encrypter.getRemainingCapacity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -102,16 +103,18 @@ public class SegmentedConnectionEncrypterTest extends BriarTestCase {
|
|||||||
out.write(tag1);
|
out.write(tag1);
|
||||||
out.write(ciphertext1);
|
out.write(ciphertext1);
|
||||||
byte[] expected = out.toByteArray();
|
byte[] expected = out.toByteArray();
|
||||||
// Use a connection encrypter to encrypt the plaintext
|
// Use the encryption layer to encrypt the plaintext
|
||||||
SegmentSink sink = new ByteArraySegmentSink();
|
SegmentSink sink = new ByteArraySegmentSink();
|
||||||
ConnectionEncrypter e = new SegmentedConnectionEncrypter(sink,
|
OutgoingEncryptionLayer encrypter =
|
||||||
Long.MAX_VALUE, tagCipher, frameCipher, tagKey, frameKey, true);
|
new OutgoingSegmentedEncryptionLayer(sink, Long.MAX_VALUE,
|
||||||
e.writeFrame(plaintext, plaintext.length);
|
tagCipher, frameCipher, tagKey, frameKey, true);
|
||||||
e.writeFrame(plaintext1, plaintext1.length);
|
encrypter.writeFrame(plaintext, plaintext.length);
|
||||||
|
encrypter.writeFrame(plaintext1, plaintext1.length);
|
||||||
byte[] actual = out.toByteArray();
|
byte[] actual = out.toByteArray();
|
||||||
// Check that the actual ciphertext matches the expected ciphertext
|
// Check that the actual ciphertext matches the expected ciphertext
|
||||||
assertArrayEquals(expected, actual);
|
assertArrayEquals(expected, actual);
|
||||||
assertEquals(Long.MAX_VALUE - actual.length, e.getRemainingCapacity());
|
assertEquals(Long.MAX_VALUE - actual.length,
|
||||||
|
encrypter.getRemainingCapacity());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ByteArraySegmentSink extends ByteArrayOutputStream
|
private static class ByteArraySegmentSink extends ByteArrayOutputStream
|
||||||
Reference in New Issue
Block a user