This is the index of all XML structs used in the project.
-
- 1. XML Message send from LastMix to Mix n-1 during cascade init
<?xml version="1.0" encoding="utf-8" ?>
<Mixes count="1">
<!-- <Mixes> contains an ordered list of the Mixes of the cascade -->
<!-- count gives the number of <Mix> elements -->
<Mix id="..."> <!-- describes a single Mix -->
<MixProtocolVersion>
0.3|0.5|0.6
<!-- Protocal Version / features of this Mix-->
<!-- 0.3 is the normal "old" protocal; 0.4 was used only for testing; 0.5 simulated 1:n channels;0.6 indicates new flow control-->
</MixProtocolVersion>
<RSAKeyValue> <!-- The public encryption key used by that Mix -->
<Modulus></Modulus>
<Exponent></Exponent>
</RSAKeyValue>
<Nonce>...</Nonce> <!-- A nonce used to detect reply attacks -->
<Signature>...</Signature> <!-- digital signature of the <Mix>-element -->
<KeepAlive>
<!-- Gives information about the "Keep-Alive"-protocol
between Mixes -->
<SendInterval>
<!-- minimum packet send interval (in seconds)
from Mix n to Mix n-1 -->
...
</SendInterval>
<ReceiveInterval>
<!-- minimum packet receive interval (in seconds)
from Mix n-1 to Mix n -->
...
</ReceiveInterval>
</KeepAlive>
<FlowControl>
<!-- Information related to new flow control-->
<UpstreamSendMe>
<!-- Number of packets send in upstram direction which could be sent without wating of a SENDME-message from last mix-->
</UpstreamSendMe>
<DownstreamSendMe>
<!-- Number of packets the last Mix will sent, before he wait for a SENDME-message from JAP-->
</DownstreamSendMe>
</FlowControl>
</Mix>
</Mixes>
- 2. Answer send from Mix n-1 to Mix n during cascade init
<?xml version="1.0" encoding="utf-8" ?>
<EncryptedKey>
<EncryptionMethod Algorithm="RSA" />
<CipherData>
<CipherValue>...</CipherValue>
</CipherData>
<Nonce>...</Nonce>
<KeepAlive>
<!-- Gives information about the "Keep-Alive"-protocol
between Mixes -->
<SendInterval>
<!-- minimum packet send interval (in seconds)
from Mix n-1 to Mix n -->
...
</SendInterval>
<ReceiveInterval>
<!-- minimum packet receive interval (in seconds)
from Mix n to Mix n-1 -->
...
</ReceiveInterval>
</KeepAlive>
<Signature>...</Signature>
</EncryptedKey>
- 3. Mix-Cascade info (and info about the FirstMix) send from the FirstMix to the InfoService.
<?xml version="1.0" ?>
<MixCascade id="...">
<Name>...</Name>
<Network>
<ListenerInterfaces>
<ListenerInterface>
<Type>RAW/TCP</Type>
<Port>..</Port>
<Host>..</Host>
<IP>..</IP>
</ListenerInterface>
</ListenerInterfaces>
</Network>
<Mixes count="..">
<Mix id=".." />
<!--- all the Information about the FirstMix -->
<Mix id="." />
<!-- only the id's of all other mixes of the cascade -->
</Mixes>
<LastUpdate>..</LastUpdate>
<Payment required="true|false">
<!--Gives payment related information to the JAP
if required=="true" payment is required
if required=="false" no paymetn is required
-->
</Payment>
<Signature>..</Signature>
</MixCascade>
- 4. Mix-Cascade status send from the FirstMix to the InfoService.
<?xml version="1.0" encoding="utf-8" ?>
<MixCascadeStatus id=".."
currentRisk=".."
mixedPackets=".."
nrOfActiveUsers=".."
trafficSituation=".."
LastUpdate="..">
<Signature>..</Signature>
</MixCascadeStatus>
- 5. Mix-HELO send from the Middle- or LastMix to the InfoService to announce itself.
<?xml version="1.0" encoding="utf-8" ?>
<Mix id="...">
<Name>..</Name>
<Location>
...
</Location>
<Proxies> <!-- Only for the Last Mix -->
<Proxy>
<VisibleAddresses> <!-- Describes the visible addresses from the 'outside world' -->
<VisibleAddress>
<Host> <!-- Host or IP -->
</Host>
</VisibleAddress>
</VisibleAddresses>
</Proxy>
</Proxies>
<Operator>
<Organisation>..</Organisation>
<URL>..</URL>
</Operator>
<Software>
<Version>..</Version>
</Software>
<LastUpdate>..</LastUpdate>
<DataRetention>
<!--Data retention related information. this element is given, iff the Mix supports data retention-->
<LoggedElements>
<!--Describes which elements are logged-->
<InputTime>TRUE|FALSE</InputTime> <!--If TRUE, the time of packet arrival is logged-->
<OutputTime>TRUE|FALSE</OutputTime> <!--If TRUE, the time of packet sending / connetcion establishment is logged-->
<InputChannelID>TRUE|FALSE</InputChannelID> <!--If TRUE, the cahnnel id of incoming packet is logged-->
<OutputChannelID>TRUE|FALSE</OutputChannelID> <!--If TRUE, the cahnnel id of outgoing packet is logged-->
<InputSourceIPAddress>TRUE|FALSE</InputSourceIPAddress><!--If TRUE, the source IP address of incoming connection is logged-->
<InputSourceIPPort>TRUE|FALSE</InputSourceIPPort> <!--If TRUE, the source IP port of incoming connection is logged-->
<OutputSourceIPAddress>TRUE|FALSE</OutputSourceIPAddress> <!--If TRUE, the source IP address of outgoing connection is logged-->
<OutputSourceIPPort>TRUE|FALSE</OutputSourceIPPort> <!--If TRUE, the source IP port of outgoing connection is logged-->
</LoggedElements>
<RetentionPeriod>
<!-- The periof od time the log are retained;
given as xs:duration (see: http://www.w3.org/TR/xmlschema-2/#duration)
-->
</RetentionPeriod>
<Description lang="LANGID"><!--Contains information about dat retention -->
<URL></URL><!--URL of a Web-Site with information about data retention-->
</Description>
</DataRetention>
<Signature>..</Signature>
</Mix>
- 6. Mix-KeyInfo send from the FirstMix to the JAP.
<?xml version="1.0" ?>
<MixCascade version="0.2">
<MixProtocolVersion>
<!-- "0.4" ==> "normal" mix proctocol
"0.8" ==> with timestamp/replay detection
"0.9" ==> with new payment protocol
-->
...
</MixProtocolVersion>
<Mixes count="..">
<Mix id="..">
<MixProtocolVersion>
<!-- specifies which sub protocol this Mix uses, if ther is a difference to the gerneral cascade protocol-->
...
</MixProtocolVersion>
<RSAKeyValue>
<!--- PubKey of FirstMix -->
...
</RSAKeyValue>
<Replay>
<!-- information for replay detection mechanisms
if supported by protocol -->
<ReplayTimestamp interval=".." offset="..">
<!-- replay timestamp on the mix -->
<!-- interval give the number of the current
interval on the mix; offset gives the
seconds since start of this interval -->
</ReplayTimestamp>
</Replay>
</Mix>
<Mix id="..">
...
</Mix>
...
</Mixes>
<Payment required="true|false">
<!-- Since Version 0.2 -->
<!-- Gives payment related information to the JAP
if required=="true" payment is required
if required=="false" no payment is required
-->
</Payment>
<Signature>
<!--- from FirstMix -->
...
</Signature>
</MixCascade>
- 7. Signature Element
<Signature>
<SignedInfo>
<Reference URI=""> <!--what is signed ?-->
<DigestValue>.....</DigestValue> <!--base64 SHA1 digest -->
</Reference>
</SignedInfo>
<SignatureValue>
<!--base64 of r,s of DSA signature -->
</SignatureValue>
<KeyInfo>
<!-- info abnout the key used -->
<X509Data>
<X509Certificate>
<!-- base64 cert of the public test key for the signature -->
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>