propagate from branch 'i2p.www' (head 58b6b0589b4b5e4a45b1be2ac97bba8d253e9368)

to branch 'i2p.www.str4d' (head 2ab3bce2634e8d1dcbf7f2bf89c310c5ae3a7eb6)
This commit is contained in:
str4d
2016-03-05 17:38:12 +00:00
76 changed files with 5321 additions and 696 deletions

View File

@@ -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:

View File

@@ -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') }}

View File

@@ -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') }}

View File

@@ -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
==========

View File

@@ -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

View File

@@ -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.

View File

@@ -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;

View File

@@ -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