/* $Id$ */ package org.noreply.fancydress.type3.routing; import org.noreply.fancydress.misc.Util; import org.noreply.fancydress.crypto.*; /** * The SMTP routing as specified in the type III spec. * * SMTP packets are delivered by email by the handling server. * * The payload of a SMTP packet should be constructed according * to the E2E spec. * * @see org.noreply.fancydress.type3.Payload */ public class RoutingSMTP extends RoutingDestination { /** * Recipient mailbox. */ String mailbox; /** * Construct an SMTP routing. */ public RoutingSMTP(String mailbox) { super (RoutingType.SMTP); // 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; if (decodingHandle == null) System.arraycopy(CryptoPrimitives.rand(DECODINGHANDLE_LEN), 0, result, pos, DECODINGHANDLE_LEN); else System.err.println("Using set decoding handle for "+mailbox); 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; } }