|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | ENUM CONSTANTS | FIELD | METHOD | DETAIL: ENUM CONSTANTS | FIELD | METHOD |
java.lang.Objectjava.lang.Enum<ChannelEstablishMessagePart>
message.ChannelEstablishMessagePart
public enum ChannelEstablishMessagePart
Defines the message format/message parts of a
ChannelEstablishMessage
. Common message parts are for example
"session key" and "payload". The entire message format can be
specified within the enum fields. Any
ChannelEstablishMessagePart
can be retrieved or manipulated
using the methods
getPart(ChannelEstablishMessagePart messagePart)
and
setPart(ChannelEstablishMessagePart messagePart, byte[] data)
in
class ChannelEstablishMessage
.
Overlapping message parts are supported (e. g. a field "asymmetric part",
which consists of several message parts itself).
If a ChannelEstablishMessagePart
is of dynamic length (= its
length depends on the current mix' position in the cascade (Note: Message
length isn't constant in a cascade)), the correct length is calculated
automatically.
Note: A MessagePart
is "dynamic", when its start and/or end
position (=index) is/are equal to, or behind the end position of the last
mix' payload (since the payload's size differs from mix to mix (and
therefore is a dynamic part as well)).
Each MessagePart
provides the following information: It's start
offset (= index), it's end offset and whether the part is "part of the
header" or not. A MessagePart
is considered a "part of the
header", when it is exclusive for each mix of the cascade and therefore will
be dropped by the corresponding mix. For example a "session key" is "part
of the header", since it must be different for each mix and secret to all
others (and therefore won't be sent forward). In contrast, the "payload" is
not "part of the header", since it is sent from one mix to another (after
recoding). Overlapping message parts can't be headers, of course.
See Enum Types Tutorial for information on how to use enumerations in Java.
Note: This enumeration contains the field "MESSAGE_ID" which makes messages TRACEABLE (for debugging)!
Message
Enum Constant Summary | |
---|---|
ASYMMETRIC_PART
The asymmetrically encrypted part of the message. |
|
LEADING_ZERO
Leading zero due to (plain) RSA (first bit must be zero). |
|
MAC
The Message Authentication Code (MAC) of this message. |
|
MAC_KEY
Key used to generate Message Authentication Code (MAC). |
|
MESSAGE_ID
Note: For testing only (MAKES MIX INSECURE): An identifieing number, which is the same for every envelope of a mix message. |
|
PAYLOAD
The payload. |
|
RESERVED
Reserved space (used to fill up header's size to a multiple of the block size). |
|
SESSION_IV
Initialization vector used to decrypt the symmetrically encryptet message part. |
|
SESSION_KEY
Key used to decrypt the symmetrically encrypted message part. |
|
SIGNED_DATA
The signed data of this message. |
|
SYMMETRIC_PART
The symmetrically encrypted part of the message. |
|
TIMESTAMP
Point of time, the message was created. |
Method Summary | |
---|---|
int |
getBasicLength()
Returns the "basic" length of this MessagePart in byte. |
int |
getEndPosition(int numberOfFurtherHops)
Returns this MessagePart 's (possibly dynamic) end position
(= offset), according to the number of further hops (=number of mixes
this MessagePart 's Message still must come to
pass). |
static int |
getHeaderLength()
Returns the length of a Message 's header as defined above
(see static initializer) in byte. |
int |
getLength(int numberOfFurtherHops)
Returns the length of this (possibly dynamic) MessagePart
(in byte), according to the number of further hops (=number of mixes
this MessagePart 's Message still must come to
pass). |
static int |
getMessageLength(int numberOfFurtherHops)
Returns the (dynamic) length of a mix message, according to the specified mix position in the cascade (in byte). |
int |
getStartPosition(int numberOfFurtherHops)
Returns this MessagePart 's (possibly dynamic) start
position (= offset), according to the number of further hops (=number of
mixes this MessagePart 's Message still must
come to pass). |
static ChannelEstablishMessagePart |
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name. |
static ChannelEstablishMessagePart[] |
values()
Returns an array containing the constants of this enum type, in the order they are declared. |
Methods inherited from class java.lang.Enum |
---|
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Enum Constant Detail |
---|
public static final ChannelEstablishMessagePart LEADING_ZERO
public static final ChannelEstablishMessagePart MAC
public static final ChannelEstablishMessagePart MESSAGE_ID
public static final ChannelEstablishMessagePart MAC_KEY
public static final ChannelEstablishMessagePart SESSION_KEY
public static final ChannelEstablishMessagePart SESSION_IV
public static final ChannelEstablishMessagePart TIMESTAMP
public static final ChannelEstablishMessagePart RESERVED
public static final ChannelEstablishMessagePart PAYLOAD
Payload
public static final ChannelEstablishMessagePart SIGNED_DATA
public static final ChannelEstablishMessagePart ASYMMETRIC_PART
public static final ChannelEstablishMessagePart SYMMETRIC_PART
Method Detail |
---|
public static ChannelEstablishMessagePart[] values()
for (ChannelEstablishMessagePart c : ChannelEstablishMessagePart.values()) System.out.println(c);
public static ChannelEstablishMessagePart valueOf(java.lang.String name)
name
- the name of the enum constant to be returned.
java.lang.IllegalArgumentException
- if this enum type has no constant
with the specified name
java.lang.NullPointerException
- if the argument is nullpublic int getStartPosition(int numberOfFurtherHops)
MessagePart
's (possibly dynamic) start
position (= offset), according to the number of further hops (=number of
mixes this MessagePart
's Message
still must
come to pass).
Note: Every further hop needs it's own header. Therefore, the message size is not constant.
numberOfFurtherHops
- The number of further hops (=number of
mixes this MessagePart
's
Message
still must come to
pass).
MessagePart
's start
position (= offset).public int getEndPosition(int numberOfFurtherHops)
MessagePart
's (possibly dynamic) end position
(= offset), according to the number of further hops (=number of mixes
this MessagePart
's Message
still must come to
pass).
Note: Every further hop needs it's own header. Therefore, the message size is not constant.
numberOfFurtherHops
- The number of further hops (=number of
mixes this MessagePart
's
Message
still must come to
pass).
MessagePart
's end
position (= offset).public int getLength(int numberOfFurtherHops)
MessagePart
(in byte), according to the number of further hops (=number of mixes
this MessagePart
's Message
still must come to
pass). Note: Every further hop needs it's own header. Therefore, the
message size is not constant.
numberOfFurtherHops
- The number of further hops (=number of
mixes this MessagePart
's
Message
still must come to
pass).
MessagePart
in byte.public int getBasicLength()
MessagePart
in byte.
"Basic" means, the length is only valid for the last mix of a cascade.
MessagePart
in byte.public static int getMessageLength(int numberOfFurtherHops)
numberOfFurtherHops
- The number of further hops (=number of
mixes this MessagePart
's
Message
still must come to
pass).
public static int getHeaderLength()
Message
's header as defined above
(see static initializer) in byte. Used as incrementation factor to
calculate a calling mix' message length according to it's position in
the cascade (Note: there's no fixed message length in a cascade).
Message
's header (in byte).
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | ENUM CONSTANTS | FIELD | METHOD | DETAIL: ENUM CONSTANTS | FIELD | METHOD |