diff --git a/i2p2www/pages/site/docs/spec/i2np.html b/i2p2www/pages/site/docs/spec/i2np.html index 834e7fa31ff6e622d8e18452953d37c63332001f..76d008a19cda642c42e16ba1a3a561cf3f0c0ef8 100644 --- a/i2p2www/pages/site/docs/spec/i2np.html +++ b/i2p2www/pages/site/docs/spec/i2np.html @@ -122,7 +122,7 @@ Short (SSU, 5 bytes): {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} type :: `Integer` length -> 1 byte @@ -155,11 +155,11 @@ chks :: `Integer` purpose -> checksum of the payload SHA256 hash truncated to the first byte -data :: Data +data :: length -> $size bytes purpose -> actual message contents -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -274,11 +274,12 @@ ElGamal and AES encrypted: {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} unencrypted: receive_tunnel :: `TunnelId` length -> 4 bytes + our_ident :: `Hash` length -> 32 bytes @@ -335,7 +336,7 @@ encrypted_data :: ElGamal and AES encrypted data total length: 528 -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -369,18 +370,18 @@ unencrypted: +----+----+----+----+----+----+----+----+ {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} unencrypted: bytes 0-31 : SHA-256 Hash of bytes 32-527 bytes 32-526 : random data byte 527 : reply encrypted: -bytes 0-527: AES-encrypted record(note: same size as BuildRequestRecord) +bytes 0-527: AES-encrypted record (note: same size as `BuildRequestRecord`) total length: 528 -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -411,7 +412,7 @@ unencrypted: +----+----+----+----+----+----+----+ {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} unencrypted: Delivery Instructions :: as defined below Length varies but is typically 1, 33, or 37 bytes @@ -424,7 +425,7 @@ Expiration :: `Date` (8 bytes) Certificate :: Always NULL in the current implementation (3 bytes total, all zeroes) -</pre> +{% endhighlight %} <h4>Notes</h4> <ul> @@ -488,8 +489,8 @@ Do NOT use the following specification for Tunnel Message Delivery Instructions! {% endhighlight %} <h4>Definition</h4> -<pre> -flag: +{% highlight lang='dataspec' %} +flag :: 1 byte Bit order: 76543210 bit 7: encrypted? Unimplemented, always 0 @@ -500,33 +501,33 @@ flag: If 1, four delay bytes are included bits 3-0: reserved, set to 0 for compatibility with future uses -Session Key: +Session Key :: 32 bytes - Optional, present encrypt flag bit is set. Unimplemented, never set, never present. + Optional, present if encrypt flag bit is set. Unimplemented, never set, never present. -To Hash: +To Hash :: 32 bytes Optional, present if delivery type is DESTINATION, ROUTER, or TUNNEL If DESTINATION, the SHA256 Hash of the destination If ROUTER, the SHA256 Hash of the router If TUNNEL, the SHA256 Hash of the gateway router -Tunnel ID: +Tunnel ID :: `TunnelId` 4 bytes Optional, present if delivery type is TUNNEL The destination tunnel ID -Delay: +Delay :: `Integer` 4 bytes Optional, present if delay included flag is set - Not fully implemented. A 4 byte integer specifying the delay in seconds. + Not fully implemented. Specifies the delay in seconds. Total length: Typical length is: 1 byte for LOCAL delivery; 33 bytes for ROUTER / DESTINATION delivery; 37 bytes for TUNNEL delivery -</pre> +{% endhighlight %} @@ -606,9 +607,9 @@ with reply token: + + | | +----+----+----+----+----+----+----+----+ -|type| reply token | reply tunnel- +|type| reply token |reply_tunnelId +----+----+----+----+----+----+----+----+ - Id | SHA256 of the gateway RouterInfo | + | SHA256 of the gateway RouterInfo | +----+ + | | + + @@ -633,12 +634,12 @@ with reply token == 0: +----+----+----+----+----+-// {% endhighlight %} <h4>Definition</h4> -<pre> -key: +{% highlight lang='dataspec' %} +key :: 32 bytes SHA256 hash -type: +type :: 1 byte type identifier bit 0: @@ -648,32 +649,32 @@ type: Through release 0.9.17, must be 0 As of release 0.9.18, ignored, reserved for future options, set to 0 for compatibility -reply token: +reply token :: 4 bytes - If greater than zero, a <a href="#msg_DeliveryStatus">Delivery Status Message</a> + If greater than zero, a Delivery Status Message is requested with the Message ID set to the value of the Reply Token. A floodfill router is also expected to flood the data to the closest floodfill peers if the token is greater than zero. -reply tunnelId: - 4 byte `TunnelID` +reply_tunnelId :: + 4 byte `TunnelId` Only included if reply token > 0 - 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 - If the tunnelId is zero, the reply is sent directy to the reply gateway router. + This is the `TunnelId` of the inbound gateway of the tunnel the response should be sent to + If $reply_tunnelId is zero, the reply is sent directy to the reply gateway router. -reply gateway: +reply gateway :: 32 bytes Hash of the routerInfo entry to reach the gateway Only included if reply token > 0 - If the tunnelId is nonzero, this is the router hash of the inbound gateway + If $reply_tunnelId is nonzero, this is the router hash of the inbound gateway of the tunnel the response should be sent to. - If the tunnelId is zero, this is the router hash the response should be sent to. + If $reply_tunnelId is zero, this is the router hash the response should be sent to. -data: - If type == 0, data is a 2-byte integer specifying the number of bytes that follow, +data :: + If type == 0, data is a 2-byte `Integer` specifying the number of bytes that follow, followed by a gzip-compressed `RouterInfo`. If type == 1, data is an uncompressed `LeaseSet`. -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -744,7 +745,7 @@ The key is the "real" hash of the RouterIdentity or Destination, NOT the routing {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} key :: 32 bytes SHA256 hash of the object to lookup @@ -812,7 +813,7 @@ reply_tags :: one or more 32 byte `SessionTags` (typically one) only included if encryptionFlag == 1, only as of release 0.9.7 -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -850,17 +851,13 @@ The lookup key and exclude keys are the "real" hashes, NOT routing keys. + + | | +----+----+----+----+----+----+----+----+ -|num | peer_hash $1 | +|num | peer_hashes | +----+ + | | + + | | + + | | -+ +----+----+----+----+----+----+----+ -| | | -+----+ $num peer_hashes + - + +----+----+----+----+----+----+----+ | | from | +----+ + @@ -877,7 +874,7 @@ The lookup key and exclude keys are the "real" hashes, NOT routing keys. {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} key :: 32 bytes SHA256 of the object being searched @@ -886,14 +883,14 @@ num :: 1 byte `Integer` number of peer hashes that follow, 0-255 -peer_hash ($num entries) :: - 32 bytes +peer_hashes :: + $num SHA256 hashes of 32 bytes each (total $num*32 bytes) SHA256 of the `RouterIdentity` that the other router thinks is close to the key from :: 32 bytes SHA256 of the `RouterInfo` of the router this reply was sent from -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -927,15 +924,15 @@ The lookup key, peer hashes, and from hash are "real" hashes, NOT routing keys. {% endhighlight %} <h4>Definition</h4> -<pre> -msg_id :: +{% highlight lang='dataspec' %} +msg_id :: `Integer` 4 bytes - unique ID of the message we deliver the DeliveryStatus for (see common I2NP header for details) + unique ID of the message we deliver the DeliveryStatus for (see `I2NPMessageHeader` for details) -time_stamp :: Date +time_stamp :: `Date` 8 bytes time the message was successfully created or delivered -</pre> +{% endhighlight %} <h4>Notes</h4> <ul><li> @@ -990,11 +987,11 @@ unencrypted data: {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} Encrypted: length :: - 4 byte Integer + 4 byte `Integer` number of bytes that follow 0 - 64 KB data :: @@ -1005,7 +1002,7 @@ data :: Unencrypted data: num :: - 1 byte Integer number of `GarlicCloves` to follow + 1 byte `Integer` number of `GarlicClove`s to follow clove :: a `GarlicClove` @@ -1015,7 +1012,7 @@ Message_ID :: 4 byte `Integer` Expiration :: `Date` (8 bytes) -</pre> +{% endhighlight %} <h4>Notes</h4> <ul> @@ -1065,15 +1062,15 @@ Expiration :: `Date` (8 bytes) {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} tunnelId :: - 4 byte `TunnelID` + 4 byte `TunnelId` identifies the tunnel this message is directed at data :: 1024 bytes payload data.. fixed to 1024 bytes -</pre> +{% endhighlight %} <h4>Notes</h4> <ul> @@ -1097,9 +1094,9 @@ data :: {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} tunnelId :: - 4 byte `TunnelID` + 4 byte `TunnelId` identifies the tunnel this message is directed at length :: @@ -1109,7 +1106,7 @@ length :: data :: $length bytes actual payload of this message -</pre> +{% endhighlight %} <h4>Notes</h4> <ul> @@ -1134,7 +1131,7 @@ data :: {% endhighlight %} <h4>Definition</h4> -<pre> +{% highlight lang='dataspec' %} length :: 4 bytes length of the payload @@ -1142,7 +1139,7 @@ length :: data :: $length bytes actual payload of this message -</pre> +{% endhighlight %} <h3 id="msg_TunnelBuild">TunnelBuild</h3> {% highlight lang='dataspec' %} @@ -1162,11 +1159,11 @@ data :: {% endhighlight %} <h4>Definition</h4> -<pre> -Just 8 `BuildRequestRecords` attached together +{% highlight lang='dataspec' %} +Just 8 `BuildRequestRecord`s attached together record size: 528 bytes total size: 8*528 = 4224 bytes -</pre> +{% endhighlight %} <h4>Notes</h4> <ul> @@ -1179,7 +1176,7 @@ total size: 8*528 = 4224 bytes <h3 id="msg_TunnelBuildReply">TunnelBuildReply</h3> {% highlight lang='dataspec' %} -same format as `TunnelBuild` message, with `BuildResponseRecords` +same format as `TunnelBuild` message, with `BuildResponseRecord`s {% endhighlight %} <h4>Notes</h4> @@ -1198,8 +1195,8 @@ same format as `TunnelBuild` message, with `BuildResponseRecords` {% endhighlight %} <h4>Definition</h4> -<pre> -Same format as TunnelBuildMessage, except for the addition of an "num" field in front +{% highlight lang='dataspec' %} +Same format as TunnelBuildMessage, except for the addition of a $num field in front and $num number of Build Request Records instead of 8 num :: @@ -1207,8 +1204,8 @@ num :: Valid values: 1-8 record size: 528 bytes -total size: 1 + $num*528 -</pre> +total size: 1+$num*528 +{% endhighlight %} <h4>Notes</h4> <ul>