forked from I2P_Developers/i2p.www
I2CP updates for proposal 123
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{% extends "global/layout.html" %}
|
{% extends "global/layout.html" %}
|
||||||
{% block title %}I2CP{% endblock %}
|
{% block title %}I2CP{% endblock %}
|
||||||
{% block lastupdated %}{% trans %}February 2016{% endtrans %}{% endblock %}
|
{% block lastupdated %}{% trans %}January 2019{% endtrans %}{% endblock %}
|
||||||
{% block accuratefor %}0.9.24{% endblock %}
|
{% block accuratefor %}0.9.38{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<p>{% trans -%}
|
<p>{% trans -%}
|
||||||
The I2P Client Protocol (I2CP) exposes a strong separation of concerns between
|
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>
|
{%- endtrans %}</td>
|
||||||
</tr>
|
</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>
|
||||||
|
<td>
|
||||||
|
<td>
|
||||||
|
<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>
|
||||||
|
<td>
|
||||||
|
<td>
|
||||||
|
<td>
|
||||||
|
The base 64 of the offline signature.
|
||||||
|
See proposal 123.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>i2cp.leaseSetTransientPublicKey
|
||||||
|
<td>0.9.38</td>
|
||||||
|
<td>
|
||||||
|
<td>
|
||||||
|
<td>
|
||||||
|
<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>
|
<tr>
|
||||||
<td>i2cp.messageReliability
|
<td>i2cp.messageReliability
|
||||||
<td> </td>
|
<td> </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.
|
all option names and values are limited to 255 bytes (not characters) maximum.
|
||||||
{%- endtrans %}</p>
|
{%- endtrans %}</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h3>{% trans %}Client-side Options{% endtrans %}</h3>
|
<h3>{% trans %}Client-side Options{% endtrans %}</h3>
|
||||||
<p>{% trans -%}
|
<p>{% trans -%}
|
||||||
The following options are interpreted on the client side,
|
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>
|
<td>{% trans %}Gzip outbound data{% endtrans %}</td>
|
||||||
</tr>
|
</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>
|
<tr>
|
||||||
<td>i2cp.leaseSetKey
|
<td>i2cp.leaseSetKey
|
||||||
<td>0.7.1
|
<td>0.7.1
|
||||||
@@ -571,6 +662,20 @@ Use for persistent leaseset keys across restarts.
|
|||||||
{%- endtrans %}</td>
|
{%- endtrans %}</td>
|
||||||
</tr>
|
</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>
|
<tr>
|
||||||
<td>i2cp.messageReliability
|
<td>i2cp.messageReliability
|
||||||
<td>
|
<td>
|
||||||
|
@@ -3,8 +3,8 @@ I2CP Specification
|
|||||||
==================
|
==================
|
||||||
.. meta::
|
.. meta::
|
||||||
:category: Protocols
|
:category: Protocols
|
||||||
:lastupdated: June 2016
|
:lastupdated: January 2019
|
||||||
:accuratefor: 0.9.26
|
:accuratefor: 0.9.38
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
|
|
||||||
@@ -235,6 +235,8 @@ below.
|
|||||||
============== ======================
|
============== ======================
|
||||||
Version Required I2CP Features
|
Version Required I2CP Features
|
||||||
============== ======================
|
============== ======================
|
||||||
|
0.9.38 CreateLeaseSet2 message supported
|
||||||
|
|
||||||
0.9.21 Multiple sessions on a single I2CP connection 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
|
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
|
BandwidthLimitsMessage_ R -> C 23 0.7.2
|
||||||
CreateLeaseSetMessage_ C -> R 4
|
CreateLeaseSetMessage_ C -> R 4
|
||||||
|
CreateLeaseSet2Message_ C -> R 40 0.9.38
|
||||||
CreateSessionMessage_ C -> R 1
|
CreateSessionMessage_ C -> R 1
|
||||||
DestLookupMessage_ C -> R 34 0.7
|
DestLookupMessage_ C -> R 34 0.7
|
||||||
DestReplyMessage_ R -> C 35 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,
|
The length of this field is always 20 bytes,
|
||||||
it does not ever equal the length of a non-DSA signing private key.
|
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
|
The PrivateKey matches the [PublicKey]_ from the LeaseSet.
|
||||||
allow the router to revoke the LeaseSet if the client goes offline, and the
|
The PrivateKey is necessary for decrypting garlic routed messages.
|
||||||
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.
|
|
||||||
|
|
||||||
Revocation is unimplemented.
|
Revocation is unimplemented.
|
||||||
Connection to multiple routers is unimplemented in any client library.
|
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:
|
.. _msg-CreateSession:
|
||||||
|
|
||||||
CreateSessionMessage
|
CreateSessionMessage
|
||||||
@@ -1339,6 +1390,9 @@ References
|
|||||||
.. [Destination]
|
.. [Destination]
|
||||||
{{ ctags_url('Destination') }}
|
{{ ctags_url('Destination') }}
|
||||||
|
|
||||||
|
.. [EncryptedLeaseSet]
|
||||||
|
{{ ctags_url('EncryptedLeaseSet') }}
|
||||||
|
|
||||||
.. [Hash]
|
.. [Hash]
|
||||||
{{ ctags_url('Hash') }}
|
{{ ctags_url('Hash') }}
|
||||||
|
|
||||||
@@ -1364,9 +1418,15 @@ References
|
|||||||
.. [LeaseSet]
|
.. [LeaseSet]
|
||||||
{{ ctags_url('LeaseSet') }}
|
{{ ctags_url('LeaseSet') }}
|
||||||
|
|
||||||
|
.. [LeaseSet2]
|
||||||
|
{{ ctags_url('LeaseSet2') }}
|
||||||
|
|
||||||
.. [Mapping]
|
.. [Mapping]
|
||||||
{{ ctags_url('Mapping') }}
|
{{ ctags_url('Mapping') }}
|
||||||
|
|
||||||
|
.. [MetaLeaseSet]
|
||||||
|
{{ ctags_url('MetaLeaseSet') }}
|
||||||
|
|
||||||
.. [MSM-JAVADOCS]
|
.. [MSM-JAVADOCS]
|
||||||
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2cp/MessageStatusMessage.html
|
http://{{ i2pconv('echelon.i2p/javadoc') }}/net/i2p/data/i2cp/MessageStatusMessage.html
|
||||||
|
|
||||||
|
@@ -5,13 +5,24 @@ New netDB Entries
|
|||||||
:author: zzz, str4d, orignal
|
:author: zzz, str4d, orignal
|
||||||
:created: 2016-01-16
|
:created: 2016-01-16
|
||||||
:thread: http://zzz.i2p/topics/2051
|
:thread: http://zzz.i2p/topics/2051
|
||||||
:lastupdated: 2019-01-14
|
:lastupdated: 2019-01-25
|
||||||
:status: Open
|
:status: Open
|
||||||
:supercedes: 110, 120, 121, 122
|
:supercedes: 110, 120, 121, 122
|
||||||
|
|
||||||
.. contents::
|
.. 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
|
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
|
Interpreted client-side, but also passed to the router in the
|
||||||
SessionConfig, to declare intent and check support.
|
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,
|
i2cp.leaseSetOfflineExpiration=nnn The expiration of the offline signature, 4 bytes,
|
||||||
seconds since the epoch.
|
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
|
Length as inferred from the destination signing public key type
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
New options interpreted client-side:
|
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
|
Interpreted client-side, but also passed to the router in the
|
||||||
SessionConfig, to declare intent and check support.
|
SessionConfig, to declare intent and check support.
|
||||||
|
|
||||||
i2cp.leaseSetEncType=nnn The encryption type to be used.
|
i2cp.leaseSetEncType=nnn[,nnn] The encryption types to be used.
|
||||||
See proposal 144.
|
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
|
Session Config
|
||||||
@@ -1593,6 +1611,11 @@ Changes
|
|||||||
|
|
||||||
Add request type 3: Host name lookup and request Lease Set lookup.
|
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
|
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.
|
the following extended results are included after the Destination.
|
||||||
These are included no matter what the request type.
|
These are included no matter what the request type.
|
||||||
|
|
||||||
@@ -1654,6 +1677,11 @@ Changes
|
|||||||
- Cost (priority) (1 byte)
|
- Cost (priority) (1 byte)
|
||||||
- Expires (4 bytes) (4 bytes, seconds since epoch, rolls over in 2106)
|
- 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
|
Changes to support Meta
|
||||||
@@ -1697,6 +1725,19 @@ Changes
|
|||||||
- Transient Signing Private key (length as specified by transient sig type)
|
- 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
|
Streaming Changes Required
|
||||||
==========================
|
==========================
|
||||||
|
Reference in New Issue
Block a user