forked from I2P_Developers/i2p.www
propagate from branch 'i2p.www' (head 58b6b0589b4b5e4a45b1be2ac97bba8d253e9368)
to branch 'i2p.www.str4d' (head 2ab3bce2634e8d1dcbf7f2bf89c310c5ae3a7eb6)
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
Common structures Specification
|
||||
===============================
|
||||
.. meta::
|
||||
:lastupdated: April 2015
|
||||
:accuratefor: 0.9.19
|
||||
:lastupdated: February 2016
|
||||
:accuratefor: 0.9.24
|
||||
|
||||
|
||||
This document describes some data types common to all I2P protocols, like
|
||||
@@ -140,7 +140,7 @@ Contents
|
||||
````````
|
||||
256 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/PublicKey.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/PublicKey.html
|
||||
|
||||
.. _type-PrivateKey:
|
||||
|
||||
@@ -157,7 +157,7 @@ Contents
|
||||
````````
|
||||
256 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/PrivateKey.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/PrivateKey.html
|
||||
|
||||
.. _type-SessionKey:
|
||||
|
||||
@@ -172,7 +172,7 @@ Contents
|
||||
````````
|
||||
32 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/SessionKey.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/SessionKey.html
|
||||
|
||||
.. _type-SigningPublicKey:
|
||||
|
||||
@@ -189,18 +189,19 @@ Key type and length are inferred from context or are specified in the Key
|
||||
Certificate of a Destination. The default type is DSA_SHA1. As of release
|
||||
0.9.12, other types may be supported, depending on context.
|
||||
|
||||
==================== ============== ======
|
||||
Type Length (bytes) Since
|
||||
==================== ============== ======
|
||||
DSA_SHA1 128
|
||||
ECDSA_SHA256_P256 64 0.9.12
|
||||
ECDSA_SHA384_P384 96 0.9.12
|
||||
ECDSA_SHA512_P521 132 0.9.12
|
||||
RSA_SHA256_2048 256 0.9.12
|
||||
RSA_SHA384_3072 384 0.9.12
|
||||
RSA_SHA512_4096 512 0.9.12
|
||||
EdDSA_SHA512_Ed25519 32 0.9.15
|
||||
==================== ============== ======
|
||||
====================== ============== ====== =====
|
||||
Type Length (bytes) Since Usage
|
||||
====================== ============== ====== =====
|
||||
DSA_SHA1 128 Legacy Router Identities and Destinations
|
||||
ECDSA_SHA256_P256 64 0.9.12 Recent Destinations
|
||||
ECDSA_SHA384_P384 96 0.9.12 Rarely used for Destinations
|
||||
ECDSA_SHA512_P521 132 0.9.12 Rarely used for Destinations
|
||||
RSA_SHA256_2048 256 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA384_3072 384 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA512_4096 512 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
EdDSA_SHA512_Ed25519 32 0.9.15 Recent Router Identities and Destinations
|
||||
EdDSA_SHA512_Ed25519ph 32 0.9.25 Offline signing, never used for Router Identities or Destinations
|
||||
====================== ============== ====== =====
|
||||
|
||||
Notes
|
||||
`````
|
||||
@@ -211,7 +212,7 @@ Notes
|
||||
* All types are Big Endian, except for EdDSA, which is stored and transmitted
|
||||
in a Little Endian format.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/SigningPublicKey.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/SigningPublicKey.html
|
||||
|
||||
.. _type-SigningPrivateKey:
|
||||
|
||||
@@ -227,18 +228,19 @@ Contents
|
||||
Key type and length are specified when created. The default type is DSA_SHA1.
|
||||
As of release 0.9.12, other types may be supported, depending on context.
|
||||
|
||||
==================== ============== ======
|
||||
Type Length (bytes) Since
|
||||
==================== ============== ======
|
||||
DSA_SHA1 20
|
||||
ECDSA_SHA256_P256 32 0.9.12
|
||||
ECDSA_SHA384_P384 48 0.9.12
|
||||
ECDSA_SHA512_P521 66 0.9.12
|
||||
RSA_SHA256_2048 512 0.9.12
|
||||
RSA_SHA384_3072 768 0.9.12
|
||||
RSA_SHA512_4096 1024 0.9.12
|
||||
EdDSA_SHA512_Ed25519 32 0.9.15
|
||||
==================== ============== ======
|
||||
====================== ============== ====== =====
|
||||
Type Length (bytes) Since Usage
|
||||
====================== ============== ====== =====
|
||||
DSA_SHA1 20 Legacy Router Identities and Destinations
|
||||
ECDSA_SHA256_P256 32 0.9.12 Recent Destinations
|
||||
ECDSA_SHA384_P384 48 0.9.12 Rarely used for Destinations
|
||||
ECDSA_SHA512_P521 66 0.9.12 Rarely used for Destinations
|
||||
RSA_SHA256_2048 512 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA384_3072 768 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA512_4096 1024 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
EdDSA_SHA512_Ed25519 32 0.9.15 Recent Router Identities and Destinations
|
||||
EdDSA_SHA512_Ed25519ph 32 0.9.25 Offline signing, never used for Router Identities or Destinations
|
||||
====================== ============== ====== =====
|
||||
|
||||
Notes
|
||||
`````
|
||||
@@ -249,7 +251,7 @@ Notes
|
||||
* All types are Big Endian, except for EdDSA, which is stored and transmitted
|
||||
in a Little Endian format.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/SigningPrivateKey.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/SigningPrivateKey.html
|
||||
|
||||
.. _type-Signature:
|
||||
|
||||
@@ -266,18 +268,19 @@ Signature type and length are inferred from the type of key used. The default
|
||||
type is DSA_SHA1. As of release 0.9.12, other types may be supported,
|
||||
depending on context.
|
||||
|
||||
==================== ============== ======
|
||||
Type Length (bytes) Since
|
||||
==================== ============== ======
|
||||
DSA_SHA1 40
|
||||
ECDSA_SHA256_P256 64 0.9.12
|
||||
ECDSA_SHA384_P384 96 0.9.12
|
||||
ECDSA_SHA512_P521 132 0.9.12
|
||||
RSA_SHA256_2048 256 0.9.12
|
||||
RSA_SHA384_3072 384 0.9.12
|
||||
RSA_SHA512_4096 512 0.9.12
|
||||
EdDSA_SHA512_Ed25519 64 0.9.15
|
||||
==================== ============== ======
|
||||
====================== ============== ====== =====
|
||||
Type Length (bytes) Since Usage
|
||||
====================== ============== ====== =====
|
||||
DSA_SHA1 40 Legacy Router Identities and Destinations
|
||||
ECDSA_SHA256_P256 64 0.9.12 Recent Destinations
|
||||
ECDSA_SHA384_P384 96 0.9.12 Rarely used for Destinations
|
||||
ECDSA_SHA512_P521 132 0.9.12 Rarely used for Destinations
|
||||
RSA_SHA256_2048 256 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA384_3072 384 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
RSA_SHA512_4096 512 0.9.12 Offline signing, never used for Router Identities or Destinations
|
||||
EdDSA_SHA512_Ed25519 64 0.9.15 Recent Router Identities and Destinations
|
||||
EdDSA_SHA512_Ed25519ph 64 0.9.25 Offline signing, never used for Router Identities or Destinations
|
||||
====================== ============== ====== =====
|
||||
|
||||
Notes
|
||||
`````
|
||||
@@ -288,7 +291,7 @@ Notes
|
||||
* All types are Big Endian, except for EdDSA, which is stored and transmitted
|
||||
in a Little Endian format.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/Signature.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/Signature.html
|
||||
|
||||
.. _type-Hash:
|
||||
|
||||
@@ -303,7 +306,7 @@ Contents
|
||||
````````
|
||||
32 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/Hash.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/Hash.html
|
||||
|
||||
.. _type-SessionTag:
|
||||
|
||||
@@ -318,7 +321,7 @@ Contents
|
||||
````````
|
||||
32 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/SessionTag.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/SessionTag.html
|
||||
|
||||
.. _type-TunnelId:
|
||||
|
||||
@@ -335,7 +338,7 @@ Contents
|
||||
````````
|
||||
4 byte Integer_
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/TunnelId.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/TunnelId.html
|
||||
|
||||
.. _type-Certificate:
|
||||
|
||||
@@ -415,16 +418,15 @@ Key 5 4+ 7+ Since 0.9.12. See below for d
|
||||
|
||||
Key Certificates
|
||||
````````````````
|
||||
Key certificates are preliminary, and are scheduled to be introduced in release
|
||||
0.9.12. Prior to that release, all PublicKeys were 256-byte ElGamal keys, and
|
||||
all SigningPublicKeys were 128-byte DSA-SHA1 keys. A key certificate provides
|
||||
a mechanism to indicate the type of the PublicKey and SigningPublicKey in the
|
||||
Destination or RouterIdentity, and to package any key data in excess of the
|
||||
standard lengths.
|
||||
Key certificates were introduced in release 0.9.12. Prior to that release, all
|
||||
PublicKeys were 256-byte ElGamal keys, and all SigningPublicKeys were 128-byte
|
||||
DSA-SHA1 keys. A key certificate provides a mechanism to indicate the type of
|
||||
the PublicKey and SigningPublicKey in the Destination or RouterIdentity, and to
|
||||
package any key data in excess of the standard lengths.
|
||||
|
||||
By maintaining exactly 384 bytes before the certificate, and putting any excess
|
||||
key data inside the certificate, we maintain compatibility for any software
|
||||
that parses Destinations and RouterIdentities.
|
||||
that parses Destinations and Router Identities.
|
||||
|
||||
The key certificate payload contains:
|
||||
|
||||
@@ -439,26 +441,31 @@ Excess Crypto Public Key Data 0+
|
||||
|
||||
The defined Signing Public Key types are:
|
||||
|
||||
==================== ========= ======================= ======
|
||||
Type Type Code Total Public Key Length Since
|
||||
==================== ========= ======================= ======
|
||||
DSA_SHA1 0 128 0.9.12
|
||||
ECDSA_SHA256_P256 1 64 0.9.12
|
||||
ECDSA_SHA384_P384 2 96 0.9.12
|
||||
ECDSA_SHA512_P521 3 132 0.9.12
|
||||
RSA_SHA256_2048 4 256 0.9.12
|
||||
RSA_SHA384_3072 5 384 0.9.12
|
||||
RSA_SHA512_4096 6 512 0.9.12
|
||||
EdDSA_SHA512_Ed25519 7 32 0.9.15
|
||||
==================== ========= ======================= ======
|
||||
====================== =========== ======================= ====== =====
|
||||
Type Type Code Total Public Key Length Since Usage
|
||||
====================== =========== ======================= ====== =====
|
||||
DSA_SHA1 0 128 0.9.12 Legacy Router Identities and Destinations, never explicitly set
|
||||
ECDSA_SHA256_P256 1 64 0.9.12 Recent Destinations
|
||||
ECDSA_SHA384_P384 2 96 0.9.12 Sometimes used for Destinations
|
||||
ECDSA_SHA512_P521 3 132 0.9.12 Sometimes used for Destinations
|
||||
RSA_SHA256_2048 4 256 0.9.12 Offline only; never used in Key Certificates for Router Identities or Destinations
|
||||
RSA_SHA384_3072 5 384 0.9.12 Offline only; never used in Key Certificates for Router Identities or Destinations
|
||||
RSA_SHA512_4096 6 512 0.9.12 Offline only; never used in Key Certificates for Router Identities or Destinations
|
||||
EdDSA_SHA512_Ed25519 7 32 0.9.15 Recent Router Identities and Destinations
|
||||
EdDSA_SHA512_Ed25519ph 8 32 0.9.25 Offline only; never used in Key Certificates for Router Identities or Destinations
|
||||
reserved 65280-65534 Reserved for experimental use
|
||||
reserved 65535 Reserved for future expansion
|
||||
====================== =========== ======================= ====== =====
|
||||
|
||||
The defined Crypto Public Key types are:
|
||||
|
||||
======= ========= =======================
|
||||
Type Type Code Total Public Key Length
|
||||
======= ========= =======================
|
||||
ElGamal 0 256
|
||||
======= ========= =======================
|
||||
======== =========== ======================= =====
|
||||
Type Type Code Total Public Key Length Usage
|
||||
======== =========== ======================= =====
|
||||
ElGamal 0 256 All Router Identities and Destinations
|
||||
reserved 65280-65534 Reserved for experimental use
|
||||
reserved 65535 Reserved for future expansion
|
||||
======== =========== ======================= =====
|
||||
|
||||
When a Key Certificate is not present, the preceeding 384 bytes in the
|
||||
Destination or RouterIdentity are defined as the 256-byte ElGamal PublicKey
|
||||
@@ -484,20 +491,21 @@ future revision of this document.
|
||||
Example layouts using an ElGamal Crypto Public Key and the Signing Public Key
|
||||
type indicated:
|
||||
|
||||
==================== ============== ===============================
|
||||
Signing Key Type Padding Length Excess Signing Key Data in Cert
|
||||
==================== ============== ===============================
|
||||
DSA_SHA1 0 0
|
||||
ECDSA_SHA256_P256 64 0
|
||||
ECDSA_SHA384_P384 32 0
|
||||
ECDSA_SHA512_P521 0 4
|
||||
RSA_SHA256_2048 0 128
|
||||
RSA_SHA384_3072 0 256
|
||||
RSA_SHA512_4096 0 384
|
||||
EdDSA_SHA512_Ed25519 96 0
|
||||
==================== ============== ===============================
|
||||
====================== ============== ===============================
|
||||
Signing Key Type Padding Length Excess Signing Key Data in Cert
|
||||
====================== ============== ===============================
|
||||
DSA_SHA1 0 0
|
||||
ECDSA_SHA256_P256 64 0
|
||||
ECDSA_SHA384_P384 32 0
|
||||
ECDSA_SHA512_P521 0 4
|
||||
RSA_SHA256_2048 0 128
|
||||
RSA_SHA384_3072 0 256
|
||||
RSA_SHA512_4096 0 384
|
||||
EdDSA_SHA512_Ed25519 96 0
|
||||
EdDSA_SHA512_Ed25519ph 96 0
|
||||
====================== ============== ===============================
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/Certificate.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/Certificate.html
|
||||
|
||||
.. _type-Mapping:
|
||||
|
||||
@@ -571,7 +579,7 @@ Notes
|
||||
|
||||
.. _I2CP SessionConfig: {{ site_url('docs/spec/i2cp') }}#struct_SessionConfig
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/DataHelper.html
|
||||
|
||||
|
||||
Common structure specification
|
||||
@@ -646,7 +654,7 @@ Notes
|
||||
* The Crypto Public Key is aligned at the start and the Signing Public Key is
|
||||
aligned at the end. The padding (if any) is in the middle.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/KeysAndCert.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/KeysAndCert.html
|
||||
|
||||
.. _struct-RouterIdentity:
|
||||
|
||||
@@ -675,7 +683,7 @@ Notes
|
||||
* The Crypto Public Key is aligned at the start and the Signing Public Key is
|
||||
aligned at the end. The padding (if any) is in the middle.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/router/RouterIdentity.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/router/RouterIdentity.html
|
||||
|
||||
.. _struct-Destination:
|
||||
|
||||
@@ -708,7 +716,7 @@ Notes
|
||||
* The Crypto Public Key is aligned at the start and the Signing Public Key is
|
||||
aligned at the end. The padding (if any) is in the middle.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/Destination.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/Destination.html
|
||||
|
||||
.. _struct-Lease:
|
||||
|
||||
@@ -756,7 +764,7 @@ Notes
|
||||
`````
|
||||
* Total size: 44 bytes
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/Lease.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/Lease.html
|
||||
|
||||
.. _struct-LeaseSet:
|
||||
|
||||
@@ -892,7 +900,7 @@ Notes
|
||||
publishes the actual lease expiration for each lease. This is an
|
||||
implementation detail and not part of the structures specification.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/LeaseSet.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/LeaseSet.html
|
||||
|
||||
.. _struct-RouterAddress:
|
||||
|
||||
@@ -964,7 +972,7 @@ Notes
|
||||
present in most router addresses: "host" (an IPv4 or IPv6 address or host
|
||||
name) and "port".
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/router/RouterAddress.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/router/RouterAddress.html
|
||||
|
||||
.. _struct-RouterInfo:
|
||||
|
||||
@@ -1065,7 +1073,7 @@ Notes
|
||||
* See the network database page [NETDB-ROUTERINFO]_ for standard options that
|
||||
are expected to be present in all router infos.
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/router/RouterInfo.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/router/RouterInfo.html
|
||||
|
||||
.. _struct-DeliveryInstructions:
|
||||
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Configuration File Specification
|
||||
================================
|
||||
.. meta::
|
||||
:lastupdated: November 2015
|
||||
:accuratefor: 0.9.24
|
||||
:lastupdated: February 2016
|
||||
:accuratefor: 0.9.25
|
||||
|
||||
|
||||
Overview
|
||||
@@ -376,9 +376,23 @@ Properties are as follows::
|
||||
# an inproxy. Default false.
|
||||
tunnel.N.option.rejectInproxy=true|false
|
||||
|
||||
# HTTP Servers only. Whether to reject incoming connections containing a
|
||||
# referer header. Default false. Since 0.9.25.
|
||||
tunnel.N.option.rejectReferer=true|false
|
||||
|
||||
# HTTP Servers only. Whether to reject incoming connections containing
|
||||
# specific user-agent headers. Default false. Since 0.9.25. See
|
||||
# tunnel.N.option.userAgentRejectList
|
||||
tunnel.N.option.rejectUserAgents=true|false
|
||||
|
||||
# Servers only. Overrides targetHost and targetPort for incoming port NNNN.
|
||||
tunnel.N.option.targetForPort.NNNN=hostnameOrIP:nnnn
|
||||
|
||||
# HTTP Servers only. Comma-separated list of strings to match in the
|
||||
# user-agent header. Since 0.9.25. Example: "Mozilla,Opera". Case-sensitive.
|
||||
# See tunnel.N.option.rejectUserAgents
|
||||
tunnel.N.option.userAgentRejectList=string1[,string2]*
|
||||
|
||||
# Default false. For servers, use SSL for connections to local server. For
|
||||
# clients, SSL is required for connections from local clients.
|
||||
tunnel.N.option.useSSL=false
|
||||
@@ -440,7 +454,7 @@ References
|
||||
==========
|
||||
|
||||
.. [DATAHELPER]
|
||||
http://docs.i2p-projekt.de/javadoc/net/i2p/data/DataHelper.html
|
||||
http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/DataHelper.html
|
||||
|
||||
.. [Mapping]
|
||||
{{ ctags_url('Mapping') }}
|
||||
|
@@ -1340,7 +1340,7 @@ References
|
||||
{{ site_url('docs/protocol/i2cp', True) }}#format
|
||||
|
||||
.. [I2CP-JAVADOCS]
|
||||
http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2cp/package-summary.html
|
||||
http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/i2cp/package-summary.html
|
||||
|
||||
.. [Integer]
|
||||
{{ ctags_url('Integer') }}
|
||||
@@ -1356,7 +1356,7 @@ References
|
||||
{{ ctags_url('Mapping') }}
|
||||
|
||||
.. [MSM-JAVADOCS]
|
||||
http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2cp/MessageStatusMessage.html
|
||||
http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/i2cp/MessageStatusMessage.html
|
||||
|
||||
.. [PrivateKey]
|
||||
{{ ctags_url('PrivateKey') }}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
I2NP Specification
|
||||
==================
|
||||
.. meta::
|
||||
:lastupdated: January 2015
|
||||
:accuratefor: 0.9.17
|
||||
:lastupdated: January 2016
|
||||
:accuratefor: 0.9.24
|
||||
|
||||
|
||||
Overview
|
||||
@@ -172,6 +172,9 @@ Notes
|
||||
research to determine points in the protocol stack where the far-end router's
|
||||
version is known and checksum generation can be disabled.
|
||||
|
||||
* The short expiration is unsigned and will wrap around on Feb. 7, 2106. As of
|
||||
that date, an offset must be added to get the correct time.
|
||||
|
||||
.. _struct-BuildRequestRecord:
|
||||
|
||||
BuildRequestRecord
|
||||
@@ -532,22 +535,24 @@ Delivery Instructions!
|
||||
Messages
|
||||
========
|
||||
|
||||
========================= ====
|
||||
Message Type
|
||||
========================= ====
|
||||
DatabaseStore_ 1
|
||||
DatabaseLookup_ 2
|
||||
DatabaseSearchReply_ 3
|
||||
DeliveryStatus_ 10
|
||||
Garlic_ 11
|
||||
TunnelData_ 18
|
||||
TunnelGateway_ 19
|
||||
Data_ 20
|
||||
TunnelBuild_ 21
|
||||
TunnelBuildReply_ 22
|
||||
VariableTunnelBuild_ 23
|
||||
VariableTunnelBuildReply_ 24
|
||||
========================= ====
|
||||
================================== =======
|
||||
Message Type
|
||||
================================== =======
|
||||
DatabaseStore_ 1
|
||||
DatabaseLookup_ 2
|
||||
DatabaseSearchReply_ 3
|
||||
DeliveryStatus_ 10
|
||||
Garlic_ 11
|
||||
TunnelData_ 18
|
||||
TunnelGateway_ 19
|
||||
Data_ 20
|
||||
TunnelBuild_ 21
|
||||
TunnelBuildReply_ 22
|
||||
VariableTunnelBuild_ 23
|
||||
VariableTunnelBuildReply_ 24
|
||||
Reserved for experimental messages 224-254
|
||||
Reserved for future expansion 255
|
||||
================================== =======
|
||||
|
||||
.. _msg-DatabaseStore:
|
||||
|
||||
@@ -1124,6 +1129,11 @@ A length Integer, followed by opaque data.
|
||||
actual payload of this message
|
||||
{% endhighlight %}
|
||||
|
||||
Notes
|
||||
`````
|
||||
* This message contains no routing information and will never be sent
|
||||
"unwrapped". It is only used inside `Garlic` messages.
|
||||
|
||||
.. _msg-TunnelBuild:
|
||||
|
||||
TunnelBuild
|
||||
@@ -1159,6 +1169,10 @@ Notes
|
||||
* The I2NP message ID for this message must be set according to the tunnel
|
||||
creation specification.
|
||||
|
||||
* While this message is rarely seen in today's network, having been replaced by
|
||||
the `VariableTunnelBuild` message, it may still be used for very long tunnels,
|
||||
and has not been deprecated. Routers must implement.
|
||||
|
||||
.. _msg-TunnelBuildReply:
|
||||
|
||||
TunnelBuildReply
|
||||
@@ -1177,6 +1191,10 @@ Notes
|
||||
* The I2NP message ID for this message must be set according to the tunnel
|
||||
creation specification.
|
||||
|
||||
* While this message is rarely seen in today's network, having been replaced by
|
||||
the `VariableTunnelBuildReply` message, it may still be used for very long
|
||||
tunnels, and has not been deprecated. Routers must implement.
|
||||
|
||||
.. _msg-VariableTunnelBuild:
|
||||
|
||||
VariableTunnelBuild
|
||||
@@ -1210,6 +1228,8 @@ Notes
|
||||
* The I2NP message ID for this message must be set according to the tunnel
|
||||
creation specification.
|
||||
|
||||
* Typical number of records in today's network is 5.
|
||||
|
||||
.. _msg-VariableTunnelBuildReply:
|
||||
|
||||
VariableTunnelBuildReply
|
||||
@@ -1235,6 +1255,8 @@ Notes
|
||||
* The I2NP message ID for this message must be set according to the tunnel
|
||||
creation specification.
|
||||
|
||||
* Typical number of records in today's network is 5.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Plugin Specification
|
||||
====================
|
||||
.. meta::
|
||||
:lastupdated: May 2015
|
||||
:accuratefor: 0.9.20
|
||||
:lastupdated: February 2016
|
||||
:accuratefor: 0.9.25
|
||||
|
||||
|
||||
Overview
|
||||
@@ -154,7 +154,7 @@ The following properties are used to add a link on the console summary bar:
|
||||
consoleLinkTooltip_xx
|
||||
lang xx as of 0.7.12-6
|
||||
|
||||
The following optional property may be used to add a custom icon on the
|
||||
The following optional properties may be used to add a custom icon on the
|
||||
console:
|
||||
|
||||
console-icon
|
||||
@@ -165,6 +165,14 @@ console:
|
||||
A path within the webapp to a 32x32 image, e.g. /icon.png
|
||||
Applies to all webapps in the plugin.
|
||||
|
||||
icon-code
|
||||
supported as of 0.9.25
|
||||
|
||||
Provides a console icon for plugins without web resources.
|
||||
|
||||
A B64 string produced by calling `net.i2p.data.Base64 encode FILE` on a
|
||||
32x32 png image file.
|
||||
|
||||
The following properties are used by the plugin installer:
|
||||
|
||||
type
|
||||
@@ -547,17 +555,49 @@ Classpaths
|
||||
|
||||
The following jars in $I2P/lib can be assumed to be in the standard classpath
|
||||
for all I2P installations, no matter how old or how new the original
|
||||
installation::
|
||||
installation:
|
||||
|
||||
i2p.jar, router.jar, jbigi.jar, sam.jar, mstreaming.jar, streaming.jar, i2ptunnel.jar,
|
||||
org.mortbay.jetty.jar, javax.servlet.jar, jasper-compiler.jar, jasper-runtime.jar,
|
||||
commons-logging.jar, commons-el.jar, wrapper.jar, systray.jar, systray4j.jar
|
||||
===================== ============================ =====
|
||||
Jar Contains Usage
|
||||
===================== ============================ =====
|
||||
commons-logging.jar Apache Logging For plugins requiring Apache logging.
|
||||
Prior to Jetty 6 (release 0.9), this
|
||||
contained Apache Commons Logging only.
|
||||
From release 0.9 to release 0.9.23, this
|
||||
contained both Commons Logging and Tomcat JULI.
|
||||
As of release 0.9.24, this contains
|
||||
Apache Tomcat JULI logging only.
|
||||
|
||||
commons-el.jar JSP Expressions Language For plugins with JSPs that use EL
|
||||
i2p.jar Core API Almost all plugins will need
|
||||
i2ptunnel.jar I2PTunnel For plugins with HTTP or other servers
|
||||
jasper-compiler.jar nothing Empty since Jetty 6 (release 0.9)
|
||||
jasper-runtime.jar Jasper Compiler and Runtime, Needed for plugins with JSPs
|
||||
and some Tomcat utils
|
||||
javax.servlet.jar Servlet API Needed for plugins with JSPs
|
||||
jbigi.jar Binaries No plugin should need
|
||||
mstreaming.jar Streaming API Almost all plugins will need
|
||||
org.mortbay.jetty.jar Jetty Base Only plugins starting their own Jetty instance
|
||||
will need. Recommended way of starting Jetty
|
||||
is with net.i2p.jetty.JettyStart in jetty-i2p.jar.
|
||||
router.jar Router Only plugins using router context will need; most will not
|
||||
sam.jar SAM API No plugin should need
|
||||
streaming.jar Streaming Implementation Almost all plugins will need
|
||||
systray.jar URL Launcher Most plugins should not need
|
||||
systray4j.jar Systray No plugin should need
|
||||
wrapper.jar Router Most plugins should not need
|
||||
===================== ============================ =====
|
||||
|
||||
The following jars in $I2P/lib can be assumed to be present for all I2P
|
||||
installations, no matter how old or how new the original installation, but are
|
||||
not necessarily in the classpath::
|
||||
not necessarily in the classpath:
|
||||
|
||||
jstl.jar, standard.jar
|
||||
============ =============== =====
|
||||
Jar Contains Usage
|
||||
============ =============== =====
|
||||
jstl.jar Standard Taglib For plugins using JSP tags
|
||||
standard.jar Standard Taglib For plugins using JSP tags
|
||||
============ =============== =====
|
||||
|
||||
Anything not listed above may not be present in everybody's classpath, even if
|
||||
you have it in the classpath in YOUR version of i2p. If you need any jar not
|
||||
@@ -575,29 +615,28 @@ required classpath for each client.
|
||||
Java Version Notes
|
||||
==================
|
||||
|
||||
While most I2P users are running a 1.6 (6.0) JVM, we support 1.5 (5.0) and
|
||||
higher JVMs. Unless you require 1.6 features, you should create your plugin so
|
||||
it works on 1.5.
|
||||
I2P has required Java 7 since release 0.9.24 (January 2016).
|
||||
I2P has required Java 6 since release 0.9.12 (April 2014).
|
||||
Any I2P users on the latest release should be running a 1.7 (7.0) JVM.
|
||||
In early 2016, unless you require 1.7 language or library features, you should
|
||||
create your plugin so it works on 1.6. Later in the year, most of the network
|
||||
will be on 0.9.24 or higher with Java 7.
|
||||
|
||||
If your plugin **does not require 1.6**:
|
||||
If your plugin **does not require 1.7**:
|
||||
|
||||
* Ensure that all java and jsp files are compiled with source="1.5"
|
||||
target="1.5".
|
||||
* Ensure that all java and jsp files are compiled with source="1.6"
|
||||
target="1.6".
|
||||
|
||||
* Ensure that all bundled library jars are also for 1.5 or lower.
|
||||
* Ensure that all bundled library jars are also for 1.6 or lower.
|
||||
|
||||
* If you are using pack200, any 1.6 classes in a jar will cause pack200 to
|
||||
create a 1.6 pack format, and plugin installation will fail on a 1.5 system
|
||||
with the misleading message "plugin is corrupt".
|
||||
|
||||
If your plugin **requires 1.6**:
|
||||
If your plugin **requires 1.7**:
|
||||
|
||||
* Note that on your download page.
|
||||
|
||||
* Add min-java-version=1.6 to your plugin.config
|
||||
* Add min-java-version=1.7 to your plugin.config
|
||||
|
||||
* If you are using pack200, plugin installation will fail on a 1.5 system with
|
||||
the misleading message "plugin is corrupt".
|
||||
In any case, you **must** set a bootclasspath when compiling with Java 8 to
|
||||
prevent runtime crashes.
|
||||
|
||||
|
||||
JVM Crashes When Updating
|
||||
|
@@ -659,6 +659,9 @@ Notes
|
||||
* If Alice includes her address/port, Bob may perform additional validation
|
||||
before continuing.
|
||||
|
||||
* Prior to release 0.9.24, Java I2P rejected any address or port that was
|
||||
different from the connection.
|
||||
|
||||
* Challenge is unimplemented, challenge size is always zero
|
||||
|
||||
* There are no plans to implement relaying for IPv6.
|
||||
|
@@ -2,8 +2,8 @@
|
||||
Tunnel Creation Specification
|
||||
=============================
|
||||
.. meta::
|
||||
:lastupdated: September 2014
|
||||
:accuratefor: 0.9.15
|
||||
:lastupdated: January 2016
|
||||
:accuratefor: 0.9.24
|
||||
|
||||
|
||||
.. _tunnelCreate.overview:
|
||||
@@ -126,8 +126,15 @@ When a hop receives a TunnelBuildMessage, it looks through the records
|
||||
contained within it for one starting with their own identity hash (trimmed to
|
||||
16 bytes). It then decrypts the ElGamal block from that record and retrieves
|
||||
the protected cleartext. At that point, they make sure the tunnel request is
|
||||
not a duplicate by feeding the AES-256 reply key into a bloom filter.
|
||||
Duplicates or invalid requests are dropped.
|
||||
not a duplicate by feeding the AES-256 reply key into a Bloom filter.
|
||||
Duplicates or invalid requests are dropped. Records that are not stamped with
|
||||
the current hour, or the previous hour if shortly after the top of the hour,
|
||||
must be dropped. For example, take the hour in the timestamp, convert to a full
|
||||
time, then if it's more than 65 minutes behind or 5 minutes ahead of the current
|
||||
time, it is invalid. The Bloom filter must have a duration of at least one hour
|
||||
(plus a few minutes, to allow for clock skew), so that duplicate records in the
|
||||
current hour that are not rejected by checking the hour timestamp in the record,
|
||||
will be rejected by the filter.
|
||||
|
||||
After deciding whether they will agree to participate in the tunnel or not,
|
||||
they replace the record that had contained the request with an encrypted reply
|
||||
@@ -296,8 +303,6 @@ Future Work
|
||||
* Further analysis of possible tagging and timing attacks described in the
|
||||
above notes.
|
||||
|
||||
* The Bloom filter rotation time should be evaluated.
|
||||
|
||||
* Use only VTBM; do not select old peers that don't support it.
|
||||
|
||||
* The Build Request Record does not specify a tunnel lifetime or expiration;
|
||||
|
@@ -300,7 +300,7 @@ instructions are:
|
||||
total length: 7 bytes
|
||||
{% endhighlight %}
|
||||
|
||||
JavaDoc: http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/DeliveryInstructions.html
|
||||
JavaDoc: http://{{ i2pconv('i2p-javadocs.i2p') }}/net/i2p/data/i2np/DeliveryInstructions.html
|
||||
|
||||
|
||||
Notes
|
||||
|
Reference in New Issue
Block a user