/* $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; } }