Streaming spec update for variable signatures

Add link to streaming spec on doc index
This commit is contained in:
zzz
2014-01-28 14:51:51 +00:00
parent 8778046fce
commit 7fd00fe330
3 changed files with 38 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Index to Technical Documentation{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}May 2013{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.6{% endblock %}
{% block lastupdated %}{% trans %}January 2014{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.10{% endblock %}
{% block content %}
<p>{% trans -%}
Following is an index to the technical documentation for I2P.
@@ -81,6 +81,8 @@ HTTP Bidir Proxy
<ul><li>
<a href="{{ site_url('docs/api/streaming') }}">{{ _('Streaming Library') }}</a>
</li><li>
<a href="{{ site_url('docs/spec/streaming') }}">{{ _('Streaming Protocol Specification') }}</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html">{{ _('Streaming Javadoc') }}</a>
</li><li>
<a href="{{ site_url('docs/spec/datagrams') }}">{{ _('Datagrams') }}</a>

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Common structures Specification{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}January 2014{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.9{% endblock %}
{% block accuratefor %}0.9.10{% endblock %}
{% block content %}
<p>{% trans i2np=site_url('docs/protocol/i2np'),
i2cp=site_url('docs/protocol/i2cp'),
@@ -505,6 +505,8 @@ total length: 387+ bytes
<ul><li>{% trans -%}
The certificate for a RouterIdentity is currently unused and is always NULL.
{%- endtrans %}</li><li>
Do not assume that RouterIdentities are always 387 bytes!
They are 387 bytes plus the certificate length specified at bytes 385-386, which may be non-zero in a future release.
</li><li>
As of release 0.9.11, if the certificate is a Key Certificate, the boundaries of the
key fields may vary. See the Key Certificate section above for details.
@@ -561,6 +563,9 @@ which was disabled in version 0.6, it is currently unused
except for the IV for LeaseSet encryption,
which is deprecated. The public key in the LeaseSet is used instead.
</li><li>
Do not assume that Destinations are always 387 bytes!
They are 387 bytes plus the certificate length specified at bytes 385-386, which may be non-zero.
</li><li>
As of release 0.9.11, if the certificate is a Key Certificate, the boundaries of the
key fields may vary. See the Key Certificate section above for details.
</li></ul>

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}Streaming Library Specification{% endtrans %}{% endblock %}
{% block lastupdated %}{% trans %}December 2013{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.9{% endblock %}
{% block lastupdated %}{% trans %}January 2014{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.10{% endblock %}
{% block content %}
<p><a href="{{ site_url('docs/api/streaming') }}">{% trans -%}
See the Streaming page for an overview of the Streaming Library.
@@ -103,13 +103,16 @@ SIGNATURE_INCLUDED must be set also.
<tr><td>2<td>RESET<td align="center">--<td align="center">--<td>
Abnormal close.
SIGNATURE_INCLUDED must be set also.
<tr><td>3<td>SIGNATURE_INCLUDED<td align="center">4<td>40 byte <a href="{{ site_url('docs/spec/common-structures') }}#type_Signature">DSA Signature</a>
<tr><td>3<td>SIGNATURE_INCLUDED<td align="center">4<td>variable length <a href="{{ site_url('docs/spec/common-structures') }}#type_Signature">Signature</a>
<td>
Currently sent only with SYNCHRONIZE, CLOSE, and RESET, where it is required,
and with ECHO, where it is required for a ping.
The signature uses the Destination's <a href="{{ site_url('docs/spec/common-structures') }}#type_SigningPublicKey">DSA signing keys</a>
to sign the entire header and payload with the 40-byte space in the option data field
The signature uses the Destination's <a href="{{ site_url('docs/spec/common-structures') }}#type_SigningPublicKey">signing keys</a>
to sign the entire header and payload with the space in the option data field
for the signature being set to all zeroes.
<br>
Prior to release 0.9.11, the signature was always 40 bytes.
As of release 0.9.11, the signature may be variable-length, see below for details.
<tr><td>4<td>SIGNATURE_REQUESTED<td align="center">--<td align="center">--<td>
Unused. Requests every packet in the other direction to have SIGNATURE_INCLUDED
<tr><td>5<td>FROM_INCLUDED<td align="center">2<td>387+ byte <a href="{{ site_url('docs/spec/common-structures') }}#struct_Destination">Destination</a>
@@ -138,4 +141,24 @@ and is always present.
<tr><td>11-15<td>unused<td><td><td>
</table>
<h4>Variable Length Signature Notes</h4>
<p>
Prior to release 0.9.11, the signature in the option field was always 40 bytes.
As of release 0.9.11, the signature is variable length.
The Signature type and length are inferred from the type of key used in the FROM_INCLUDED option
and the <a href="{{ site_url('docs/spec/common-structures') }}#type_Signature">Signature documentation</a>.
<ul><li>
When a packet contains both FROM_INCLUDED and SIGNATURE_INCLUDED (as in SYNCHRONIZE), the inference may be made directly.
</li><li>
When a packet does not contain FROM_INCLUDED, the inference must be made from a previous SYNCHRONIZE packet.
</li><li>
When a packet does not contain FROM_INCLUDED, and there was no previous SYNCHRONIZE packet
(for example a stray CLOSE or RESET packet), the inference can be made from the length of the remaining options
(since SIGNATURE_INCLUDED is the last option), but the packet will probably be discarded anyway, since there is no FROM available
to validate the signature.
If more option fields are defined in the future, they must be accounted for.
</li></ul>
</p>
{% endblock %}