From 09cc39b5ffde8b790535929e278ff5c295af88e9 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Mon, 27 Oct 2003 19:05:26 +0000 Subject: Add MBOX routing. Moo --- .../fancydress/type3/routing/RoutingMBOX.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/org/noreply/fancydress/type3/routing/RoutingMBOX.java diff --git a/src/org/noreply/fancydress/type3/routing/RoutingMBOX.java b/src/org/noreply/fancydress/type3/routing/RoutingMBOX.java new file mode 100644 index 0000000..2016228 --- /dev/null +++ b/src/org/noreply/fancydress/type3/routing/RoutingMBOX.java @@ -0,0 +1,64 @@ +/* $Id$ */ +package org.noreply.fancydress.type3.routing; + +import org.noreply.fancydress.misc.Util; +import org.noreply.fancydress.crypto.*; + +/** + * The MBOX routing as specified in the type III spec. + * + * MBOX packets are delivered by email by the handling server. + * + * The payload of a MBOX packet should be constructed according + * to the E2E spec. + * + * @see org.noreply.fancydress.type3.Payload + */ +public class RoutingMBOX extends RoutingDestination { + /** + * Recipient mailbox. + */ + String mailbox; + + /** + * Construct an MBOX routing. + */ + public RoutingMBOX(String mailbox) { + super (RoutingType.MBOX); + + // FIXME: syntax check mailbox + + this.mailbox = mailbox; + } + + /** + * Return the total length in octets of the routing information. + * + * @return total length in octets of the routing information + */ + public int getRoutingInformationLength() { + return DECODINGHANDLE_LEN + mailbox.length(); + } + + /** + * Get the routing type of this instance. + * + * @return routing type + */ + public byte[] getRoutingInformation() { + int length = getRoutingInformationLength(); + byte[] result = new byte[length]; + int pos = 0; + + System.arraycopy(CryptoPrimitives.rand(DECODINGHANDLE_LEN), 0, result, pos, DECODINGHANDLE_LEN); + pos += DECODINGHANDLE_LEN; + System.arraycopy(Util.toOctets(mailbox), 0, result, pos, mailbox.length()); + pos += mailbox.length(); + + if (pos != length) + throw new Error("Did not fill in expected amount of bytes!"); + + return result; + } +} + -- cgit v1.2.3