From 64548375cc28119a1cdda78e818713ce0a372a44 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Mon, 12 Sep 2011 16:21:17 +0100 Subject: [PATCH] Offer IDs no longer need to be calculated or echoed in requests. The initiator flag in the transport protocol makes this unnecessary by linking the two sides of a stream-mode connection, making it impossible for an attacker to replay the responder's side of a different connection. --- api/net/sf/briar/api/protocol/Offer.java | 3 --- api/net/sf/briar/api/protocol/OfferId.java | 26 ------------------- api/net/sf/briar/api/protocol/Request.java | 6 ----- api/net/sf/briar/api/protocol/Tags.java | 2 +- .../api/protocol/writers/OfferWriter.java | 5 ++-- .../api/protocol/writers/RequestWriter.java | 4 +-- .../db/ReadWriteLockDatabaseComponent.java | 2 +- .../db/SynchronizedDatabaseComponent.java | 2 +- .../net/sf/briar/protocol/OfferFactory.java | 3 +-- .../sf/briar/protocol/OfferFactoryImpl.java | 5 ++-- .../net/sf/briar/protocol/OfferIdReader.java | 20 -------------- .../net/sf/briar/protocol/OfferImpl.java | 9 +------ .../net/sf/briar/protocol/OfferReader.java | 16 +++--------- .../net/sf/briar/protocol/ProtocolModule.java | 16 +++--------- .../net/sf/briar/protocol/RequestFactory.java | 3 +-- .../sf/briar/protocol/RequestFactoryImpl.java | 5 ++-- .../net/sf/briar/protocol/RequestImpl.java | 9 +------ .../net/sf/briar/protocol/RequestReader.java | 10 ++----- .../protocol/writers/OfferWriterImpl.java | 15 +++-------- .../writers/ProtocolWriterFactoryImpl.java | 2 +- .../protocol/writers/RequestWriterImpl.java | 5 +--- test/net/sf/briar/FileReadWriteTest.java | 6 +---- .../sf/briar/db/DatabaseComponentTest.java | 7 +---- .../briar/protocol/ProtocolReadWriteTest.java | 5 +--- .../sf/briar/protocol/RequestReaderTest.java | 26 +++++-------------- .../briar/protocol/writers/ConstantsTest.java | 3 +-- .../writers/RequestWriterImplTest.java | 24 +++++------------ 27 files changed, 45 insertions(+), 194 deletions(-) delete mode 100644 api/net/sf/briar/api/protocol/OfferId.java delete mode 100644 components/net/sf/briar/protocol/OfferIdReader.java diff --git a/api/net/sf/briar/api/protocol/Offer.java b/api/net/sf/briar/api/protocol/Offer.java index 1f57685a97..6ff90d8339 100644 --- a/api/net/sf/briar/api/protocol/Offer.java +++ b/api/net/sf/briar/api/protocol/Offer.java @@ -8,9 +8,6 @@ public interface Offer { /** The maximum number of message IDs per offer. */ static final int MAX_IDS_PER_OFFER = 29959; - /** Returns the offer's unique identifier. */ - OfferId getId(); - /** Returns the message IDs contained in the offer. */ Collection<MessageId> getMessageIds(); } diff --git a/api/net/sf/briar/api/protocol/OfferId.java b/api/net/sf/briar/api/protocol/OfferId.java deleted file mode 100644 index 1d235cfe71..0000000000 --- a/api/net/sf/briar/api/protocol/OfferId.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.sf.briar.api.protocol; - -import java.io.IOException; -import java.util.Arrays; - -import net.sf.briar.api.serial.Writer; - -/** Type-safe wrapper for a byte array that uniquely identifies an offer. */ -public class OfferId extends UniqueId { - - public OfferId(byte[] id) { - super(id); - } - - public void writeTo(Writer w) throws IOException { - w.writeUserDefinedTag(Tags.OFFER_ID); - w.writeBytes(id); - } - - @Override - public boolean equals(Object o) { - if(o instanceof OfferId) - return Arrays.equals(id, ((OfferId) o).id); - return false; - } -} diff --git a/api/net/sf/briar/api/protocol/Request.java b/api/net/sf/briar/api/protocol/Request.java index 9cc8dce438..a170230207 100644 --- a/api/net/sf/briar/api/protocol/Request.java +++ b/api/net/sf/briar/api/protocol/Request.java @@ -5,12 +5,6 @@ import java.util.BitSet; /** A packet requesting some or all of the messages from an offer. */ public interface Request { - /** - * Returns the unique identifier of the offer to which this request - * responds. - */ - OfferId getOfferId(); - /** * Returns a sequence of bits corresponding to the sequence of messages in * the offer, where the i^th bit is set if the i^th message should be sent. diff --git a/api/net/sf/briar/api/protocol/Tags.java b/api/net/sf/briar/api/protocol/Tags.java index 7013d9c665..60b3be884a 100644 --- a/api/net/sf/briar/api/protocol/Tags.java +++ b/api/net/sf/briar/api/protocol/Tags.java @@ -17,7 +17,7 @@ public interface Tags { static final int MESSAGE = 7; static final int MESSAGE_ID = 8; static final int OFFER = 9; - static final int OFFER_ID = 10; + // FIXME: Renumber static final int REQUEST = 11; static final int SUBSCRIPTION_UPDATE = 12; static final int TRANSPORT_PROPERTIES = 13; diff --git a/api/net/sf/briar/api/protocol/writers/OfferWriter.java b/api/net/sf/briar/api/protocol/writers/OfferWriter.java index 9a5b945ae6..8faee5bed2 100644 --- a/api/net/sf/briar/api/protocol/writers/OfferWriter.java +++ b/api/net/sf/briar/api/protocol/writers/OfferWriter.java @@ -3,7 +3,6 @@ package net.sf.briar.api.protocol.writers; import java.io.IOException; import net.sf.briar.api.protocol.MessageId; -import net.sf.briar.api.protocol.OfferId; /** An interface for creating an offer packet. */ public interface OfferWriter { @@ -14,6 +13,6 @@ public interface OfferWriter { */ boolean writeMessageId(MessageId m) throws IOException; - /** Finishes writing the offer and returns its unique identifier. */ - OfferId finish() throws IOException; + /** Finishes writing the offer. */ + void finish() throws IOException; } diff --git a/api/net/sf/briar/api/protocol/writers/RequestWriter.java b/api/net/sf/briar/api/protocol/writers/RequestWriter.java index d284f5c0c1..01f4b0c117 100644 --- a/api/net/sf/briar/api/protocol/writers/RequestWriter.java +++ b/api/net/sf/briar/api/protocol/writers/RequestWriter.java @@ -3,11 +3,9 @@ package net.sf.briar.api.protocol.writers; import java.io.IOException; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; - /** An interface for creating a request packet. */ public interface RequestWriter { /** Writes the contents of the request. */ - void writeRequest(OfferId offerId, BitSet b, int length) throws IOException; + void writeRequest(BitSet b, int length) throws IOException; } diff --git a/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java b/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java index 43b382a26c..f0211d04a8 100644 --- a/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java +++ b/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java @@ -815,7 +815,7 @@ class ReadWriteLockDatabaseComponent<Txn> extends DatabaseComponentImpl<Txn> { db.abortTransaction(txn); throw e; } - r.writeRequest(o.getId(), request, offered.size()); + r.writeRequest(request, offered.size()); } finally { subscriptionLock.readLock().unlock(); } diff --git a/components/net/sf/briar/db/SynchronizedDatabaseComponent.java b/components/net/sf/briar/db/SynchronizedDatabaseComponent.java index 42048e12a6..f27f9f86ff 100644 --- a/components/net/sf/briar/db/SynchronizedDatabaseComponent.java +++ b/components/net/sf/briar/db/SynchronizedDatabaseComponent.java @@ -627,7 +627,7 @@ class SynchronizedDatabaseComponent<Txn> extends DatabaseComponentImpl<Txn> { db.abortTransaction(txn); throw e; } - r.writeRequest(o.getId(), request, offered.size()); + r.writeRequest(request, offered.size()); } } } diff --git a/components/net/sf/briar/protocol/OfferFactory.java b/components/net/sf/briar/protocol/OfferFactory.java index c9a1c33cc7..6f19d4e291 100644 --- a/components/net/sf/briar/protocol/OfferFactory.java +++ b/components/net/sf/briar/protocol/OfferFactory.java @@ -4,9 +4,8 @@ import java.util.Collection; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; interface OfferFactory { - Offer createOffer(OfferId id, Collection<MessageId> offered); + Offer createOffer(Collection<MessageId> offered); } diff --git a/components/net/sf/briar/protocol/OfferFactoryImpl.java b/components/net/sf/briar/protocol/OfferFactoryImpl.java index f76802c205..075527d147 100644 --- a/components/net/sf/briar/protocol/OfferFactoryImpl.java +++ b/components/net/sf/briar/protocol/OfferFactoryImpl.java @@ -4,11 +4,10 @@ import java.util.Collection; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; class OfferFactoryImpl implements OfferFactory { - public Offer createOffer(OfferId id, Collection<MessageId> offered) { - return new OfferImpl(id, offered); + public Offer createOffer(Collection<MessageId> offered) { + return new OfferImpl(offered); } } diff --git a/components/net/sf/briar/protocol/OfferIdReader.java b/components/net/sf/briar/protocol/OfferIdReader.java deleted file mode 100644 index 3c1fe80aad..0000000000 --- a/components/net/sf/briar/protocol/OfferIdReader.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.sf.briar.protocol; - -import java.io.IOException; - -import net.sf.briar.api.FormatException; -import net.sf.briar.api.protocol.OfferId; -import net.sf.briar.api.protocol.Tags; -import net.sf.briar.api.protocol.UniqueId; -import net.sf.briar.api.serial.ObjectReader; -import net.sf.briar.api.serial.Reader; - -class OfferIdReader implements ObjectReader<OfferId> { - - public OfferId readObject(Reader r) throws IOException { - r.readUserDefinedTag(Tags.OFFER_ID); - byte[] b = r.readBytes(UniqueId.LENGTH); - if(b.length != UniqueId.LENGTH) throw new FormatException(); - return new OfferId(b); - } -} diff --git a/components/net/sf/briar/protocol/OfferImpl.java b/components/net/sf/briar/protocol/OfferImpl.java index 0ce2e6bfe9..de892202e6 100644 --- a/components/net/sf/briar/protocol/OfferImpl.java +++ b/components/net/sf/briar/protocol/OfferImpl.java @@ -4,22 +4,15 @@ import java.util.Collection; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; class OfferImpl implements Offer { - private final OfferId id; private final Collection<MessageId> offered; - OfferImpl(OfferId id, Collection<MessageId> offered) { - this.id = id; + OfferImpl(Collection<MessageId> offered) { this.offered = offered; } - public OfferId getId() { - return id; - } - public Collection<MessageId> getMessageIds() { return offered; } diff --git a/components/net/sf/briar/protocol/OfferReader.java b/components/net/sf/briar/protocol/OfferReader.java index 5dc7e97546..970b96453c 100644 --- a/components/net/sf/briar/protocol/OfferReader.java +++ b/components/net/sf/briar/protocol/OfferReader.java @@ -1,14 +1,11 @@ package net.sf.briar.protocol; import java.io.IOException; -import java.security.MessageDigest; import java.util.Collection; import net.sf.briar.api.FormatException; -import net.sf.briar.api.crypto.CryptoComponent; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolConstants; import net.sf.briar.api.protocol.Tags; import net.sf.briar.api.serial.Consumer; @@ -17,36 +14,29 @@ import net.sf.briar.api.serial.Reader; class OfferReader implements ObjectReader<Offer> { - private final MessageDigest messageDigest; private final ObjectReader<MessageId> messageIdReader; private final OfferFactory offerFactory; - OfferReader(CryptoComponent crypto, ObjectReader<MessageId> messageIdReader, + OfferReader(ObjectReader<MessageId> messageIdReader, OfferFactory offerFactory) { - messageDigest = crypto.getMessageDigest(); this.messageIdReader = messageIdReader; this.offerFactory = offerFactory; } public Offer readObject(Reader r) throws IOException { - // Initialise the consumers + // Initialise the consumer Consumer counting = new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); - DigestingConsumer digesting = new DigestingConsumer(messageDigest); - messageDigest.reset(); // Read the data r.addConsumer(counting); - r.addConsumer(digesting); r.readUserDefinedTag(Tags.OFFER); r.addObjectReader(Tags.MESSAGE_ID, messageIdReader); Collection<MessageId> messages = r.readList(MessageId.class); if(messages.size() > Offer.MAX_IDS_PER_OFFER) throw new FormatException(); r.removeObjectReader(Tags.MESSAGE_ID); - r.removeConsumer(digesting); r.removeConsumer(counting); // Build and return the offer - OfferId id = new OfferId(messageDigest.digest()); - return offerFactory.createOffer(id, messages); + return offerFactory.createOffer(messages); } } diff --git a/components/net/sf/briar/protocol/ProtocolModule.java b/components/net/sf/briar/protocol/ProtocolModule.java index 79d4bac586..6d36d8efb3 100644 --- a/components/net/sf/briar/protocol/ProtocolModule.java +++ b/components/net/sf/briar/protocol/ProtocolModule.java @@ -12,7 +12,6 @@ import net.sf.briar.api.protocol.Message; import net.sf.briar.api.protocol.MessageEncoder; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolReaderFactory; import net.sf.briar.api.protocol.Request; import net.sf.briar.api.protocol.SubscriptionUpdate; @@ -82,21 +81,14 @@ public class ProtocolModule extends AbstractModule { } @Provides - ObjectReader<OfferId> getOfferIdReader() { - return new OfferIdReader(); - } - - @Provides - ObjectReader<Offer> getOfferReader(CryptoComponent crypto, - ObjectReader<MessageId> messageIdReader, + ObjectReader<Offer> getOfferReader(ObjectReader<MessageId> messageIdReader, OfferFactory offerFactory) { - return new OfferReader(crypto, messageIdReader, offerFactory); + return new OfferReader(messageIdReader, offerFactory); } @Provides - ObjectReader<Request> getRequestReader(ObjectReader<OfferId> offerIdReader, - RequestFactory requestFactory) { - return new RequestReader(offerIdReader, requestFactory); + ObjectReader<Request> getRequestReader(RequestFactory requestFactory) { + return new RequestReader(requestFactory); } @Provides diff --git a/components/net/sf/briar/protocol/RequestFactory.java b/components/net/sf/briar/protocol/RequestFactory.java index 09459765a6..005982b826 100644 --- a/components/net/sf/briar/protocol/RequestFactory.java +++ b/components/net/sf/briar/protocol/RequestFactory.java @@ -2,10 +2,9 @@ package net.sf.briar.protocol; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.Request; interface RequestFactory { - Request createRequest(OfferId offerId, BitSet requested); + Request createRequest(BitSet requested); } diff --git a/components/net/sf/briar/protocol/RequestFactoryImpl.java b/components/net/sf/briar/protocol/RequestFactoryImpl.java index 68cce91c54..0c2c77cb1c 100644 --- a/components/net/sf/briar/protocol/RequestFactoryImpl.java +++ b/components/net/sf/briar/protocol/RequestFactoryImpl.java @@ -2,12 +2,11 @@ package net.sf.briar.protocol; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.Request; class RequestFactoryImpl implements RequestFactory { - public Request createRequest(OfferId offerId, BitSet requested) { - return new RequestImpl(offerId, requested); + public Request createRequest(BitSet requested) { + return new RequestImpl(requested); } } diff --git a/components/net/sf/briar/protocol/RequestImpl.java b/components/net/sf/briar/protocol/RequestImpl.java index 42d3247ee9..ddb31898ae 100644 --- a/components/net/sf/briar/protocol/RequestImpl.java +++ b/components/net/sf/briar/protocol/RequestImpl.java @@ -2,23 +2,16 @@ package net.sf.briar.protocol; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.Request; class RequestImpl implements Request { - private final OfferId offerId; private final BitSet requested; - RequestImpl(OfferId offerId, BitSet requested) { - this.offerId = offerId; + RequestImpl(BitSet requested) { this.requested = requested; } - public OfferId getOfferId() { - return offerId; - } - public BitSet getBitmap() { return requested; } diff --git a/components/net/sf/briar/protocol/RequestReader.java b/components/net/sf/briar/protocol/RequestReader.java index 77594c6509..88ebec391b 100644 --- a/components/net/sf/briar/protocol/RequestReader.java +++ b/components/net/sf/briar/protocol/RequestReader.java @@ -3,7 +3,6 @@ package net.sf.briar.protocol; import java.io.IOException; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolConstants; import net.sf.briar.api.protocol.Request; import net.sf.briar.api.protocol.Tags; @@ -13,12 +12,9 @@ import net.sf.briar.api.serial.Reader; class RequestReader implements ObjectReader<Request> { - private final ObjectReader<OfferId> offerIdReader; private final RequestFactory requestFactory; - RequestReader(ObjectReader<OfferId> offerIdReader, - RequestFactory requestFactory) { - this.offerIdReader = offerIdReader; + RequestReader(RequestFactory requestFactory) { this.requestFactory = requestFactory; } @@ -29,8 +25,6 @@ class RequestReader implements ObjectReader<Request> { // Read the data r.addConsumer(counting); r.readUserDefinedTag(Tags.REQUEST); - r.addObjectReader(Tags.OFFER_ID, offerIdReader); - OfferId offerId = r.readUserDefined(Tags.OFFER_ID, OfferId.class); byte[] bitmap = r.readBytes(ProtocolConstants.MAX_PACKET_LENGTH); r.removeConsumer(counting); // Convert the bitmap into a BitSet @@ -41,6 +35,6 @@ class RequestReader implements ObjectReader<Request> { if((bitmap[i] & bit) != 0) b.set(i * 8 + j); } } - return requestFactory.createRequest(offerId, b); + return requestFactory.createRequest(b); } } diff --git a/components/net/sf/briar/protocol/writers/OfferWriterImpl.java b/components/net/sf/briar/protocol/writers/OfferWriterImpl.java index 424a021ebd..f606172ea0 100644 --- a/components/net/sf/briar/protocol/writers/OfferWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/OfferWriterImpl.java @@ -2,12 +2,9 @@ package net.sf.briar.protocol.writers; import java.io.IOException; import java.io.OutputStream; -import java.security.DigestOutputStream; -import java.security.MessageDigest; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.Tags; import net.sf.briar.api.protocol.writers.OfferWriter; import net.sf.briar.api.serial.Writer; @@ -17,21 +14,17 @@ class OfferWriterImpl implements OfferWriter { private final OutputStream out; private final Writer w; - private final MessageDigest messageDigest; private boolean started = false; private int idsWritten = 0; - OfferWriterImpl(OutputStream out, WriterFactory writerFactory, - MessageDigest messageDigest) { - this.out = new DigestOutputStream(out, messageDigest); + OfferWriterImpl(OutputStream out, WriterFactory writerFactory) { + this.out = out; w = writerFactory.createWriter(out); - this.messageDigest = messageDigest; } public boolean writeMessageId(MessageId m) throws IOException { if(!started) { - messageDigest.reset(); w.writeUserDefinedTag(Tags.OFFER); w.writeListStart(); started = true; @@ -42,9 +35,8 @@ class OfferWriterImpl implements OfferWriter { return true; } - public OfferId finish() throws IOException { + public void finish() throws IOException { if(!started) { - messageDigest.reset(); w.writeUserDefinedTag(Tags.OFFER); w.writeListStart(); started = true; @@ -52,6 +44,5 @@ class OfferWriterImpl implements OfferWriter { w.writeListEnd(); out.flush(); started = false; - return new OfferId(messageDigest.digest()); } } diff --git a/components/net/sf/briar/protocol/writers/ProtocolWriterFactoryImpl.java b/components/net/sf/briar/protocol/writers/ProtocolWriterFactoryImpl.java index ce14908f1c..2599940367 100644 --- a/components/net/sf/briar/protocol/writers/ProtocolWriterFactoryImpl.java +++ b/components/net/sf/briar/protocol/writers/ProtocolWriterFactoryImpl.java @@ -36,7 +36,7 @@ class ProtocolWriterFactoryImpl implements ProtocolWriterFactory { } public OfferWriter createOfferWriter(OutputStream out) { - return new OfferWriterImpl(out, writerFactory, messageDigest); + return new OfferWriterImpl(out, writerFactory); } public RequestWriter createRequestWriter(OutputStream out) { diff --git a/components/net/sf/briar/protocol/writers/RequestWriterImpl.java b/components/net/sf/briar/protocol/writers/RequestWriterImpl.java index d50909dabb..6e6ce137ad 100644 --- a/components/net/sf/briar/protocol/writers/RequestWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/RequestWriterImpl.java @@ -4,7 +4,6 @@ import java.io.IOException; import java.io.OutputStream; import java.util.BitSet; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.Tags; import net.sf.briar.api.protocol.writers.RequestWriter; import net.sf.briar.api.serial.Writer; @@ -20,11 +19,9 @@ class RequestWriterImpl implements RequestWriter { w = writerFactory.createWriter(out); } - public void writeRequest(OfferId offerId, BitSet b, int length) + public void writeRequest(BitSet b, int length) throws IOException { w.writeUserDefinedTag(Tags.REQUEST); - w.writeUserDefinedTag(Tags.OFFER_ID); - w.writeBytes(offerId.getBytes()); // If the number of bits isn't a multiple of 8, round up to a byte int bytes = length % 8 == 0 ? length / 8 : length / 8 + 1; byte[] bitmap = new byte[bytes]; diff --git a/test/net/sf/briar/FileReadWriteTest.java b/test/net/sf/briar/FileReadWriteTest.java index fa54fd4a3a..de0dfd619b 100644 --- a/test/net/sf/briar/FileReadWriteTest.java +++ b/test/net/sf/briar/FileReadWriteTest.java @@ -27,7 +27,6 @@ import net.sf.briar.api.protocol.Message; import net.sf.briar.api.protocol.MessageEncoder; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolReader; import net.sf.briar.api.protocol.ProtocolReaderFactory; import net.sf.briar.api.protocol.Request; @@ -79,7 +78,6 @@ public class FileReadWriteTest extends TestCase { private final Message message, message1, message2, message3; private final String authorName = "Alice"; private final String messageBody = "Hello world"; - private final OfferId offerId; private final Map<String, Map<String, String>> transports; public FileReadWriteTest() throws Exception { @@ -120,7 +118,6 @@ public class FileReadWriteTest extends TestCase { message3 = messageEncoder.encodeMessage(MessageId.NONE, group1, groupKeyPair.getPrivate(), author, authorKeyPair.getPrivate(), messageBody.getBytes("UTF-8")); - offerId = new OfferId(TestUtils.getRandomId()); transports = Collections.singletonMap("foo", Collections.singletonMap("bar", "baz")); } @@ -160,7 +157,7 @@ public class FileReadWriteTest extends TestCase { BitSet requested = new BitSet(4); requested.set(1); requested.set(3); - r.writeRequest(offerId, requested, 4); + r.writeRequest(requested, 4); SubscriptionWriter s = protocolWriterFactory.createSubscriptionWriter(out); @@ -229,7 +226,6 @@ public class FileReadWriteTest extends TestCase { // Read the request assertTrue(protocolReader.hasRequest()); Request req = protocolReader.readRequest(); - assertEquals(offerId, req.getOfferId()); BitSet requested = req.getBitmap(); assertFalse(requested.get(0)); assertTrue(requested.get(1)); diff --git a/test/net/sf/briar/db/DatabaseComponentTest.java b/test/net/sf/briar/db/DatabaseComponentTest.java index 9454785c95..04297083df 100644 --- a/test/net/sf/briar/db/DatabaseComponentTest.java +++ b/test/net/sf/briar/db/DatabaseComponentTest.java @@ -25,7 +25,6 @@ import net.sf.briar.api.protocol.GroupId; import net.sf.briar.api.protocol.Message; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.SubscriptionUpdate; import net.sf.briar.api.protocol.TransportUpdate; import net.sf.briar.api.protocol.writers.AckWriter; @@ -50,7 +49,6 @@ public abstract class DatabaseComponentTest extends TestCase { protected final ContactId contactId; protected final GroupId groupId; protected final MessageId messageId, parentId; - protected final OfferId offerId; private final long timestamp; private final int size; private final byte[] raw; @@ -67,7 +65,6 @@ public abstract class DatabaseComponentTest extends TestCase { groupId = new GroupId(TestUtils.getRandomId()); messageId = new MessageId(TestUtils.getRandomId()); parentId = new MessageId(TestUtils.getRandomId()); - offerId = new OfferId(TestUtils.getRandomId()); timestamp = System.currentTimeMillis(); size = 1234; raw = new byte[size]; @@ -1036,9 +1033,7 @@ public abstract class DatabaseComponentTest extends TestCase { will(returnValue(true)); // Visible - do not request message # 1 oneOf(database).setStatusSeenIfVisible(txn, contactId, messageId2); will(returnValue(false)); // Not visible - request message # 2 - oneOf(offer).getId(); - will(returnValue(offerId)); - oneOf(requestWriter).writeRequest(offerId, expectedRequest, 3); + oneOf(requestWriter).writeRequest(expectedRequest, 3); }}); DatabaseComponent db = createDatabaseComponent(database, cleaner); diff --git a/test/net/sf/briar/protocol/ProtocolReadWriteTest.java b/test/net/sf/briar/protocol/ProtocolReadWriteTest.java index 537da36b5e..393a86816f 100644 --- a/test/net/sf/briar/protocol/ProtocolReadWriteTest.java +++ b/test/net/sf/briar/protocol/ProtocolReadWriteTest.java @@ -17,7 +17,6 @@ import net.sf.briar.api.protocol.Message; import net.sf.briar.api.protocol.MessageEncoder; import net.sf.briar.api.protocol.MessageId; import net.sf.briar.api.protocol.Offer; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolReader; import net.sf.briar.api.protocol.ProtocolReaderFactory; import net.sf.briar.api.protocol.Request; @@ -47,7 +46,6 @@ public class ProtocolReadWriteTest extends TestCase { private final Group group; private final Message message; private final String messageBody = "Hello world"; - private final OfferId offerId; private final BitSet bitSet; private final Map<Group, Long> subscriptions; private final Map<String, Map<String, String>> transports; @@ -65,7 +63,6 @@ public class ProtocolReadWriteTest extends TestCase { MessageEncoder messageEncoder = i.getInstance(MessageEncoder.class); message = messageEncoder.encodeMessage(MessageId.NONE, group, messageBody.getBytes("UTF-8")); - offerId = new OfferId(TestUtils.getRandomId()); bitSet = new BitSet(); bitSet.set(3); bitSet.set(7); @@ -92,7 +89,7 @@ public class ProtocolReadWriteTest extends TestCase { o.finish(); RequestWriter r = writerFactory.createRequestWriter(out); - r.writeRequest(offerId, bitSet, 10); + r.writeRequest(bitSet, 10); SubscriptionWriter s = writerFactory.createSubscriptionWriter(out); s.writeSubscriptions(subscriptions, timestamp); diff --git a/test/net/sf/briar/protocol/RequestReaderTest.java b/test/net/sf/briar/protocol/RequestReaderTest.java index 8be4c17049..d93ec834a6 100644 --- a/test/net/sf/briar/protocol/RequestReaderTest.java +++ b/test/net/sf/briar/protocol/RequestReaderTest.java @@ -6,11 +6,9 @@ import java.util.BitSet; import junit.framework.TestCase; import net.sf.briar.api.FormatException; -import net.sf.briar.api.protocol.OfferId; import net.sf.briar.api.protocol.ProtocolConstants; import net.sf.briar.api.protocol.Request; import net.sf.briar.api.protocol.Tags; -import net.sf.briar.api.protocol.UniqueId; import net.sf.briar.api.serial.Reader; import net.sf.briar.api.serial.ReaderFactory; import net.sf.briar.api.serial.Writer; @@ -41,8 +39,7 @@ public class RequestReaderTest extends TestCase { @Test public void testFormatExceptionIfRequestIsTooLarge() throws Exception { RequestFactory requestFactory = context.mock(RequestFactory.class); - RequestReader requestReader = - new RequestReader(new OfferIdReader(), requestFactory); + RequestReader requestReader = new RequestReader(requestFactory); byte[] b = createRequest(true); ByteArrayInputStream in = new ByteArrayInputStream(b); @@ -60,12 +57,10 @@ public class RequestReaderTest extends TestCase { public void testNoFormatExceptionIfRequestIsMaximumSize() throws Exception { final RequestFactory requestFactory = context.mock(RequestFactory.class); - RequestReader requestReader = - new RequestReader(new OfferIdReader(), requestFactory); + RequestReader requestReader = new RequestReader(requestFactory); final Request request = context.mock(Request.class); context.checking(new Expectations() {{ - oneOf(requestFactory).createRequest(with(any(OfferId.class)), - with(any(BitSet.class))); + oneOf(requestFactory).createRequest(with(any(BitSet.class))); will(returnValue(request)); }}); @@ -101,8 +96,8 @@ public class RequestReaderTest extends TestCase { // Deserialise the request ByteArrayInputStream in = new ByteArrayInputStream(b); Reader reader = readerFactory.createReader(in); - RequestReader requestReader = new RequestReader(new OfferIdReader(), - new RequestFactoryImpl()); + RequestReader requestReader = + new RequestReader(new RequestFactoryImpl()); reader.addObjectReader(Tags.REQUEST, requestReader); Request r = reader.readUserDefined(Tags.REQUEST, Request.class); BitSet decoded = r.getBitmap(); @@ -121,14 +116,9 @@ public class RequestReaderTest extends TestCase { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); w.writeUserDefinedTag(Tags.REQUEST); - w.writeUserDefinedTag(Tags.OFFER_ID); - w.writeBytes(new byte[UniqueId.LENGTH]); - // Allow one byte for the REQUEST tag, one byte for the OFFER_ID tag, - // one byte for the BYTES tag, one byte for the length as a uint7, - // UniqueID.LENGTH bytes for the offer ID, one byte for the BYTES tag, + // Allow one byte for the REQUEST tag, one byte for the BYTES tag, // and five bytes for the length as an int32 - int overhead = UniqueId.LENGTH + 10; - int size = ProtocolConstants.MAX_PACKET_LENGTH - overhead; + int size = ProtocolConstants.MAX_PACKET_LENGTH - 7; if(tooBig) size++; w.writeBytes(new byte[size]); assertEquals(tooBig, out.size() > ProtocolConstants.MAX_PACKET_LENGTH); @@ -139,8 +129,6 @@ public class RequestReaderTest extends TestCase { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); w.writeUserDefinedTag(Tags.REQUEST); - w.writeUserDefinedTag(Tags.OFFER_ID); - w.writeBytes(new byte[UniqueId.LENGTH]); w.writeBytes(bitmap); return out.toByteArray(); } diff --git a/test/net/sf/briar/protocol/writers/ConstantsTest.java b/test/net/sf/briar/protocol/writers/ConstantsTest.java index 1a57de9113..45b08284dd 100644 --- a/test/net/sf/briar/protocol/writers/ConstantsTest.java +++ b/test/net/sf/briar/protocol/writers/ConstantsTest.java @@ -108,8 +108,7 @@ public class ConstantsTest extends TestCase { // Create an offer with the maximum number of message IDs ByteArrayOutputStream out = new ByteArrayOutputStream( ProtocolConstants.MAX_PACKET_LENGTH); - OfferWriter o = new OfferWriterImpl(out, writerFactory, - crypto.getMessageDigest()); + OfferWriter o = new OfferWriterImpl(out, writerFactory); for(int i = 0; i < Offer.MAX_IDS_PER_OFFER; i++) { assertTrue(o.writeMessageId(new MessageId( TestUtils.getRandomId()))); diff --git a/test/net/sf/briar/protocol/writers/RequestWriterImplTest.java b/test/net/sf/briar/protocol/writers/RequestWriterImplTest.java index e7e5d7e73f..c9a5f178fe 100644 --- a/test/net/sf/briar/protocol/writers/RequestWriterImplTest.java +++ b/test/net/sf/briar/protocol/writers/RequestWriterImplTest.java @@ -5,8 +5,6 @@ import java.io.IOException; import java.util.BitSet; import junit.framework.TestCase; -import net.sf.briar.api.protocol.OfferId; -import net.sf.briar.api.protocol.UniqueId; import net.sf.briar.api.protocol.writers.RequestWriter; import net.sf.briar.api.serial.WriterFactory; import net.sf.briar.serial.SerialModule; @@ -20,13 +18,11 @@ import com.google.inject.Injector; public class RequestWriterImplTest extends TestCase { private final WriterFactory writerFactory; - private final OfferId offerId; public RequestWriterImplTest() { super(); Injector i = Guice.createInjector(new SerialModule()); writerFactory = i.getInstance(WriterFactory.class); - offerId = new OfferId(new byte[UniqueId.LENGTH]); } @Test @@ -45,14 +41,10 @@ public class RequestWriterImplTest extends TestCase { b.set(11); b.set(12); b.set(15); - r.writeRequest(offerId, b, 16); - // Short user tag 11, short user tag 10, bytes with length 32 as a - // uint7, 32 zero bytes, short bytes with length 2, 0xD959 + r.writeRequest(b, 16); + // Short user tag 11, short bytes with length 2, 0xD959 byte[] output = out.toByteArray(); - assertEquals("CB" + "CA" + "F6" + "20" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "92" + "D959", StringUtils.toHexString(output)); + assertEquals("CB" + "92" + "D959", StringUtils.toHexString(output)); } @Test @@ -70,13 +62,9 @@ public class RequestWriterImplTest extends TestCase { b.set(9); b.set(11); b.set(12); - r.writeRequest(offerId, b, 13); - // Short user tag 11, short user tag 10, bytes with length 32 as a - // uint7, 32 zero bytes, short bytes with length 2, 0x59D8 + r.writeRequest(b, 13); + // Short user tag 11, short bytes with length 2, 0x59D8 byte[] output = out.toByteArray(); - assertEquals("CB" + "CA" + "F6" + "20" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "92" + "59D8", StringUtils.toHexString(output)); + assertEquals("CB" + "92" + "59D8", StringUtils.toHexString(output)); } } -- GitLab