From 30d7a0f916e54871664c6e10ed4dc829fbd9512b Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Wed, 20 Jul 2011 14:45:56 +0100 Subject: [PATCH] Defined which protocol objects require user-defined tags. --- api/net/sf/briar/api/protocol/Tags.java | 25 +++++++++---------- .../net/sf/briar/protocol/BatchReader.java | 1 - .../sf/briar/protocol/BundleWriterImpl.java | 4 --- .../net/sf/briar/protocol/HeaderReader.java | 3 --- .../sf/briar/protocol/MessageEncoderImpl.java | 8 ------ .../net/sf/briar/protocol/MessageReader.java | 5 ---- 6 files changed, 12 insertions(+), 34 deletions(-) diff --git a/api/net/sf/briar/api/protocol/Tags.java b/api/net/sf/briar/api/protocol/Tags.java index c3e2b8193e..2bf887b6f2 100644 --- a/api/net/sf/briar/api/protocol/Tags.java +++ b/api/net/sf/briar/api/protocol/Tags.java @@ -1,18 +1,17 @@ package net.sf.briar.api.protocol; +/** + * User-defined tags for encoding and decoding protocol objects. An object + * should have a user-defined tag if it appears in a list or a map, or if + * objects of different types may be encountered in a given protocol state. + */ public interface Tags { - static final int AUTHOR_ID = 1; - static final int BATCH = 2; - static final int BATCH_ID = 3; - static final int GROUP_ID = 4; - static final int HEADER = 5; - static final int MESSAGE = 6; - static final int MESSAGE_BODY = 7; - static final int MESSAGE_ID = 8; - static final int NICKNAME = 9; - static final int PUBLIC_KEY = 10; - static final int SIGNATURE = 12; - static final int TIMESTAMP = 13; - static final int TRANSPORTS = 14; + static final int AUTHOR_ID = 0; + static final int BATCH = 1; + static final int BATCH_ID = 2; + static final int GROUP_ID = 3; + static final int HEADER = 4; + static final int MESSAGE = 5; + static final int MESSAGE_ID = 6; } diff --git a/components/net/sf/briar/protocol/BatchReader.java b/components/net/sf/briar/protocol/BatchReader.java index 336312888b..bfb67d352f 100644 --- a/components/net/sf/briar/protocol/BatchReader.java +++ b/components/net/sf/briar/protocol/BatchReader.java @@ -50,7 +50,6 @@ public class BatchReader implements ObjectReader<Batch> { reader.removeObjectReader(Tags.MESSAGE); reader.removeConsumer(signing); // Read and verify the signature - reader.readUserDefinedTag(Tags.SIGNATURE); byte[] sig = reader.readRaw(); reader.removeConsumer(digesting); reader.removeConsumer(counting); diff --git a/components/net/sf/briar/protocol/BundleWriterImpl.java b/components/net/sf/briar/protocol/BundleWriterImpl.java index dc5aab7c36..e6ff92b7fe 100644 --- a/components/net/sf/briar/protocol/BundleWriterImpl.java +++ b/components/net/sf/briar/protocol/BundleWriterImpl.java @@ -60,15 +60,12 @@ class BundleWriterImpl implements BundleWriter { // Subs writer.writeList(subs); // Transports - writer.writeUserDefinedTag(Tags.TRANSPORTS); writer.writeMap(transports); // Timestamp - writer.writeUserDefinedTag(Tags.TIMESTAMP); writer.writeInt64(System.currentTimeMillis()); out.setSigning(false); // Create and write the signature byte[] sig = signature.sign(); - writer.writeUserDefinedTag(Tags.SIGNATURE); writer.writeRaw(sig); // Expect a (possibly empty) list of batches state = State.FIRST_BATCH; @@ -99,7 +96,6 @@ class BundleWriterImpl implements BundleWriter { out.setSigning(false); // Create and write the signature byte[] sig = signature.sign(); - writer.writeUserDefinedTag(Tags.SIGNATURE); writer.writeRaw(sig); out.setDigesting(false); // Calculate and return the ID diff --git a/components/net/sf/briar/protocol/HeaderReader.java b/components/net/sf/briar/protocol/HeaderReader.java index 24f5f02d8d..aeaf93e2b9 100644 --- a/components/net/sf/briar/protocol/HeaderReader.java +++ b/components/net/sf/briar/protocol/HeaderReader.java @@ -47,16 +47,13 @@ class HeaderReader implements ObjectReader<Header> { Collection<GroupId> subs = reader.readList(GroupId.class); reader.removeObjectReader(Tags.GROUP_ID); // Transports - reader.readUserDefinedTag(Tags.TRANSPORTS); Map<String, String> transports = reader.readMap(String.class, String.class); // Timestamp - reader.readUserDefinedTag(Tags.TIMESTAMP); long timestamp = reader.readInt64(); if(timestamp < 0L) throw new FormatException(); reader.removeConsumer(signing); // Read and verify the signature - reader.readUserDefinedTag(Tags.SIGNATURE); byte[] sig = reader.readRaw(); reader.removeConsumer(counting); if(!signature.verify(sig)) throw new SignatureException(); diff --git a/components/net/sf/briar/protocol/MessageEncoderImpl.java b/components/net/sf/briar/protocol/MessageEncoderImpl.java index c3b1748764..339ece3b76 100644 --- a/components/net/sf/briar/protocol/MessageEncoderImpl.java +++ b/components/net/sf/briar/protocol/MessageEncoderImpl.java @@ -12,7 +12,6 @@ import net.sf.briar.api.protocol.GroupId; 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.Tags; import net.sf.briar.api.serial.Writer; import net.sf.briar.api.serial.WriterFactory; @@ -38,13 +37,9 @@ class MessageEncoderImpl implements MessageEncoder { // Write the message parent.writeTo(w); group.writeTo(w); - w.writeUserDefinedTag(Tags.TIMESTAMP); w.writeInt64(timestamp); - w.writeUserDefinedTag(Tags.NICKNAME); w.writeString(nick); - w.writeUserDefinedTag(Tags.PUBLIC_KEY); w.writeRaw(keyPair.getPublic().getEncoded()); - w.writeUserDefinedTag(Tags.MESSAGE_BODY); w.writeRaw(body); // Sign the message byte[] signable = out.toByteArray(); @@ -53,7 +48,6 @@ class MessageEncoderImpl implements MessageEncoder { byte[] sig = signature.sign(); signable = null; // Write the signature - w.writeUserDefinedTag(Tags.SIGNATURE); w.writeRaw(sig); byte[] raw = out.toByteArray(); w.close(); @@ -64,9 +58,7 @@ class MessageEncoderImpl implements MessageEncoder { // The author ID is the hash of the author's nick and public key out.reset(); w = writerFactory.createWriter(out); - w.writeUserDefinedTag(Tags.NICKNAME); w.writeString(nick); - w.writeUserDefinedTag(Tags.PUBLIC_KEY); w.writeRaw(keyPair.getPublic().getEncoded()); w.close(); messageDigest.reset(); diff --git a/components/net/sf/briar/protocol/MessageReader.java b/components/net/sf/briar/protocol/MessageReader.java index 74022dfed5..ba4bad5394 100644 --- a/components/net/sf/briar/protocol/MessageReader.java +++ b/components/net/sf/briar/protocol/MessageReader.java @@ -48,26 +48,21 @@ class MessageReader implements ObjectReader<Message> { if(b.length != UniqueId.LENGTH) throw new FormatException(); GroupId group = new GroupId(b); // Read the timestamp - reader.readUserDefinedTag(Tags.TIMESTAMP); long timestamp = reader.readInt64(); if(timestamp < 0L) throw new FormatException(); // Hash the author's nick and public key to get the author ID DigestingConsumer digesting = new DigestingConsumer(messageDigest); messageDigest.reset(); reader.addConsumer(digesting); - reader.readUserDefinedTag(Tags.NICKNAME); reader.readString(); - reader.readUserDefinedTag(Tags.PUBLIC_KEY); byte[] encodedKey = reader.readRaw(); reader.removeConsumer(digesting); AuthorId author = new AuthorId(messageDigest.digest()); // Skip the message body - reader.readUserDefinedTag(Tags.MESSAGE_BODY); reader.readRaw(); // Record the length of the signed data int messageLength = (int) counting.getCount(); // Read the signature - reader.readUserDefinedTag(Tags.SIGNATURE); byte[] sig = reader.readRaw(); reader.removeConsumer(counting); reader.removeConsumer(copying); -- GitLab