forked from I2P_Developers/i2p.www
Moved docs/specs/* to docs/spec/*
This commit is contained in:
@@ -62,16 +62,16 @@
|
||||
</li>
|
||||
<li class="has-sub"><a href="#"><span>{{ _('Specifications') }}</span></a>
|
||||
<ul>
|
||||
<li><a href="{{ site_url('docs/specs/blockfile') }}"><span>{{ _('Blockfile') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/common_structures') }}"><span>{{ _('Common structures') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/configuration') }}"><span>{{ _('Configuration files') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/datagrams') }}"><span>{{ _('Datagrams') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/i2cp') }}"><span>I2CP</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/i2np') }}"><span>I2NP</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/plugin') }}"><span>{{ _('Plugins') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/ssu') }}"><span>SSU</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/tunnel_message') }}"><span>{{ _('Tunnel messages') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/specs/updates') }}"><span>{{ _('Software updates') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/blockfile') }}"><span>{{ _('Blockfile') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/common_structures') }}"><span>{{ _('Common structures') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/configuration') }}"><span>{{ _('Configuration files') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/datagrams') }}"><span>{{ _('Datagrams') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/i2cp') }}"><span>I2CP</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/i2np') }}"><span>I2NP</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/plugin') }}"><span>{{ _('Plugins') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/ssu') }}"><span>SSU</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/tunnel_message') }}"><span>{{ _('Tunnel messages') }}</span></a></li>
|
||||
<li><a href="{{ site_url('docs/spec/updates') }}"><span>{{ _('Software updates') }}</span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="{{ site_url('docs/naming') }}"><span>{{ _('Naming and addressbook') }}</span></a></li>
|
||||
|
@@ -66,7 +66,7 @@ builds).</p>
|
||||
|
||||
|
||||
<h3>Development</h3>
|
||||
<p> See the latest <a href="{{ site_url('docs/specs/plugin') }}">plugin specification</a> and the <a
|
||||
<p> See the latest <a href="{{ site_url('docs/spec/plugin') }}">plugin specification</a> and the <a
|
||||
href="http://{{ i2pconv('zzz.i2p') }}/forums/16">plugin forum</a> on zzz.i2p. </p> <p> See
|
||||
also the sources for plugins developed by various people. Some plugins, such
|
||||
as <a href="http://{{ i2pconv('plugins.i2p') }}/plugins/snowman">snowman</a>, were developed
|
||||
|
@@ -63,7 +63,7 @@ However, each of these layers adds additional functionality, to allow applicatio
|
||||
<br />
|
||||
<a href="{{ site_url('docs/api/streaming') }}">Streaming Library</a>: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P.
|
||||
<br />
|
||||
<a href="{{ site_url('docs/specs/datagrams') }}">Datagram Library</a>: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P.
|
||||
<a href="{{ site_url('docs/spec/datagrams') }}">Datagram Library</a>: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P.
|
||||
</li>
|
||||
<li>
|
||||
<b>I2P Application Interface Layer:</b> additional (optional) libraries allowing easier implementations on top of I2P.
|
||||
|
@@ -166,7 +166,7 @@ The maximum number of entries per span is 16.
|
||||
"%%__INFO__%%" is the master database skiplist with String/Properties key/value entries containing only one entry:
|
||||
</p>
|
||||
<pre>
|
||||
"info": a Properties (UTF-8 String/String Map), serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>:
|
||||
"info": a Properties (UTF-8 String/String Map), serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>:
|
||||
"version": "2"
|
||||
"created": Java long time (ms)
|
||||
"upgraded": Java long time (ms) (as of database version 2)
|
||||
@@ -181,7 +181,7 @@ The maximum number of entries per span is 16.
|
||||
</p>
|
||||
<pre>
|
||||
The skiplist keys are 4-byte Integers, the first 4 bytes of the hash of the Destination.
|
||||
The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>
|
||||
The skiplist values are each a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>
|
||||
There may be multiple entries in the properties, each one is a reverse mapping,
|
||||
as there may be more than one hostname for a given destination,
|
||||
or there could be collisions with the same first 4 bytes of the hash.
|
||||
@@ -197,8 +197,8 @@ The keys/values in these skiplists are as follows:
|
||||
</p>
|
||||
<pre>
|
||||
key: a UTF-8 String (the hostname)
|
||||
value: a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>
|
||||
followed by a binary Destination (serialized <a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">as usual</a>).
|
||||
value: a DestEntry, which is a Properties (a UTF-8 String/String Map) serialized as a <a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>
|
||||
followed by a binary Destination (serialized <a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">as usual</a>).
|
||||
</pre>
|
||||
|
||||
<p>
|
@@ -204,9 +204,9 @@ payload :: data
|
||||
<li>
|
||||
For <a href="#struct_RouterIdentity">Router Identities</a>, the Certificate is always NULL, no others are currently implemented.
|
||||
</li><li>
|
||||
For <a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, the Certificate is always NULL, no others are currently implemented.
|
||||
For <a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>, the Certificate is always NULL, no others are currently implemented.
|
||||
</li><li>
|
||||
For <a href="{{ site_url('docs/specs/i2np') }}#msg_Garlic">Garlic Messages</a>, the Certificate is always NULL, no others are currently implemented.
|
||||
For <a href="{{ site_url('docs/spec/i2np') }}#msg_Garlic">Garlic Messages</a>, the Certificate is always NULL, no others are currently implemented.
|
||||
</li><li>
|
||||
For <a href="#struct_Destination">Destinations</a>, the Certificate may be non-NULL,
|
||||
however non-NULL certs are not widely used, and any checking is left to the application-level.
|
||||
@@ -680,6 +680,6 @@ The signature may be verified using the signing public key of the router_ident.
|
||||
|
||||
|
||||
<h2 id="struct_DeliveryInstructions">Delivery Instructions</h2>
|
||||
Defined in the <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">Tunnel Message Specification</a>.
|
||||
Defined in the <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">Tunnel Message Specification</a>.
|
||||
|
||||
{% endblock %}
|
@@ -40,7 +40,7 @@ Reads and writes are implemented in
|
||||
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html">DataHelper loadProps() and storeProps()</a>.
|
||||
Note that the file format is significantly different than the
|
||||
serialized format for I2P protocols specified in
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a>.
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a>.
|
||||
</p>
|
||||
|
||||
<h2>Core library and router</h2>
|
||||
@@ -57,7 +57,7 @@ Configured via /configlogging in the router console.
|
||||
|
||||
<h3>Individual Plugin (xxx/plugin.config)</h3>
|
||||
<p>
|
||||
See <a href="{{ site_url('docs/specs/plugin') }}">the plugin specification</a>.
|
||||
See <a href="{{ site_url('docs/spec/plugin') }}">the plugin specification</a>.
|
||||
</p>
|
||||
|
||||
<h3>Plugins (plugins.config)</h3>
|
@@ -82,7 +82,7 @@ Each datagram is sent through I2P as a single message (or as an individual clove
|
||||
Message encapsulation is implemented in the underlying
|
||||
<a href="i2cp.html">I2CP</a>,
|
||||
<a href="i2np.html">I2NP</a>, and
|
||||
<a href="{{ site_url('docs/specs/tunnel_message') }}">tunnel message</a> layers.
|
||||
<a href="{{ site_url('docs/spec/tunnel_message') }}">tunnel message</a> layers.
|
||||
There is no packet delimiter mechanism or length field in the datagram protocol.
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ Length: 0 - unlimited (see notes)
|
||||
|
||||
<h4>Notes</h4>
|
||||
The practical length is limited by lower layers of protocols - the
|
||||
<a href="{{ site_url('docs/specs/tunnel_message') }}#notes">tunnel message spec</a>
|
||||
<a href="{{ site_url('docs/spec/tunnel_message') }}#notes">tunnel message spec</a>
|
||||
limits messages to about 61.2 KB and the
|
||||
<a href="{{ site_url('docs/transport') }}">transports</a>
|
||||
currently limit messages to about 32 KB, although this may be raised in the future.
|
||||
@@ -143,11 +143,11 @@ Repliable datagrams contain a 'from' address and a signature. These add 427 byte
|
||||
|
||||
|
||||
|
||||
from :: a <a href="{{ site_url('docs/specs/common_structures') }}#type_Destination">Destination</a>
|
||||
from :: a <a href="{{ site_url('docs/spec/common_structures') }}#type_Destination">Destination</a>
|
||||
length: 387+ bytes
|
||||
The originator and signer of the datagram
|
||||
|
||||
signature :: a <a href="{{ site_url('docs/specs/common_structures') }}#type_Signature">Signature</a>
|
||||
signature :: a <a href="{{ site_url('docs/spec/common_structures') }}#type_Signature">Signature</a>
|
||||
length: 40 bytes
|
||||
The <a href="{{ site_url('docs/how/cryptography') }}#DSA">DSA</a> signature of the SHA256 hash of the payload, which may be verified by the
|
||||
DSA signing public key of the 'from' Destination
|
@@ -158,9 +158,9 @@ as they generally disconnect the session upon reception of an unsupported messag
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the length of the message body
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the length of the message body
|
||||
</li><li>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the message type.
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the message type.
|
||||
</li><li>
|
||||
The I2CP message body, 0 or more bytes
|
||||
</li></ol>
|
||||
@@ -181,7 +181,7 @@ point in time.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -200,7 +200,7 @@ Destination to another.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> length
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> length
|
||||
</li><li>
|
||||
That many bytes
|
||||
</li></ol>
|
||||
@@ -221,14 +221,14 @@ Defines the configuration options for a particular client session.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_Mapping">Mapping</a> of options
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_Mapping">Mapping</a> of options
|
||||
</li><li>
|
||||
Creation <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>
|
||||
Creation <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
|
||||
</li><li>
|
||||
DSA <a href="{{ site_url('docs/specs/common_structures') }}#type_Signature">Signature</a> of the previous 3 fields, signed by the
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
|
||||
DSA <a href="{{ site_url('docs/spec/common_structures') }}#type_Signature">Signature</a> of the previous 3 fields, signed by the
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -249,7 +249,7 @@ time.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
2 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
2 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -396,28 +396,28 @@ Sent from Router to Client in response to a Get Bandwidth Limits Message.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Client inbound limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Client outbound limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Router inbound limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Router inbound burst limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Router outbound limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Router outbound burst limit (KBps)
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a>
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a>
|
||||
Router burst time (seconds)
|
||||
</li><li>
|
||||
Nine 4-byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integers</a>
|
||||
Nine 4-byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integers</a>
|
||||
undefined
|
||||
</li></ol>
|
||||
|
||||
@@ -441,11 +441,11 @@ Sent from Client to Router.
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPrivateKey">Signing Private Key</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_PrivateKey">Private Key</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_PrivateKey">Private Key</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_LeaseSet">LeaseSet</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_LeaseSet">LeaseSet</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -497,7 +497,7 @@ The router responds with a <a href="#msg_DestReply">Dest Reply Message</a>.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Hash">SHA-256 Hash</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Hash">SHA-256 Hash</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -516,9 +516,9 @@ Sent from Router to Client in response to a Dest Lookup Message.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
|
||||
on success, or
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Hash">Hash</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Hash">Hash</a>
|
||||
on failure
|
||||
</li></ol>
|
||||
|
||||
@@ -561,7 +561,7 @@ Sent either from router to client or from client to router.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
Reason <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a>
|
||||
Reason <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -599,7 +599,7 @@ The router responds with a <a href="#msg_SetDate">Set Date Message</a>.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
I2CP Version <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a>
|
||||
I2CP Version <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -651,11 +651,11 @@ For an outgoing message, this is a response to a
|
||||
</li><li>
|
||||
<a href="#struct_MessageId">Message ID</a>
|
||||
</li><li>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> status
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> status
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> size
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> size
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -760,10 +760,10 @@ Sent either from router to client or from client to router.
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> abuse severity
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> abuse severity
|
||||
(0 is minimally abusive, 255 being extremely abusive)
|
||||
</li><li>
|
||||
Reason <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a>
|
||||
Reason <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
|
||||
</li><li>
|
||||
<a href="#struct_MessageId">Message ID</a>
|
||||
</li></ol>
|
||||
@@ -789,16 +789,16 @@ The client responds with a <a href="#msg_SessionStatus">Create LeaseSet Message<
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> number of tunnels
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> number of tunnels
|
||||
</li><li>
|
||||
That many pairs of:
|
||||
<ol><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">Router Identity</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">Router Identity</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">Tunnel ID</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">Tunnel ID</a>
|
||||
</li></ol>
|
||||
</li><li>
|
||||
End <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>
|
||||
End <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -821,11 +821,11 @@ The router responds with a <a href="#msg_MessageStatus">Message Status Message</
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
|
||||
</li><li>
|
||||
<a href="#struct_Payload">Payload</a>
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -858,15 +858,15 @@ Sent from Client to Router. Same as Send Message Message, except includes an exp
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#struct_Destination">Destination</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#struct_Destination">Destination</a>
|
||||
</li><li>
|
||||
<a href="#struct_Payload">Payload</a>
|
||||
</li><li>
|
||||
4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> nonce
|
||||
</li><li>
|
||||
2 bytes of flags (options)
|
||||
</li><li>
|
||||
Expiration <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>
|
||||
Expiration <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
|
||||
truncated from 8 bytes to 6 bytes
|
||||
</li></ol>
|
||||
|
||||
@@ -961,7 +961,7 @@ Sent from Router to Client.
|
||||
<ol><li>
|
||||
<a href="#struct_SessionId">Session ID</a>
|
||||
</li><li>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> status
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> status
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
||||
@@ -981,9 +981,9 @@ Sent from Router to Client as a part of the initial handshake.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<ol><li>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>
|
||||
</li><li>
|
||||
I2CP Version <a href="{{ site_url('docs/specs/common_structures') }}#struct_String">String</a>
|
||||
I2CP Version <a href="{{ site_url('docs/spec/common_structures') }}#struct_String">String</a>
|
||||
</li></ol>
|
||||
|
||||
<h4>Notes</h4>
|
@@ -24,11 +24,11 @@ They are not complete messages.
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<p>
|
||||
1 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the type of this message,
|
||||
followed by a 4 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying the message-id.
|
||||
After that there is an expiration <a href="{{ site_url('docs/specs/common_structures') }}#type_Date">Date</a>,
|
||||
followed by a 2 byte <a href="{{ site_url('docs/specs/common_structures') }}#type_Integer">Integer</a> specifying
|
||||
the length of the message payload, followed by a <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a>,
|
||||
1 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the type of this message,
|
||||
followed by a 4 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying the message-id.
|
||||
After that there is an expiration <a href="{{ site_url('docs/spec/common_structures') }}#type_Date">Date</a>,
|
||||
followed by a 2 byte <a href="{{ site_url('docs/spec/common_structures') }}#type_Integer">Integer</a> specifying
|
||||
the length of the message payload, followed by a <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a>,
|
||||
which is truncated to the first byte. After that the actual message data follows.
|
||||
</p>
|
||||
<pre>
|
||||
@@ -116,7 +116,7 @@ where the far-end router's version is known and checksum generation can be disab
|
||||
</p>
|
||||
<h4>Contents</h4>
|
||||
<p>
|
||||
<a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">TunnelId</a> to receive messages on, followed by the <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a> of our <a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">RouterIdentity</a>. After that the <a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelId">TunnelId</a> and the <a href="{{ site_url('docs/specs/common_structures') }}#type_Hash">Hash</a> of the next router's <a href="{{ site_url('docs/specs/common_structures') }}#struct_RouterIdentity">RouterIdentity</a> follow.
|
||||
<a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">TunnelId</a> to receive messages on, followed by the <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a> of our <a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">RouterIdentity</a>. After that the <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelId">TunnelId</a> and the <a href="{{ site_url('docs/spec/common_structures') }}#type_Hash">Hash</a> of the next router's <a href="{{ site_url('docs/spec/common_structures') }}#struct_RouterIdentity">RouterIdentity</a> follow.
|
||||
</p>
|
||||
<h4>Definition</h4>
|
||||
<pre>
|
||||
@@ -341,7 +341,7 @@ unencrypted:
|
||||
<h4>Definition</h4>
|
||||
<pre>
|
||||
unencrypted:
|
||||
Delivery Instructions :: <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">as defined here</a>
|
||||
Delivery Instructions :: <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">as defined here</a>
|
||||
Length varies but is typically 39, 43, or 47 bytes
|
||||
|
||||
I2NP Message :: Any I2NP Message
|
||||
@@ -365,7 +365,7 @@ Certificate :: Always NULL in the current implementation (3 bytes total, all zer
|
||||
<li>
|
||||
See also the <a href="{{ site_url('docs/how/garlicrouting') }}">garlic routing specification</a>.
|
||||
<li>
|
||||
See also <a href="{{ site_url('docs/specs/tunnel_message') }}#delivery">Delivery Instructions definition</a>
|
||||
See also <a href="{{ site_url('docs/spec/tunnel_message') }}#delivery">Delivery Instructions definition</a>
|
||||
<li>
|
||||
Maximum length is a function of the total length of all the cloves and the
|
||||
maximum length of the GarlicMessage.
|
||||
@@ -509,7 +509,7 @@ reply token:
|
||||
reply tunnelId:
|
||||
4 byte Tunnel ID
|
||||
only included if reply token > 0
|
||||
This is the <a href="{{ site_url('docs/specs/common_structures') }}#type_TunnelID">tunnel ID</a> of the inbound gateway of the tunnel the response should be sent to
|
||||
This is the <a href="{{ site_url('docs/spec/common_structures') }}#type_TunnelID">tunnel ID</a> of the inbound gateway of the tunnel the response should be sent to
|
||||
|
||||
reply gateway:
|
||||
32 bytes
|
||||
@@ -852,7 +852,7 @@ data:
|
||||
<h4>Notes</h4>
|
||||
<ul>
|
||||
<li>
|
||||
See also the <a href="{{ site_url('docs/specs/tunnel_message') }}">Tunnel Message Specification</a>
|
||||
See also the <a href="{{ site_url('docs/spec/tunnel_message') }}">Tunnel Message Specification</a>
|
||||
</ul>
|
||||
|
||||
|
@@ -166,11 +166,11 @@ set, this is a follow on fragment.</p>
|
||||
|
||||
<p>
|
||||
Note that Delivery Instructions are also used inside
|
||||
<a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Cloves</a>,
|
||||
<a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Cloves</a>,
|
||||
where the format is slightly different. In a Garlic Clove,
|
||||
messages are not fragmented, and the fragment bit in the flag byte is
|
||||
redefined. See the
|
||||
<a href="{{ site_url('docs/specs/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a>
|
||||
<a href="{{ site_url('docs/spec/i2np') }}#struct_GarlicClove">Garlic Clove documentation</a>
|
||||
for more details.
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ Message ID:
|
||||
4 bytes
|
||||
Optional, present if this message is the first of 2 or more fragments
|
||||
An ID that uniquely identifies all fragments as belonging to a single message
|
||||
(the current implementation uses the <a href="{{ site_url('docs/specs/i2np') }}#struct_header">I2NP Message ID</a>)
|
||||
(the current implementation uses the <a href="{{ site_url('docs/spec/i2np') }}#struct_header">I2NP Message ID</a>)
|
||||
|
||||
Extended Options:
|
||||
2 or more bytes
|
@@ -44,13 +44,13 @@ is simply a zip file with a prepended 56 byte header.
|
||||
The header contains:
|
||||
<ul>
|
||||
<li>
|
||||
A 40-byte <a href="{{ site_url('docs/specs/common_structures') }}#type_signature">DSA signature</a>
|
||||
A 40-byte <a href="{{ site_url('docs/spec/common_structures') }}#type_signature">DSA signature</a>
|
||||
</li><li>
|
||||
A 16-byte I2P version in UTF-8, padded with trailing zeroes if necessary
|
||||
</li></ul>
|
||||
</p><p>
|
||||
The signature covers only the zip archive - not the prepended version.
|
||||
The signature must match one of the <a href="{{ site_url('docs/specs/common_structures') }}#type_SigningPublicKey">DSA public keys</a> configured into the router,
|
||||
The signature must match one of the <a href="{{ site_url('docs/spec/common_structures') }}#type_SigningPublicKey">DSA public keys</a> configured into the router,
|
||||
which has a hardcoded default list of keys of the current project release managers.
|
||||
</p><p>
|
||||
For version comparison purposes, version fields contain [0-9]*, field separators are
|
@@ -444,7 +444,7 @@ should accurately reflect the current implementation, however there may be small
|
||||
<img src="{{ url_for('static', filename='images/udp.png') }}">
|
||||
|
||||
<h1><a name="spec">Specification</a></h1>
|
||||
<a href="{{ site_url('docs/specs/ssu') }}">Now on the SSU specification page</a>.
|
||||
<a href="{{ site_url('docs/spec/ssu') }}">Now on the SSU specification page</a>.
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
Reference in New Issue
Block a user