Commit a12d5ac3 authored by akwizgran's avatar akwizgran

Removed tag from connection context.

parent 708e4f87
......@@ -7,15 +7,14 @@ public class ConnectionContext {
private final ContactId contactId;
private final TransportId transportId;
private final byte[] tag, secret;
private final byte[] secret;
private final long connection;
private final boolean alice;
public ConnectionContext(ContactId contactId, TransportId transportId,
byte[] tag, byte[] secret, long connection, boolean alice) {
byte[] secret, long connection, boolean alice) {
this.contactId = contactId;
this.transportId = transportId;
this.tag = tag;
this.secret = secret;
this.connection = connection;
this.alice = alice;
......@@ -29,10 +28,6 @@ public class ConnectionContext {
return transportId;
}
public byte[] getTag() {
return tag;
}
public byte[] getSecret() {
return secret;
}
......
......@@ -5,8 +5,7 @@ import java.io.InputStream;
public interface ConnectionReaderFactory {
/**
* Creates a connection reader for a simplex connection or one side of a
* duplex connection. The secret is erased before this method returns.
* Creates a connection reader for one side of a connection.
*/
ConnectionReader createConnectionReader(InputStream in,
ConnectionContext ctx, boolean initiator);
......
......@@ -5,8 +5,7 @@ import java.io.OutputStream;
public interface ConnectionWriterFactory {
/**
* Creates a connection writer for a simplex connection or one side of a
* duplex connection. The secret is erased before this method returns.
* Creates a connection writer for one side of a connection.
*/
ConnectionWriter createConnectionWriter(OutputStream out, long capacity,
ConnectionContext ctx, boolean initiator);
......
package net.sf.briar.transport;
import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
import java.io.OutputStream;
import javax.crypto.Cipher;
import net.sf.briar.api.crypto.CryptoComponent;
import net.sf.briar.api.crypto.ErasableKey;
import net.sf.briar.api.transport.ConnectionContext;
......@@ -30,9 +33,12 @@ class ConnectionWriterFactoryImpl implements ConnectionWriterFactory {
initiator);
FrameWriter encryption;
if(initiator) {
byte[] tag = new byte[TAG_LENGTH];
Cipher tagCipher = crypto.getTagCipher();
ErasableKey tagKey = crypto.deriveTagKey(secret, alice);
TagEncoder.encodeTag(tag, tagCipher, tagKey, connection);
encryption = new OutgoingEncryptionLayer(out, capacity,
crypto.getFrameCipher(), frameKey, MAX_FRAME_LENGTH,
ctx.getTag());
crypto.getFrameCipher(), frameKey, MAX_FRAME_LENGTH, tag);
} else {
encryption = new OutgoingEncryptionLayer(out, capacity,
crypto.getFrameCipher(), frameKey, MAX_FRAME_LENGTH);
......
......@@ -59,7 +59,7 @@ class TransportConnectionRecogniser {
assert old == null;
} else {
ConnectionContext ctx1 = new ConnectionContext(contactId,
transportId, tag1, secret, connection1, alice);
transportId, secret, connection1, alice);
WindowContext wctx1 = new WindowContext(window, ctx1, period);
WindowContext old = tagMap.put(new Bytes(tag1), wctx1);
assert old == null;
......@@ -83,7 +83,7 @@ class TransportConnectionRecogniser {
byte[] tag = new byte[TAG_LENGTH];
TagEncoder.encodeTag(tag, cipher, key, connection);
ConnectionContext ctx = new ConnectionContext(contactId,
transportId, tag, secret, connection, alice);
transportId, secret, connection, alice);
WindowContext wctx = new WindowContext(window, ctx, period);
WindowContext old = tagMap.put(new Bytes(tag), wctx);
assert old == null;
......
......@@ -141,9 +141,8 @@ public class ProtocolIntegrationTest extends BriarTestCase {
private byte[] write() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret.clone(), 0L, true);
secret.clone(), 0L, true);
ConnectionWriter conn = connectionWriterFactory.createConnectionWriter(
out, Long.MAX_VALUE, ctx, true);
OutputStream out1 = conn.getOutputStream();
......@@ -192,7 +191,7 @@ public class ProtocolIntegrationTest extends BriarTestCase {
assertEquals(TAG_LENGTH, in.read(tag, 0, TAG_LENGTH));
assertArrayEquals(new byte[TAG_LENGTH], tag);
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret.clone(), 0L, true);
secret.clone(), 0L, true);
ConnectionReader conn = connectionReaderFactory.createConnectionReader(
in, ctx, true);
InputStream in1 = conn.getInputStream();
......
......@@ -91,9 +91,8 @@ public class OutgoingSimplexConnectionTest extends BriarTestCase {
ByteArrayOutputStream out = new ByteArrayOutputStream();
TestSimplexTransportWriter transport = new TestSimplexTransportWriter(
out, MAX_PACKET_LENGTH, true);
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret, 0L, true);
secret, 0L, true);
OutgoingSimplexConnection connection = new OutgoingSimplexConnection(db,
connRegistry, connFactory, protoFactory, ctx, transport);
connection.write();
......@@ -109,9 +108,8 @@ public class OutgoingSimplexConnectionTest extends BriarTestCase {
ByteArrayOutputStream out = new ByteArrayOutputStream();
TestSimplexTransportWriter transport = new TestSimplexTransportWriter(
out, MIN_CONNECTION_LENGTH, true);
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret, 0L, true);
secret, 0L, true);
OutgoingSimplexConnection connection = new OutgoingSimplexConnection(db,
connRegistry, connFactory, protoFactory, ctx, transport);
context.checking(new Expectations() {{
......@@ -142,9 +140,8 @@ public class OutgoingSimplexConnectionTest extends BriarTestCase {
ByteArrayOutputStream out = new ByteArrayOutputStream();
TestSimplexTransportWriter transport = new TestSimplexTransportWriter(
out, MIN_CONNECTION_LENGTH, true);
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret, 0L, true);
secret, 0L, true);
OutgoingSimplexConnection connection = new OutgoingSimplexConnection(db,
connRegistry, connFactory, protoFactory, ctx, transport);
final Ack ack = context.mock(Ack.class);
......
......@@ -115,10 +115,8 @@ public class SimplexProtocolIntegrationTest extends BriarTestCase {
alice.getInstance(ProtocolWriterFactory.class);
TestSimplexTransportWriter transport = new TestSimplexTransportWriter(
out, Long.MAX_VALUE, false);
// FIXME: Encode the tag
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, aliceToBobSecret, 0L, true);
aliceToBobSecret, 0L, true);
OutgoingSimplexConnection simplex = new OutgoingSimplexConnection(db,
connRegistry, connFactory, protoFactory, ctx, transport);
// Write whatever needs to be written
......
......@@ -2,7 +2,6 @@ package net.sf.briar.transport;
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PACKET_LENGTH;
import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
import static org.junit.Assert.assertArrayEquals;
import java.io.ByteArrayInputStream;
......@@ -128,9 +127,8 @@ public class TransportIntegrationTest extends BriarTestCase {
public void testOverheadWithTag() throws Exception {
ByteArrayOutputStream out =
new ByteArrayOutputStream(MIN_CONNECTION_LENGTH);
byte[] tag = new byte[TAG_LENGTH];
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
tag, secret, 0L, true);
secret, 0L, true);
ConnectionWriter w = connectionWriterFactory.createConnectionWriter(out,
MIN_CONNECTION_LENGTH, ctx, true);
// Check that the connection writer thinks there's room for a packet
......@@ -151,7 +149,7 @@ public class TransportIntegrationTest extends BriarTestCase {
ByteArrayOutputStream out =
new ByteArrayOutputStream(MIN_CONNECTION_LENGTH);
ConnectionContext ctx = new ConnectionContext(contactId, transportId,
null, secret, 0L, true);
secret, 0L, true);
ConnectionWriter w = connectionWriterFactory.createConnectionWriter(out,
MIN_CONNECTION_LENGTH, ctx, false);
// Check that the connection writer thinks there's room for a packet
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment