I2CP updates for proposal 123

This commit is contained in:
zzz
2019-01-25 14:06:08 +00:00
parent 6f6fbceff5
commit fc93b3e720
3 changed files with 221 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
{% extends "global/layout.html" %}
{% block title %}I2CP{% endblock %}
{% block lastupdated %}{% trans %}February 2016{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.24{% endblock %}
{% block lastupdated %}{% trans %}January 2019{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.38{% endblock %}
{% block content %}
<p>{% trans -%}
The I2P Client Protocol (I2CP) exposes a strong separation of concerns between
@@ -174,6 +174,75 @@ of sending a MessageStatus and awaiting a ReceiveMessageBegin.
{%- endtrans %}</td>
</tr>
<tr>
<td>i2cp.leaseSetEncType
<td>0.9.38</td>
<td>0
<td>0-65535,...
<td>0
<td>
The encryption type to be used.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
May be comma-separated values for multiple types.
See PublicKey in common strutures spec for values.
See proposals 123, 144, and 145.
</td>
</tr>
<tr>
<td>i2cp.leaseSetOfflineExpiration
<td>0.9.38</td>
<td>&nbsp;
<td>&nbsp;
<td>&nbsp;
<td>
The expiration of the offline signature, 4 bytes,
seconds since the epoch.
See proposal 123.
</td>
</tr>
<tr>
<td>i2cp.leaseSetOfflineSignature
<td>0.9.38</td>
<td>&nbsp;
<td>&nbsp;
<td>&nbsp;
<td>
The base 64 of the offline signature.
See proposal 123.
</td>
</tr>
<tr>
<td>i2cp.leaseSetTransientPublicKey
<td>0.9.38</td>
<td>&nbsp;
<td>&nbsp;
<td>&nbsp;
<td>
[type:]b64 The base 64 of the transient private key,
prefixed by an optional sig type number or name,
default DSA_SHA1.
See proposal 123.
</td>
</tr>
<tr>
<td>i2cp.leaseSetType
<td>0.9.38</td>
<td>1,3,5,7
<td>1-255
<td>1
<td>
The type of leaseset to be sent in the CreateLeaseSet2 Message.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
See proposal 123.
</td>
</tr>
<tr>
<td>i2cp.messageReliability
<td>&nbsp;</td>
@@ -462,6 +531,12 @@ Since options are encoded in a <a href="{{ commonstructures }}#type_Mapping">Map
all option names and values are limited to 255 bytes (not characters) maximum.
{%- endtrans %}</p>
<h3>{% trans %}Client-side Options{% endtrans %}</h3>
<p>{% trans -%}
The following options are interpreted on the client side,
@@ -531,6 +606,22 @@ of sending a MessageStatus and awaiting a ReceiveMessageBegin.
<td>{% trans %}Gzip outbound data{% endtrans %}</td>
</tr>
<tr>
<td>i2cp.leaseSetEncType
<td>0.9.38</td>
<td>0
<td>0-65535,...
<td>0
<td>
The encryption type to be used.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
May be comma-separated values for multiple types.
See PublicKey in common strutures spec for values.
See proposals 123, 144, and 145.
</td>
</tr>
<tr>
<td>i2cp.leaseSetKey
<td>0.7.1
@@ -571,6 +662,20 @@ Use for persistent leaseset keys across restarts.
{%- endtrans %}</td>
</tr>
<tr>
<td>i2cp.leaseSetType
<td>0.9.38</td>
<td>1,3,5,7
<td>1-255
<td>1
<td>
The type of leaseset to be sent in the CreateLeaseSet2 Message.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
See proposal 123.
</td>
</tr>
<tr>
<td>i2cp.messageReliability
<td>&nbsp;

View File

@@ -3,8 +3,8 @@ I2CP Specification
==================
.. meta::
:category: Protocols
:lastupdated: June 2016
:accuratefor: 0.9.26
:lastupdated: January 2019
:accuratefor: 0.9.38
.. contents::
@@ -235,6 +235,8 @@ below.
============== ======================
Version Required I2CP Features
============== ======================
0.9.38 CreateLeaseSet2 message supported
0.9.21 Multiple sessions on a single I2CP connection supported
0.9.20 Additional SetDate messages may be sent to the client at any
@@ -418,6 +420,7 @@ Message Types
=============================== ========= ==== =====
BandwidthLimitsMessage_ R -> C 23 0.7.2
CreateLeaseSetMessage_ C -> R 4
CreateLeaseSet2Message_ C -> R 40 0.9.38
CreateSessionMessage_ C -> R 1
DestLookupMessage_ C -> R 34 0.7
DestReplyMessage_ R -> C 35 0.7
@@ -498,17 +501,65 @@ If the signing key type is not DSA, this field contains 20 bytes of random data.
The length of this field is always 20 bytes,
it does not ever equal the length of a non-DSA signing private key.
The PrivateKey matches the [PublicKey]_ from the LeaseSet. The signing key is necessary to
allow the router to revoke the LeaseSet if the client goes offline, and the
encryption key is necessary for decrypting garlic routed messages. The LeaseSet
granted may include Lease structures for tunnels pointing at another router if
the client is actively connected to multiple routers with Leases granted to
each.
The PrivateKey matches the [PublicKey]_ from the LeaseSet.
The PrivateKey is necessary for decrypting garlic routed messages.
Revocation is unimplemented.
Connection to multiple routers is unimplemented in any client library.
.. _msg-CreateLeaseSet2:
CreateLeaseSet2Message
----------------------
Description
```````````
This message is sent in response to a RequestLeaseSetMessage_ or
RequestVariableLeaseSetMessage_ and contains all of the [Lease]_ structures that
should be published to the I2NP Network Database.
Sent from Client to Router.
Since release 0.9.38. See proposal 123 for more information.
Contents
````````
1. `Session ID`_
2. Type: One byte type of lease set to follow
Type 1 is a [LeaseSet]_
Type 3 is a [LeaseSet2]_
Type 5 is a [EncryptedLeaseSet]_
Type 7 is a [MetaLeaseSet]_
3. [LeaseSet]_ or [LeaseSet2]_ or [EncryptedLeaseSet]_ or [MetaLeaseSet]_
4. [SigningPrivateKey]_: type and length as inferred from the lease set signature
(by dest signing key or transient key)
Not present for MetaLeaseSet
5. [PrivateKey]_ list: One for each public key in the lease set, in the same order
Types and lengths as inferred from the public keys in the lease set
Not present for MetaLeaseSet
Notes
`````
The SigningPrivateKey matches the [SigningPublicKey]_ from within the LeaseSet.
This is for LeaseSet revocation,
which is unimplemented and is unlikely to ever be implemented.
It may be acceptable to put random data or zeros here, but the length must be correct.
This field may be repurposed for EncryptedLeaseSet.
The PrivateKeys match each of the [PublicKey]_ from the LeaseSet.
The PrivateKeys are necessary for decrypting garlic routed messages.
The contents and format for EncryptedLeaseSet are preliminary and subject to change.
See proposal 123 for more information.
The contents and format for MetaLeaseSet are preliminary and subject to change.
There is no protocol specified for administration of multiple routers.
See proposal 123 for more information.
Revocation is unimplemented.
.. _msg-CreateSession:
CreateSessionMessage
@@ -1339,6 +1390,9 @@ References
.. [Destination]
{{ ctags_url('Destination') }}
.. [EncryptedLeaseSet]
{{ ctags_url('EncryptedLeaseSet') }}
.. [Hash]
{{ ctags_url('Hash') }}
@@ -1364,9 +1418,15 @@ References
.. [LeaseSet]
{{ ctags_url('LeaseSet') }}
.. [LeaseSet2]
{{ ctags_url('LeaseSet2') }}
.. [Mapping]
{{ ctags_url('Mapping') }}
.. [MetaLeaseSet]
{{ ctags_url('MetaLeaseSet') }}
.. [MSM-JAVADOCS]
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2cp/MessageStatusMessage.html

View File

@@ -5,13 +5,24 @@ New netDB Entries
:author: zzz, str4d, orignal
:created: 2016-01-16
:thread: http://zzz.i2p/topics/2051
:lastupdated: 2019-01-14
:lastupdated: 2019-01-25
:status: Open
:supercedes: 110, 120, 121, 122
.. contents::
Status
======
Portions of this proposal are complete, and implemented in 0.9.38.
The Common Structures, I2CP, I2NP, and other specifications
are now updated to reflect the changes that are supported now.
The completed portions are still subject to minor revision.
Other portions of this proposal are still in development
and subject to substantial revision.
Overview
========
@@ -1443,6 +1454,11 @@ New options interpreted router-side, sent in SessionConfig Mapping:
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
i2cp.leaseSetEncType=nnn[,nnn] The encryption types to be used.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
See proposals 144 and 145.
i2cp.leaseSetOfflineExpiration=nnn The expiration of the offline signature, 4 bytes,
seconds since the epoch.
@@ -1455,6 +1471,7 @@ New options interpreted router-side, sent in SessionConfig Mapping:
Length as inferred from the destination signing public key type
New options interpreted client-side:
::
@@ -1464,9 +1481,10 @@ New options interpreted client-side:
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
i2cp.leaseSetEncType=nnn The encryption type to be used.
See proposal 144.
i2cp.leaseSetEncType=nnn[,nnn] The encryption types to be used.
Interpreted client-side, but also passed to the router in the
SessionConfig, to declare intent and check support.
See proposals 144 and 145.
Session Config
@@ -1593,6 +1611,11 @@ Changes
Add request type 3: Host name lookup and request Lease Set lookup.
Notes
`````
- Minimum router and client version is 0.9.39 for request type 3.
Host Reply Message
@@ -1623,7 +1646,7 @@ Changes
::
If the client version is 0.9.38 or higher, and the result code is 0,
If the client version is 0.9.39 or higher, and the result code is 0,
the following extended results are included after the Destination.
These are included no matter what the request type.
@@ -1654,6 +1677,11 @@ Changes
- Cost (priority) (1 byte)
- Expires (4 bytes) (4 bytes, seconds since epoch, rolls over in 2106)
Notes
`````
- Minimum router and client version is 0.9.39 for the extended results.
Changes to support Meta
@@ -1697,6 +1725,19 @@ Changes
- Transient Signing Private key (length as specified by transient sig type)
Private Key File CLI Changes Required
-------------------------------------
Add support for the following options:
::
-d days (specify expiration in days of offline sig, default 365)
-o offlinedestfile (generate the online key file using the offline key file specified)
-r sigtype (specify sig type of transient key, default Ed25519)
Streaming Changes Required
==========================