propagate from branch 'i2p.www' (head aecd236e03c176955fd21d0d293f0731f65dc929)

to branch 'i2p.www.revamp' (head c0bf7e66ba62462bfa138be2e880de4422b0c959)
This commit is contained in:
str4d
2013-07-16 09:30:00 +00:00
1347 changed files with 186734 additions and 58818 deletions

View File

@@ -0,0 +1,617 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Application Development') }}{% endblock %}
{% block lastupdated %}{% trans %}May 2013{% endtrans %}{% endblock %}
{% block accuratefor %}0.9.6{% endblock %}
{% block content %}
<h1>{{ _('Application Development Guide') }}</h1>
<h2>{{ _('Contents') }}</h2>
<ul>
<li><a href="#why">{{ _('Why write I2P-specific code?') }}</a></li>
<li><a href="#concepts">{{ _('Important concepts') }}</a></li>
<li><a href="#options">{{ _('Development options') }}</a></li>
<li><a href="#start"><b>{{ _('Start developing - a simple guide') }}</b></a></li>
</ul>
<h2 id="why">{{ _('Why write I2P-specific code?') }}</h2>
<p>{% trans i2ptunnel=site_url('docs/api/i2ptunnel') -%}
There are multiple ways to use applications in I2P.
Using <a href="{{ i2ptunnel }}">I2PTunnel</a>,
you can use regular applications without needing to program explicit I2P support.
This is very effective for client-server scenario's,
where you need to connect to a single website.
You can simply create a tunnel using I2PTunnel to connect to that website, as shown in <a href="#tunnel.serverclient">Figure 1</a>.
{%- endtrans %}</p>
<p>{% trans -%}
If your application is distributed, it will require connections to a large amount of peers.
Using I2PTunnel, you will need to create a new tunnel for each peer you want to contact,
as shown in <a href="#tunnel.peertopeer">Figure 2</a>.
This process can of course be automated, but running a lot of I2PTunnel instances creates a large amount of overhead.
In addition, with many protocols you will need to force everyone to
use the same set of ports for all peers - e.g. if you want to reliably run DCC
chat, everyone needs to agree that port 10001 is Alice, port 10002 is Bob, port
10003 is Charlie, and so on, since the protocol includes TCP/IP specific information
(host and port).
{%- endtrans %}</p>
<p>{% trans -%}
General network applications often send a lot of additional data that could be used to identify users.
Hostnames, port numbers, time zones, character sets, etc. are often sent without informing the user.
As such, designing the network protocol specifically with anonymity in mind
can avoid compromising user identities.
{%- endtrans %}</p>
<p>{% trans -%}
There are also efficiency considerations to review when determining how to
interact on top of I2P. The streaming library and things built on top of it
operate with handshakes similar to TCP, while the core I2P protocols (I2NP and I2CP)
are strictly message based (like UDP or in some instances raw IP). The important
distinction is that with I2P, communication is operating over a long fat network -
each end to end message will have nontrivial latencies, but may contain payloads
of up to several KB. An application that needs a simple request and response can get rid
of any state and drop the latency incurred by the startup and teardown handshakes
by using (best effort) datagrams without having to worry about MTU detection or
fragmentation of messages.
{%- endtrans %}</p>
<div class="box" id="tunnel.serverclient" style="text-align:center">
<img src="{{ url_for('static', filename='images/i2ptunnel_serverclient.png') }}" alt="{{ _('Creating a server-client connection using I2PTunnel only requires creating a single tunnel.') }}" title="{{ _('Creating a server-client connection using I2PTunnel only requires creating a single tunnel.') }}" />
<br /><br />
{{ _('Figure 1:') }} {{ _('Creating a server-client connection using I2PTunnel only requires creating a single tunnel.') }}
</div>
<br/>
<div class="box" id="tunnel.peertopeer" style="text-align:center">
<img src="{{ url_for('static', filename='images/i2ptunnel_peertopeer.png') }}" alt="{{ _('Setting up connections for a peer-to-peer applications requires a very large amount of tunnels.') }}" title="{{ _('Setting up connections for a peer-to-peer applications requires a very large amount of tunnels.') }}" />
<br /><br />
{{ _('Figure 2:') }} {{ _('Setting up connections for a peer-to-peer applications requires a very large amount of tunnels.') }}
</div>
<br/>
{% trans -%}
In summary, a number of reasons to write I2P-specific code:
{%- endtrans %}
<ul>
<li>{% trans -%}
Creating a large amount of I2PTunnel instances consumes a non-trivial amount of resources,
which is problematic for distributed applications (a new tunnel is required for each peer).
{%- endtrans %}</li>
<li>{% trans -%}
General network protocols often send a lot of additional data that can be used to identify users.
Programming specifically for I2P allows the creation of a network protocol
that does not leak such information, keeping users anonymous and secure.
{%- endtrans %}</li>
<li>{% trans -%}
Network protocols designed for use on the regular internet can be inefficient
on I2P, which is a network with a much higher latency.
{%- endtrans %}</li>
</ul>
<p>{% trans plugins=site_url('docs/plugins') -%}
I2P supports a standard <a href="{{ plugins }}">plugins interface</a> for developers
so that applications may be easily integrated and distributed.
{%- endtrans %}</p>
<p>{% trans -%}
Applications written in Java and accessible/runnable
using an HTML interface via the standard webapps/app.war
may be considered for inclusion in the i2p distribution.
{%- endtrans %}</p>
<h2 id="concepts">{{ _('Important concepts') }}</h2>
<p>{% trans -%}
There are a few changes that require adjusting to when using I2P:
{%- endtrans %}</p>
<h3>{{ _('Destination ~= host+port') }}</h3>
<p>{% trans -%}
An application running on I2P sends messages from and receives messages to a
unique cryptographically secure end point - a "destination". In TCP or UDP
terms, a destination could (largely) be considered the equivalent of a hostname
plus port number pair, though there are a few differences.
{%- endtrans %}</p>
<ul>
<li>{% trans -%}
An I2P destination itself is a cryptographic construct - all data sent to one is
encrypted as if there were universal deployment of IPsec with the (anonymized)
location of the end point signed as if there were universal deployment of DNSSEC.
{%- endtrans %}</li>
<li>{% trans -%}
I2P destinations are mobile identifiers - they can be moved from one I2P router
to another (or it can even "multihome" - operate on multiple routers at
once). This is quite different from the TCP or UDP world where a single end point (port)
must stay on a single host.
{%- endtrans %}</li>
<li>
<p>{% trans -%}
I2P destinations are ugly and large - behind the scenes, they contain a 2048 bit ElGamal
public key for encryption, a 1024 bit DSA public key for signing, and a variable size
certificate, which may contain proof of work or blinded data.
{%- endtrans %}</p>
<p>{% trans naming=site_url('docs/naming') -%}
There are existing ways to refer to these large and ugly destinations by short
and pretty names (e.g. "irc.duck.i2p"), but those techniques do not guarantee
globally uniqueness (since they're stored locally in a database on each person's machine)
and the current mechanism is not especially scalable nor secure (updates to the host list are
managed using "subscriptions" to naming services).
There may be some secure, human readable, scalable, and globally
unique, naming system some day, but applications shouldn't depend upon it being in place,
since there are those who don't think such a beast is possible.
<a href="{{ naming }}">Further information on the naming system</a> is available.
{%- endtrans %}</p>
</li>
</ul>
<p>{% trans datagrams=site_url('docs/api/datagrams') -%}
While most applications do not need to distinguish protocols and ports,
I2P <em>does</em> support them. Complex applications may specify a protocol,
from port, and to port, on a per-message basis, to multiplex traffic on
a single destination.
See the <a href="{{ datagrams }}">datagram page</a> for details.
Simple applications operate by listening for "all protocols" on "all ports" of a destination.
{%- endtrans %}</p>
<h3>{{ _('Anonymity and confidentiality') }}</h3>
<p>{% trans -%}
I2P has transparent end to end encryption
and authentication for all data passed over the network - if Bob sends to Alice's destination,
only Alice's destination can receive it, and if Bob is using the datagrams or streaming
library, Alice knows for certain that Bob's destination is the one who sent the data.
{%- endtrans %}</p>
<p>{% trans -%}
Of course, I2P transparently anonymizes the
data sent between Alice and Bob, but it does nothing to anonymize the content of what they
send. For instance, if Alice sends Bob a form with her full name, government IDs, and
credit card numbers, there is nothing I2P can do. As such, protocols and applications should
keep in mind what information they are trying to protect and what information they are willing
to expose.
{%- endtrans %}</p>
<h3>{{ _('I2P datagrams can be up to several KB') }}</h3>
<p>{% trans datagrams=site_url('docs/api/datagrams') -%}
Applications that use I2P datagrams (either raw or repliable ones) can essentially be thought
of in terms of UDP - the datagrams are unordered, best effort, and connectionless - but unlike
UDP, applications don't need to worry about MTU detection and can simply fire off large datagrams.
While the upper limit is nominally 32 KB, the message is fragmented for transport, thus dropping
the reliability of the whole. Datagrams over about 10 KB are not currently recommended.
See the <a href="{{ datagrams }}">datagram page</a> for details.
For many applications, 10 KB of data is sufficient for an
entire request or response, allowing them to transparently operate in I2P as a UDP-like
application without having to write fragmentation, resends, etc.
{%- endtrans %}</p>
<h2 id="options">{{ _('Development options') }}</h2>
<p>{% trans -%}
There are several means of sending data over I2P, each with their own pros and cons.
The streaming lib is the recommended interface, used by the majority of I2P applications.
{%- endtrans %}</p>
<h3>{{ _('Streaming Lib') }}</h3>
<p>{% trans streaming=site_url('docs/api/streaming') -%}
The <a href="{{ streaming }}">full streaming library</a> is now the standard
interface. It allows programming using TCP-like sockets, as explained in the <a href="#start.streaming">Streaming development guide</a>.
{%- endtrans %}</p>
<h3>BOB</h3>
<p>{% trans bob=site_url('docs/api/bob'), boburl=i2pconv('bob.i2p') -%}
BOB is the <a href="{{ bob }}">Basic Open Bridge</a>,
allowing an application in any language to make streaming connections
to and from I2P. At this point in time it lacks UDP support, but UDP support
is planned in the near future. BOB also contains several tools, such as
destination key generation, and verification that an address conforms to
I2P specifications. Up to date info and applications that use BOB can be
found at this <a href="http://{{ boburl }}/">eepsite</a>.
{%- endtrans %}</p>
<h3>SAM, SAM V2, SAM V3</h3>
<p><i>{{ _('SAM is not recommended. SAM V2 is okay, SAM V3 is recommended.') }}</i></p>
<p>{% trans sam=site_url('docs/api/sam') -%}
SAM is the <a href="{{ sam }}">Simple Anonymous Messaging</a> protocol, allowing an
application written in any language to talk to a SAM bridge through a plain TCP socket and have
that bridge multiplex all of its I2P traffic, transparently coordinating the encryption/decryption
and event based handling. SAM supports three styles of operation:
{%- endtrans %}</p>
<ul>
<li>{% trans -%}
streams, for when Alice and Bob want to send data to each other reliably and in order
{%- endtrans %}</li>
<li>{% trans -%}
repliable datagrams, for when Alice wants to send Bob a message that Bob can reply to
{%- endtrans %}</li>
<li>{% trans -%}
raw datagrams, for when Alice wants to squeeze the most bandwidth and performance as possible,
and Bob doesn't care whether the data's sender is authenticated or not (e.g. the data transferred
is self authenticating)
{%- endtrans %}</li>
</ul>
<p>{% trans -%}
SAM V3 aims at the same goal as SAM and SAM V2, but does not require
multiplexing/demultiplexing. Each I2P stream is handled by its own socket between the application
and the SAM bridge. Besides, datagrams can be sent and received by the application through datagram
communications with the SAM bridge.
{%- endtrans %}</p>
<p>{% trans sam=site_url('docs/api/sam'), samv2=site_url('docs/api/samv2'), samv3=site_url('docs/api/samv3') -%}
<a href="{{ samv2 }}">SAM V2</a> is a new version used by imule
that fixes some of the problems in <a href="{{ sam }}">SAM</a>.
<br />
<a href="{{ samv3 }}">SAM V3</a> is used by imule since version 1.4.0.
{%- endtrans %}</p>
<h3>I2PTunnel</h3>
<p>{% trans -%}
The I2PTunnel application allows applications to build specific TCP-like tunnels to peers
by creating either I2PTunnel 'client' applications (which listen on a specific port and connect
to a specific I2P destination whenever a socket to that port is opened) or I2PTunnel 'server'
applications (which listen to a specific I2P destination and whenever it gets a new I2P
connection it outproxies to a specific TCP host/port). These streams are 8-bit clean, and are
authenticated and secured through the same streaming library that SAM uses, but there is a
nontrivial overhead involved with creating multiple unique I2PTunnel instances, since each have
their own unique I2P destination and their own set of tunnels, keys, etc.
{%- endtrans %}</p>
<h3>SOCKS</h3>
<p>{% trans -%}
I2P supports a SOCKS V4 and V5 proxy.
Outbound connections work well. Inbound (server) and UDP functionality may be incomplete
and untested.
{%- endtrans %}</p>
<h3>Ministreaming</h3>
<p><i>{{ _('Removed') }}</i></p>
<p>{% trans -%}
There used to be a simple "ministreaming" library,
but now ministreaming.jar contains only the interfaces for the full streaming library.
{%- endtrans %}</p>
<h3>{{ _('Datagrams') }}</h3>
<p><i>{{ _('Recommended for UDP-like applications') }}</i></p>
<p>{% trans datagrams=site_url('docs/spec/datagrams') -%}
The <a href="{{ datagrams }}">Datagram library</a> allows sending UDP-like packets.
It's possible to use:
{%- endtrans %}</p>
<ul>
<li>{{ _('Repliable datagrams') }}</li>
<li>{{ _('Raw datagrams') }}</li>
</ul>
<h3>I2CP</h3>
<p><i>{{ _('Not recommended') }}</i></p>
<p>{% trans i2cp=site_url('docs/protocol/i2cp') -%}
<a href="{{ i2cp }}">I2CP</a> itself is a language independent protocol, but to implement an I2CP library
in something other than Java there is a significant amount of code to be written (encryption routines,
object marshalling, asynchronous message handling, etc). While someone could write an I2CP library in
C or something else, it would most likely be more useful to use the C SAM library instead.
{%- endtrans %}</p>
<h3>{{ _('Web Applications') }}</h3>
<p>{% trans -%}
I2P comes with the Jetty webserver, and configuring to use the Apache server instead is straightforward.
Any standard web app technology should work.
{%- endtrans %}</p>
<h2 id="start">{{ _('Start developing - a simple guide') }}</h2>
<p>{% trans -%}
Developing using I2P requires a working I2P installation and a development environment of your own choice.
If you are using Java, you can start development with the <a href="#start.streaming">streaming library</a> or datagram library.
Using another programming language, SAM or BOB can be used.
{%- endtrans %}</p>
<h3 id="start.streaming">{{ _('Developing with the streaming library') }}</h3>
<p>{% trans -%}
The following example shows how to create TCP-like client and server applications
using the streaming library.
{%- endtrans %}</p>
<p>{% trans -%}
This will require the following libraries in your classpath:
{%- endtrans %}</p>
<ul>
<li>$I2P/lib/streaming.jar: {{ _('The streaming library itself') }}</li>
<li>$I2P/lib/mstreaming.jar: {{ _('Factory and interfaces for the streaming library') }}</li>
<li>$I2P/lib/i2p.jar: {{ _('Standard I2P classes, data structures, API, and utilities') }}</li>
</ul>
<p>{% trans -%}
Network communication requires the usage of I2P network sockets.
To demonstrate this, we will create an application where a client can send text messages to a server,
who will print the messages and send them back to the client. In other words, the server will function as an echo.
{%- endtrans %}</p>
<p>{% trans -%}
We will start by initializing the server application. This requires getting an I2PSocketManager
and creating an I2PServerSocket.
We will not provide the I2PSocketManagerFactory with the saved keys for an existing Destination,
so it will create a new Destination for us.
So we will ask the I2PSocketManager for an I2PSession, so we can find out the Destination that
was created, as we will need to copy and paste that information later so the client can connect to us.
{%- endtrans %}</p>
<div class="box">
{% highlight lang='java' %}
package i2p.echoserver;
import net.i2p.client.I2PSession;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
public class Main {
public static void main(String[] args) {
//Initialize application
I2PSocketManager manager = I2PSocketManagerFactory.createManager();
I2PServerSocket serverSocket = manager.getServerSocket();
I2PSession session = manager.getSession();
//Print the base64 string, the regular string would look like garbage.
System.out.println(session.getMyDestination().toBase64());
//The additional main method code comes here...
}
}
{% endhighlight %}
<p style="text-align:center">{{ _('Code example 1: initializing the server application.') }}</p>
</div>
<p>{% trans -%}
Once we have an I2PServerSocket, we can create I2PSocket instances to accept connections from clients.
In this example, we will create a single I2PSocket instance, that can only handle one client at a time.
A real server would have to be able to handle multiple clients.
To do this, multiple I2PSocket instances would have to be created, each in separate threads.
Once we have created the I2PSocket instance, we read data, print it and send it back to the client.
The bold code is the new code we add.
{%- endtrans %}</p>
<div class="box">
{% highlight lang='java',
hl_lines=[3,4,5,6,7,8,9,10,26,27,28,29,30,33,35,36,37,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,68,70] %}
package i2p.echoserver;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.util.I2PThread;
import net.i2p.client.I2PSession;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
public class Main {
public static void main(String[] args) {
I2PSocketManager manager = I2PSocketManagerFactory.createManager();
I2PServerSocket serverSocket = manager.getServerSocket();
I2PSession session = manager.getSession();
//Print the base64 string, the regular string would look like garbage.
System.out.println(session.getMyDestination().toBase64());
//Create socket to handle clients
I2PThread t = new I2PThread(new ClientHandler(serverSocket));
t.setName("clienthandler1");
t.setDaemon(false);
t.start();
}
private static class ClientHandler implements Runnable {
public ClientHandler(I2PServerSocket socket) {
this.socket = socket;
}
public void run() {
while(true) {
try {
I2PSocket sock = this.socket.accept();
if(sock != null) {
//Receive from clients
BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
//Send to clients
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
String line = br.readLine();
if(line != null) {
System.out.println("Received from client: " + line);
bw.write(line);
bw.flush(); //Flush to make sure everything got sent
}
sock.close();
}
} catch (I2PException ex) {
System.out.println("General I2P exception!");
} catch (ConnectException ex) {
System.out.println("Error connecting!");
} catch (SocketTimeoutException ex) {
System.out.println("Timeout!");
} catch (IOException ex) {
System.out.println("General read/write-exception!");
}
}
}
private I2PServerSocket socket;
}
}
{% endhighlight %}
<p style="text-align:center">{{ _('Code example 2: accepting connections from clients and handling messages.') }}</p>
</div>
<p>{% trans -%}
When you run the above server code, it should print something like this (but without the line endings, it should just be
one huge block of characters):
{%- endtrans %}
<pre id="start.streaming.destination">
y17s~L3H9q5xuIyyynyWahAuj6Jeg5VC~Klu9YPquQvD4vlgzmxn4yy~5Z0zVvKJiS2Lk
poPIcB3r9EbFYkz1mzzE3RYY~XFyPTaFQY8omDv49nltI2VCQ5cx7gAt~y4LdWqkyk3au
6HdfYSLr45zxzWRGZnTXQay9HPuYcHysZHJP1lY28QsPz36DHr6IZ0vwMENQsnQ5rhq20
jkB3iheYJeuO7MpL~1xrjgKzteirkCNHvXN8PjxNmxe-pj3QgOiow-R9rEYKyPAyGd2pe
qMD-J12CGfB6MlnmH5qPHGdZ13bUuebHiyZ1jqSprWL-SVIPcynAxD2Uu85ynxnx31Fth
nxFMk07vvggBrLM2Sw82pxNjKDbtO8reawe3cyksIXBBkuobOZdyOxp3NT~x6aLOxwkEq
BOF6kbxV7NPRPnivbNekd1E1GUq08ltDPVMO1pKJuGMsFyZC4Q~osZ8nI59ryouXgn97Q
5ZDEO8-Iazx50~yUQTRgLMOTC5hqnAAAA
</pre>
{% trans -%}
This is the base64-representation of the server Destination. The client will need this string to reach the server.
{%- endtrans %}</p>
<p>{% trans -%}
Now, we will create the client application. Again, a number of steps are required for initialization.
Again, we will need to start by getting an I2PSocketManager.
We won't use an I2PSession and an I2PServerSocket this time.
Instead, we will use the server Destination string to start our connection.
We will ask the user for the Destination string, and create an I2PSocket using this string.
Once we have an I2PSocket, we can start sending and receiving data to and from the server.
{%- endtrans %}</p>
<div class="box">
{% highlight lang='java' %}
package i2p.echoclient;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ConnectException;
import java.net.NoRouteToHostException;
import net.i2p.I2PException;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
import net.i2p.client.streaming.I2PSocketManagerFactory;
import net.i2p.data.DataFormatException;
import net.i2p.data.Destination;
public class Main {
public static void main(String[] args) {
I2PSocketManager manager = I2PSocketManagerFactory.createManager();
System.out.println("Please enter a Destination:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String destinationString;
try {
destinationString = br.readLine();
} catch (IOException ex) {
System.out.println("Failed to get a Destination string.");
return;
}
Destination destination;
try {
destination = new Destination(destinationString);
} catch (DataFormatException ex) {
System.out.println("Destination string incorrectly formatted.");
return;
}
I2PSocket socket;
try {
socket = manager.connect(destination);
} catch (I2PException ex) {
System.out.println("General I2P exception occurred!");
return;
} catch (ConnectException ex) {
System.out.println("Failed to connect!");
return;
} catch (NoRouteToHostException ex) {
System.out.println("Couldn't find host!");
return;
} catch (InterruptedIOException ex) {
System.out.println("Sending/receiving was interrupted!");
return;
}
try {
//Write to server
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("Hello I2P!\n");
//Flush to make sure everything got sent
bw.flush();
//Read from server
BufferedReader br2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = null;
while ((s = br2.readLine()) != null) {
System.out.println("Received from server: " + s);
}
socket.close();
} catch (IOException ex) {
System.out.println("Error occurred while sending/receiving!");
}
}
}
{% endhighlight %}
<p style="text-align:center">{{ _('Code example 3: starting the client and connecting it to the server application.') }}</p>
</div>
<p>{% trans -%}
Finally, you can run both the server and the client application.
First, start the server application. It will print a Destination string (like shown <a href="#start.streaming.destination">above</a>).
Next, start the client application. When it requests a Destination string, you can enter the string printed by the server.
The client will then send 'Hello I2P!' (along with a newline) to the server, who will print the message and send it back to the client.
{%- endtrans %}</p>
<p>{% trans -%}
Congratulations, you have successfully communicated over I2P!
{%- endtrans %}</p>
<h2>{{ _('Existing Applications') }}</h2>
<p>{% trans -%}
Contact us if you would like to contribute.
{%- endtrans %}</p>
<ul>
<li>
<a href="http://{{ i2pconv('i2pbote.i2p') }}/">I2P-Bote</a> - contact HungryHobo
</li><li>
<a href="http://syndie.i2p2.de/">Syndie</a>
</li><li>
<a href="http://{{ i2pconv('www.imule.i2p') }}/">IMule</a>
</li><li>
<a href="http://{{ i2pconv('forum.i2p') }}/viewforum.php?f=25">I2Phex</a>
</li></ul>
<p>
See also all the plugins on <a href="http://plugins.i2p/">plugins.i2p</a>,
the applications and source code listed on <a href="http://echelon.i2p/">echelon.i2p</a>,
and the application code hosted on <a href="http://git.repo.i2p/">git.repo.i2p</a>.
</p><p>
See also the bundled applications in the I2P distribution - SusiMail and I2PSnark.
</p>
<h2>{{ _('Application Ideas') }}</h2>
<ul>
<li>{% trans -%}
NNTP server - there have been some in the past, none at the moment
{%- endtrans %}</li>
<li>{% trans -%}
Jabber server - there have been some in the past, and there is one at the moment, with access to the public internet
{%- endtrans %}</li>
<li>{% trans -%}
PGP Key server and/or proxy
{%- endtrans %}</li>
<li>{% trans -%}
Content Distribution / DHT applications - resurrect feedspace,
port dijjer, look for alternatives
{%- endtrans %}</li>
<li>{% trans -%}
Help out with <a href="http://syndie.i2p2.de/">Syndie</a> development
{%- endtrans %}</li>
<li>{% trans -%}
Web-based applications - The sky is the limit for hosting web-server-based
applications such as blogs, pastebins, storage, tracking, feeds, etc.
Any web or CGI technology such as Perl, PHP, Python, or Ruby will work.
{%- endtrans %}</li>
<li>{% trans -%}
Resurrect some old apps, several previously in the i2p source package -
bogobot, pants, proxyscript, q, stasher, socks proxy, i2ping, feedspace
{%- endtrans %}</li>
</ul>
{% endblock %}

View File

@@ -0,0 +1,417 @@
{% extends "global/layout.html" %}
{% block title %}{% trans %}I2P Developer's MTN Keys{% endtrans %}{% endblock %}
{% block content %}
<h1>{{ _('MTN Keys') }}</h1>
<p>{% trans -%}
Monotone servers used by the I2P project require two types of keys to be used.
{%- endtrans %}</p>
<ul>
<li>{% trans %}<a href="#commit">Commit Keys</a> to sign changes checked-in to the respository; and{% endtrans %}</li>
<li>{% trans %}<a href="#transport">Transport Keys</a> to push changes to remote servers.{% endtrans %}</li>
</ul>
<p>{% trans monotone=site_url('get-involved/guides/monotone') -%}
Everyone that uses Monotone to checkout the I2P codebase will need to
<a href="{{ monotone }}#obtaining-and-deploying-developers-keys">import</a> the
developer commit keys, but only Monotone <a href="{{ monotone }}#operating-a-monotone-server">
server operators</a> will need to import the <a href="#transport">transport keys</a>.
{%- endtrans %}</p>
<h3 id="commit">{{ _('Developer Commit keys') }}</h3>
<pre>
[pubkey jrandom@i2p.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOLw05kZbux5KLdp
rcGHeCTlyt+GjhGXh7Aups+QMD/FEbIVEFPGIBG2ju3069TKIHpXr5
HEe5maBgtIJBM9NPVvMNFCgOSregmnVIpxSgHd+Wiu1Iyzhd0SxC5p
CHdnwSjv051fctYcp1rs5OcUojUdvF7tq91zAAY+kLxpX6zQIDAQAB
[end]
[pubkey complication@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCx1F6nwBUCIiCPVs
ogy/h/+2d8X3uMcEdnRIN+gxO+0pK+yrGZiFwi7TG/K3PjDfJWuxsP
RKLeb9Q4NmfxrAePelGig9llalrDnRkIcRFucnNUOJo9C0MjvzYR9D
6bIS3+udPdl6ou94JX+ueo2jLXI1lGgtdWDWTetJx9I++EvwIDAQAB
[end]
[pubkey zzz@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtgaWY0Wc1c8pFGI
xASZx78pHpHZKQV8z6IRQkgy65gQMjpLquaQpy3Xk8rkpnfA+6h3TS
6bjplsEhlaQoxvpGxacRYOt+y1HC/n20O3RIE1A/e3sGKHGDEQW+3I
tF4WSNfeQ18DzLeun32vFknq2k9im6Ts4tiYfKs8CZ5KW0/QIDAQAB
[end]
[pubkey dev@welterde.de]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRnJUBY0d4310UpZ
YGUlsWgxWHoD8bsKtTvGw83vwUQRtM2xPKxCHvEntg9Dgiqr5RurOK
HK7Eak6WgxCXQFfC9ALr4SoC5abI4ZFvM/CAWRb547UIPTchSnuDUn
/TSgDGqtGvMFS9t6OUp9Z/7QzIjLQhhBCqj4/hZhxUJ61XBwIDAQAB
[end]
[pubkey Oldaris@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/wN6IERnEJzL6X7
UXpGwkf8DII5pFiGmpLyAphMK3zVUwJCFqEJWdOBpUa8hq6wmXCGVP
aDZZ1K+M/6XNxNSR2JX/4+18EjOt8OWnMy1agpZo6dlRbBQyFUjlwz
GbulGSo/pP/bY8S4KeTi6bzkkiUvvIKWKX8/53tZesgUg3KwIDAQAB
[end]
[pubkey sponge@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmKJfJ2KFI8BLYa0
38oc2LNRCr44ardR6VIeEVY/RTKj62KbFKttU5nmTwBDEnKTkzjq+c
M8jNKGDB2HbGF9em+FQFvf1tLYgtfV8ArkODdKrjhBpAoizbb0Gc5W
5NDrV87X8mB352RBiJ/6Chy4pe3Bi5qRA3sBge2sVaD2uEPQIDAQAB
[end]
[pubkey dream@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTuU8WYdNydjKucb
0E4Y+JD60AgHDU/9L0Tga1YA/JT1T2BDWLdYIh5uzf6XgzxFvFEx1F
c2ZYRu+XwjMlM9NDHgkTUQwMT6NeGOUhB0e+ypxVxIp3iyNbAAGQsq
iJR7/EDKN1AhfFMCXQSnl3OLSU9J2gfgqOIeeSabPOiVXpcwIDAQAB
[end]
[pubkey mathiasdm@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo5hy9RZ9yQJ7jze
u9IBTZ8kQA+APiUpsTBTHXYT1CGkeDddoll5sD97Vk4yWxLMu5BE/C
rJKnZqrueblpgQ1xBsA04wzQlXKRJIv3W/woElRX23SFImlRo4/1Yl
+ckUet7YnG0ryielCxvg3aQE5mbVi/igFx11vkhnJ8ajDgZwIDAQAB
[end]
[pubkey mkvore-commit@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5Q8Wz2Ag0RTpus1
QKYHZwf1/MxxTV+jANXBUyKUFnIA+jgw7ltUEZ+nw9NTfEUrNGcgJn
PtBwDqTtbbYYiRG2D2YXlIqTpdZl5tC+lbPeHV1tRjyGpvdlbPBepp
xAdrROmt0MnXG8JZiDGLrsD4+CPnzClFdhwK/MMIv75iMpiwIDAQAB
[end]
[pubkey z3d@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYGyxsmalo1CNHnS
Tx0e3TyAWcGw9zFuGj/scRg72/b3JRsY5rxedp5S+8EE2GrkUNGFBz
K+OHhxuGqJVVBe+IqRNHKVHhibTG+PlMZ9llqxevhXAbXD3ZLES3//
5u5UCZp0UDJNGp6WvykHSLg4YeF3SN0aBedHM46rGu/rCycQIDAQAB
[end]
[pubkey cervantes@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCryEmQRgq/fp1v17
thtVmr6PQq7MS7TDNaklZTGbcDwh/29eCwajiWjPfjAAG6uXgi5rz7
8U4M6GXHGZbwZ3uECXDn3XO+0lqMair/hs9Z2iPT3bk4kO7MvELKk8
Cje3FvhpFxGrPkiipsFrm3vxK9wu1nsgIt4RefmvzE4GGO5wIDAQAB
[end]
[pubkey BlubMail@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxrz9mlNzwyQ8Jgq
dhUZWZ0ZNOAcPS0aAsewR93jj4Sizq0L623cE5FNavoGa0FyC5Pei5
rXOutgZ/q6tfj3ty8WVv67+zacPCLKnLiMHM5ZqnzdlTiUrvq95rE4
z35zaeNaXL2HWK0AjJccG2+VMjaGpYWsqOBC4JXBlC+b37sQIDAQAB
[end]
[pubkey walking@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6p3gEkln5OtrXhn
NgqNrUMMWm9qgIeYPceoasOWVbDYdaLVRcr6Zm/C89fYyCgC94Fyhe
TTkmFx2p5AkUBR9uQP73YYVG6yBQZzcE3QLWqarxvISIkLIG9Y+a+Y
jO8KPv9nZLOI0cPR9PzIO6KdhNQHOYF6cdGY/KQTW/qPVPcwIDAQAB
[end]
[pubkey neutron@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWkZsO+JevhpRyUJ
mFc//7LDkXwUOyaN5Iy58Q6LlxL77OSe9xv6T6re/+GwTK29GobBlx
nE891iMZrrz36RbVnmQhLELv2H+268nx4sgL8P+OLvTtQRiffabPlO
0zYmVh0rF+JnCuopBzPuioJq7AzqQB1LY/qwY4HnVGnc5ecQIDAQAB
[end]
[pubkey HungryHobo@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClWkCeQRmzUOX4dI
6Ug7gCFR9iIhKZZCNFsfu+xfPSWzLUuu/+UVxq/wFqQiI4iIsx6NzO
Ag6QgyvUiIFrutasa8diNITnqxfJkA918W/v4iLLuB1ppy0Jaog0OK
ttDrf7S/puZUNfi8PKDPEGdbGDZ2rLN3gRslnaKqSHlSO7xQIDAQAB
[end]
[pubkey russiansponsor@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDENEaXsL9AnH0lLt
JzMVfz4u6sck+TLXJjijZr61BJAvIQhaGwnGBkzA9Cn/yUaFUF7L+/
eFBHRkaYFQ6ITfOXioKq07UAJyKO7X+mTIaBUNy/if7DY+cRmCUBhJ
XU7EitmCJdu9Pqteo74Icpw7dhYUuhg9R2oD5BIxJGGdzfrwIDAQAB
[end]
[pubkey echelon@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/oVMwyzMaSsH2WF
gl209ZZn1TMGYo6SDBn3aI7Ohw5iIujBWX6D+p74iTkrlL1JOjmI2+
nvStbCFbKcm4VxFQFrJ3DydrRGCmmRNhm8tKewei36sdhXzbAzxDTq
BZOpmNL/TYQtpRgozKHmmix8yDgncva0TWSOjUmHRArXfAiQIDAQAB
[end]
[pubkey forget@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfQR7tQMh4xGCq0R
9BXQ0HnYbEZYnf+aprSuEfy3ji3x7VFwJ/TkfGDhNgrHh2/uBQ+P7y
1OFygEPalOkIc2FwJ51yWMac/YnQWPNTo3mtr6V7NfnC7UnForkJyI
iLNhi0kVfm9719W391byclB/9t7O6ZYynO1qXRuco5e8jI7QIDAQAB
[end]
[pubkey privateer@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrUQmgzVrk0cO85H
CefU5ZHAOZeauLL4gXjRcEpYqtLA1XxDmqYDupfLc/SWxmN4ElIb8h
GN048REUGk6umzbGQvUK6z62mHigF2JeqMbgwxzzIPk7K26gncmadT
6+0B3TBsUW7A6KeoCKdID2IL6CqB3qGyFLkRtY10G23zHOCQIDAQAB
[end]
[pubkey duck@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwmWqF56heG7WQb2
mrGqv6GuMDXhS/Lu2DZDAIvZGHYNyWBO4x3Lis48A0jHZDSqYzIqyE
J+BFwg4AjvOiPziEbD8SJ6/pCAfIZpk6E8lExZn6VhypIDIJMmH/bq
BK31bC++XaWp34v9xc9tZRKJiYmhRb6EVA/IapG8A/t+TQVwIDAQAB
[end]
[pubkey m1xxy@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/aaFUq37RQdJpMC
8aacqYLdd88wNVjwI+4HY5d7a61HvYIAecg1KJlq/CDFFrygmCcusn
FaBmmBQFLO+gJXPKi9PMo1vaENiqCTVfY4EUpMMYzpuqKMKjyfuT6e
oOHCZEKfZosUowyJt61FsTzGu+B9y27d0jxXwXT/fml100EwIDAQAB
[end]
[pubkey hiddenz@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnpEeIignM2UUsJT
9+hSMcVOUuf0PZTxi9G3zRhDjal8Qdy/NUZQELAc6/gBhnZcSP4BHp
/0BTTxXthlTjko8nkwx+EgzQO425Vgb1v/7RneCqEDjMP6QyZUOn1H
i2UBw+jvnbjFk1wDqt9BPdAKITfp3l7bR1xGr4gs1M4MSrcwIDAQAB
[end]
[pubkey dev@robertfoss.se]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDW/j5vyMJLTI2YoZ
emcSETQI6FW2kq2CQuA6UU2vjhIlqIITBHCjgTpjIocpKxodHrR20j
1aGWh3SoGdFa79NLLZvVH8h1cjYmBhDWTvrlefH94v74+TnL+Z9oUN
oJ4nWsFD66vB76i9e/MsI1CcarQmRrf4HjLYGm+ME4oJMyNQIDAQAB
[end]
[pubkey hamada@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmBYkINIl+HDcdPz
bID2zmd309oe6XX2EmVdngTn6mgXVh5G47Wx2y6V8XMYFMsTQOUBba
PAIzAKOlQ7O1lOb8HDXYf42iO4IG0QH0XV8eZUugYumtomtAu8qCUy
3/ux1+xmFJQ0CbU9178EDqZsz/EaH1xfkkh4XJ3TXtvcEBZQIDAQAB
[end]
[pubkey magma@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCkwYsTheWK9/gwS0
Aoz0PQZD/I428ZAFmdZfZNNSyVgV9EHopHgATIJr6gi+UYhem1hwiQ
2J8G7/ZCptwT8syFRKuj/CIyeUPEALCNGrWaWrVVBoBS5VNHkS0Nq0
1pT7I2K+y52vvMMyE1O/4BTkA35mvTL0wA80zRuZ199eOUsQIDAQAB
[end]
[pubkey kytv@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMMTHQs4AQ0KuXjH
sPRvfeBo2EydIAcGcBH7VCO26AofX2ns3ezTKfvmv6QcFhcxn41I6O
dG29DdFVRz4D8hIZvOoFYfe87nswgyXW85rEilJP02Z8HCr/dcYJbP
sWAlMr7/UIDsT/9swd0U6QTf9X2W+VORyhDdYXcG8zikBqXQIDAQAB
[end]
[pubkey str4d@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe4zkWVW8fBXGtnM
pWbw316qbxWhKdnM86bnPyU3a8C2ERaofESzoZPXm21BR4jEqHLFzV
zni4MTAJ+J0XjW70Le5DZTm/AG18qXd8UsK2+IreCHqnv5XPL8Lw8o
Y6zNoT834emGqH2n0T98OHF6zNUStBrvuv9AFPa6FZocF2mwIDAQAB
[end]
[pubkey meeh@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXk4uuZsnO+JhSd
8MVUxJh9aSHde0dPxHOgWgcfdrcH1crn5SPhTFQVe2ZY7HuwbQPDb3
ZAQSLNx4odZpC0U6s6wejJgWwGl3h232aMU/LO3qAXtjOzpt1HNg7x
Wcw2E10Ag1K6qLpxs3TJy3BEJvPIghUMeWbfE5XbaUgkbuFQIDAQAB
[end]
[pubkey ReturningNovice@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCucT9GhzRqr2l1Uh
ifcwYRHjSZWAf1XXtu6EEsA5p9DTg2tOiN+SCuRe3QpMVU2er4YQOU
CFhd0htyCw/l2/syEPeObx78Yf2pCnAIYAsapCa0kNQzlb4FB637Ql
AmEGcRv0PjbW6USV41EWMad0RFWmq8SBkuZxbwpn33bUNkXQIDAQAB
[end]
[pubkey zab@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0H8bP/f8v7KjnyG
lZGWQsF5G3ppvJ1Kwt/dUGi7gHbclKPnFAWXmb7YWOhl9Ua2USjQ4Y
rIeB7/2uVOpe+3FrFgUzIiWsx6I2yiNI3TscDvQsa5wG0Z2G4BbHXj
ONyiUzzO+j2TWPs3x35r2LCy8plRzPAswCF1GaIEjJCce5zwIDAQAB
[end]
[pubkey zab2@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLabJXvbBfHZ4zH2
kom+W2Kb3kYYs58j8ZygkK9rj8j2SrlokxLiLABVYK7tdlb1zgZJVY
gO8flnqsOSGb2CtoQ3i3Fqk0HNq2if47LVyaLwgOyoPOhYkDDGr9Wg
gBp+svAHALMoGvh0lemKQZpQfdMgZ33k2l2o3Udvj3tpB/KwIDAQAB
[end]
[pubkey digit@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAo+xF9MoHp2S4T/
smvUtDL7Qcjis5LyqDYELo/IqER5Nn4CNNA9SCrBKm6nlzDjAj7X8J
zbTTvOT9WqTzwHrWjNcG4rAWsG22kbvtlujy3sbgO7VckQolzm+psM
mySqVwAzOZm9ShSxBeb99oULNQwRaW+QrGiB2mBFeCnY1kywIDAQAB
[end]
</pre>
<h3 id="transport">{{ _('Developer Transport Keys') }}</h3>
<p>{% trans monotone=site_url('get-involved/guides/monotone') -%}
<b>Note:</b> Transport keys are only needed for setting up a
<a href="{{ monotone }}#operating-a-monotone-server">Monotone server</a>.
{%- endtrans %}</p>
<pre>
[pubkey zzz-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDa2uZI1BobxS4Tap
Mqmf4Ws3nyL3GYgkfbMEawyWl0E1pfHJ4dLZkdxQdcLyCsN9OCY4jR
NzmoYnDa2HtBLINq15BJmGJ0cfIDLXIB2GBOViAPRkEKQTVoc7Ipcj
tPPjtSBVganD/AW78m9cgUYag86Lbm2ynUaXWpw9i4gpLdLQIDAQAB
[end]
[pubkey transport@welterde.de]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCujyq15a7t0Gki/s
KoZQbv7CHJWbT3YB5ODQyU3zfqXnHNj82tz6wVsvjZmKUYZvax7wLL
RErMGX3PTGxb23I5iypLmYtWt+lbkxMZdcGTGEXBU8JnAfhnSIdLzB
J2soe55vBQp0Tx1Ta+7/CNYwVPUxr5l6J/2gcGFJg3cAD99wIDAQAB
[end]
[pubkey complication-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP55FmBUIZjamtDi
nVDrLmS9uU40KoNfLdiB+t/iEgEWHDPQxlwugh/aBQwsXKGGJMJSNU
RKwwjfrcr5y3oz9jpRjtLVqoZMBVLgp28WGA9KbzXi4/dYhdyNmr4g
Hc17mDSlhCfk/L5QxifSYwSaeeFPsoAAyBBB221Z3197bmVQIDAQAB
[end]
[pubkey dream-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXpVjyvfxmLhjWZN
HHroRMlvnNjz0jI0JfhsZIDk3KqS6H/2yfxJDm6t3/ODyl6AXYzVrP
0oi90uE2nqNfSJVB3Csm6Jl4z64GXhovAXHCY/g0XS0obUV6bUFRph
4iXy5IrjV2JnVTGJYW9PDjHOyXz8idpnauJ2t56QpHZSQpZQIDAQAB
[end]
[pubkey kytv-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD4secxbkqqBtmAYx
IChXrgmaq+aueIJ9hVZVdYqEj+QwpMwNrVmsfZkq4J3F7KYwsDwFq+
lBMt8rweXddnUhA2jhGbZ6frFGXB9SXhU9QazvojksLJ8wOTKj++fR
fBBzpGgAlq3VvCPgwM0/j6DD+Lj2T88zmW0zZfQJPmr/Hz2QIDAQAB
[end]
[pubkey f-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6KwEmazpoBtcEBQ
Ei1Cu1T4VimDXHUD+shpiLOirVCZFBX+gXy4KYFcLuaFzBvYXMk6zF
HYBKt6sbIvxrl9g1yy6W367uvayeuwd8+gT2D5tYfjc0KdFM5UmILO
g4fScp0eurAPBowg66xG4kIylISkRmNGWHlecs9sH2cVf8OQIDAQAB
[end]
[pubkey ampernand@gmail.com]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJfmtEanQ07lbTVu
29xXX8R+FWWo7YzKUpRmcdnyjYaQgRbyCR+Y83z9nK+J5ZQXEwr12U
2zfJpzohWlEyvpJuFvzv6aiiZRvLXXwZj6LL5TYUva48MUSg1GqytT
6l8mu4ypF/uc3OAcY/quBmlqD1JAwKhBvwCvNpWHMTj20y3wIDAQAB
[end]
[pubkey meeh-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNm8aGdaHM5S4CbH
GerEYH8Ch4sp10YuEweUr0G8eAIP8NqC90OvNwp1QkoFQ4kQsQVJbF
LQdwfLze2N7KstigSl87YV7RWqn9GX+VYIQ/HCFnmyGPkJSmvs3OA/
JQE8u+wqSYuLphzJF//+YAMYWW0hlMhU9hB0Sr2MRjA6yVIwIDAQAB
[end]
[pubkey sponge-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQttmzW0G38zUNz7
J6cdqDC3d+dzw7Xjwup3DXWLMVUkrsl1ASMx8pP58LI29zyBVmXfYe
pHpwKivCkR4p3XSMYy5zi/cxVlsG/kRH1irvMm5opDdqqi2lvgpn0i
KHx3/DPaXvroi+KeF7m4L9Y8h1BYEehLxVZr9IVdyxFRaA5wIDAQAB
[end]
[pubkey anarkia-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFJ7GNuwu2xxghKJ
BHmog1UbA2tzM5gjbWYZRGdpADbaejCBJRFcWRh/OXSxk17lH96bYl
yPxAX7sZbtm/yxNdMb+zcjalj4OUIJ1lU3TeMT54agb9r/e2w5cRrs
oJ6bY2wPHVUzhDC5vbU6yM6tfbMil7JWZ5ndko1Uuq1TJPaQIDAQAB
[end]
[pubkey ReturningNovice-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsQE/oxAVXXKx5bf
lc2LV1yUP8GAur30w1DseR3Cf19TzMCBTgXVNESjJZntxs1ozG3Bce
+dbTFsxVb63UMC0RngA27sWR/2K1HOEKlIWXG/ajnx5yMwT6GdxS/w
v2UOXbmR8IP6buK6fsMzEDGUlVU2Aajt3ovPAE7xwYApE6rwIDAQAB
[end]
[pubkey echelon-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEVlT4Y2IpJU/s8e
vqKZxCii1OG+FGHh8sNVdaM830P2ymOf6z4G+TAcp9vsz8lKVSg8O0
T5Hpxuujr/suYVBgsqRT6iGqkPw6ElmdNFp0DhJBRI851u+b3/yeQv
0YGABkZ0AlSNIssjQFxaynGRLnjvYbcnVEJ++a44jILwiqbQIDAQAB
[end]
[pubkey thelastcode-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWYhkspKLVuyn1i8
/h++Lf9gn3GMd0VF6o15PFqFisQC7M4T5rvCJZby414HemsllhDuA+
NbP4hPB6AU+vSMSv8S5GN/b92iz7dC3lNue4huUf+hDBzETRtYAtGD
85ttMEBjgGMY4AGTGhI6JOYbAUlDUgUzIhjypNEgeQ9f5kCwIDAQAB
[end]
[pubkey monotone@killyourtv.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkX25gOPJkcf9LpB
rd8vAqoLQItcT5FYJmzNYk5V6K1dCvT7qltVDvmbZ+jDeEirP9rYLu
oHcDakfjEAbcwr0UyXIu4BV1Ib++3qM+kkM/NrOTbtFNZp5h5Zs8fh
cXtrD4HkCM1fxgqwFP8M6l5cm+Z3w2MkZUoN7mJu7F95+obQIDAQAB
[end]
[pubkey JULIET-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDghepfaUmWTI7mM5
Ytyawi7DaKAY1QJgQd4cE86WpOwQVCIrr5pKmQg+XLqTl4UwkjnKlE
ZL3XU/DY8yQ1F74/P1w6EoTTm7EvA5WDrQhj3RiKeeSrhTUzi+gRLE
4JmzqKv0Z9m0UJinNMdYck14bhXyJYheMqofr3Z7sB+LVtcwIDAQAB
[end]
[pubkey monotone@bilbo.srv.welterde.de]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiqrTjNhYPus8ZOO
GOAHuBrfxtKijVNs1NHwggHjeHEbpwQSmQ2uijyl+H3B3A7ErKwaPu
J96SUlZv2LbfwkeFFU523FfvBJrUZgRLLhpWvYQWHlC+rIVcnOy9Ci
aFexjw4QOrG9Hf9UAMEEissmea50jldEyiyLF8UXgemoESUwIDAQAB
[end]
[pubkey asaf-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7zJ4ozJPSXmlUJ+
ej8euN7qMo1kwXs++6EP/k1chkhAUUNokF8QAK3CXRCuPuVk0x6amn
Pnay0fQf0aUANIKHtxxE2LEf9Jt2AD8FuDjsKcOxAUbZlWeY4W54H5
ty937NL5Tn7GUrURpcUvNbs7h9ZlSMpmzZnguFjuXnL67s3wIDAQAB
[end]
[pubkey luminosus-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1Qz/jUeOfzT+ZNm
53INSMm4XUGAjXS+0DDnp2XeKgDkvQzMnjOy/+wSaBB+AJ71CM7/2K
u0TN/SZhJUx/AvP/WBKL4rvLkdmVS8MDGjpmk+ErD5d9U/27+xw6wP
MIDi4WGmTyjLS5nYHcrQa7SjW3xGQuyfWJXa2RuRMMtmum3wIDAQAB
[end]
[pubkey zab-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI/VD0KtrPPaCSQ
PHse4p53ze5yi/0CePfbh1YXTJieUzCGpD76IjlpRB8sRYIevWGglO
jac6fhAA97VMlSmZHIxtBw3U4Y7kTkdZcsgkKTa756ge5UeURVmBaU
Zevb8DDRREUQ3ELt6bit9iQhOvsAeUNiB1IVmRRBXrYIQhSQIDAQAB
[end]
[pubkey anarkon-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBZVg1jgWAWLn/6y
C9zd4OqFuSNiWDH9hVA0kWNJvdhylp7bCP6Pd2mgNesyV1K9girW1M
2r300Csm5v7kff8/ct3ef5HyoBMn2Ex8SgAmir2Pjgc6lFsn3I8hOv
FAkUwH1CFtg6sjKUJMJQJbisfPmnhu20Ptf6VXaQtaG/JgCQIDAQAB
[end]
[pubkey str4d-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNrBX5L+Ptk76Pdd
0Eku+a/hOhQioS2TQnxEaabkcIQrXWE8oeuYSby3+XgYkQrr3mML/1
C4cxYbWBxXN/XK39V5tc1z3Ngsk75OFS7SFPxRF875dwoHGnNlIXBZ
NAeZBQ+zlStljDkvaWD1qYI9MvYklEBetL2dNc86sRnM2DMQIDAQAB
[end]
[pubkey dg2-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYEQ8kziAnYDCxgR
I2CzDAkmI1ZJgEwZxGm3Dn/Jj7aNjXsJQeWDe4VSwVvtJdzwbrp3qm
GBapx3KtetESkPtq6BVL2j5qXP3rQ2QP4nOFh05DcuiO7D+uqHpLIb
tPXStQO9WfFgCzXRMvpCkX4OdnoRGgFkiIZHQJxT+ATLtNwQIDAQAB
[end]
[pubkey zab2-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmh9ukHhxTY3/bDs
At7mOUETxO3sLrf70kR9Mn4p44c4NKuFF4APmeYaFfIP9N5ZkBxY+5
2YPCQNXdtLDAPpxrq9as+IOaxH3ZVENllml0iCuGjZWtvYVkxHXCKo
hMMlffgZFJeDIEEed3eIttUPsIdW8U+2XQM1zF9R77+K0ZJQIDAQAB
[end]
</pre>
{% endblock %}

View File

@@ -0,0 +1,797 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('License Agreements') }}{% endblock %}
{% block content %}
<p>{% trans licenses=site_url('get-involved/develop/licenses') -%}
For more information see <a href="{{ licenses }}">the licenses page</a>.
{%- endtrans %}</p>
<p>{% trans -%}
Following is a monotonerc file defining the current trust list.
Developers must use this file in ~/.monotone/monotonerc or
_MTN/montonerc in their i2p.i2p workspace.
{%- endtrans %}
{% include "include/monotonerc.html" %}
</p>
<p>{{ _('Agreements') }}:
<pre>
Complication:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHyXwu+h38a3n8zjMRAjeSAJ9MFx/ENbUu8+3/U7KTj+FGL/NkHQCdE38G
IWV1Gaqcis9sFEW7Nh0hY+c=
=WPeP
-----END PGP SIGNATURE-----
zzz:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I affirm that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHyaYXQVV2uqduC+0RAhn4AJ40JO/ep1JhmghjPU/IeISIa2fY8ACgiuV0
vOCHNLZ8kiXKc8cTzYHGnU0=
=ZzDd
-----END PGP SIGNATURE-----
welterde:
Received by zzz 2008-02-16, need to put clearsigned version here.
Oldaris:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
Oldaris, 2008.07.15
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFIfQjqzZzOariGyHgRAgR3AKCBFidvx7u1xp1UcNPZSX4VcHMQmwCg0zos
IfrFyqSeeuhGoGVoq8godnY=
=GSEI
-----END PGP SIGNATURE-----
Sponge:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code they commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iJwEAQECAAYFAkjc2NsACgkQEGXqrGArRL24pQQAheyOBJiLU4wtbXFL5kVny3PZ
W8syAlzBC4sbOm3PkG9YLWh38Lnl+JPvVklRHJbpjRLEfwx6VwEiJRfZB6u+X7x/
qRwzjH6HYjz+tX3OAcj0MYH7yr09DLaJ26171X08BXoNpYuu4WWkXx8QnfgvZKVF
TeTxhTBL/iWBPKCF2Tk=
=+5bk
-----END PGP SIGNATURE-----
Dream:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkmDVuwACgkQ9BQnlhdx/DlVugCePaRdhpg3qiOyQ71HeiGxT528
RmsAoLyxOkGxHn9FO+BGMabzeLAq2vV3
=Cqfg
-----END PGP SIGNATURE-----
MOSFET:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to any code I contribute to the I2P and Syndie projects,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkmFAWcACgkQZ6SDODlcTO04JgCdGy4duWKRaTWkEdq8GW1ukOkU
+YAAn1Ch68XJZqLfXqJU3igcRjWbapD1
=64sn
-----END PGP SIGNATURE-----
mkvore:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAknVxdQACgkQUbTVRUoTVGhKUQCfWs3bw+fo0wqbKcURotncsfsA
uJgAnjnImkb5iEDp5vCccQO4PDGYp2+u
=0iW6
-----END PGP SIGNATURE-----
Mathiasdm:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAknYaiwACgkQSgosdkktX9aE1gCgsQhfzyHhSLWrRsDfCz+HaITD
ApkAn2RjN+wpldf52Ur2nTVSvpLiHcik
=Znrk
-----END PGP SIGNATURE-----
dr|z3d:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I, dr|z3d, do solemnly agree that, in respect of the Invisible Internet Project (I2P):
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
iEYEARECAAYFAkpN+Q4ACgkQ00a8KJajPMJdjQCfWBovGyOKbZkvL47+FNX5s+14
f3QAnAkcOZYQ6rbPG8N8orH7+BMGvfPf
=UxMM
-----END PGP SIGNATURE-----
cervantes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
iEYEARECAAYFAkpa5VUACgkQxQxxfQtaKXwKcwCgm8yLYdv+VtjS+1P89U4zQxL4
IowAoIghIIWdMs3oMJpGAXfXTqpjRwXJ
=lNJP
-----END PGP SIGNATURE-----
blub (BlubMail@mail.i2p):
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
1. Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
2. If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
3. I have the right to release the code I commit under the terms I am committing it
One warning about 3:
German law applies for me and in german law the concept of "public domain" doesn't exist. Its also not possible to waive all rights to the extent the "public domain" concept (as understood in the US) requires (for the ones speaking german: see for example http://de.wikipedia.org/wiki/Public_domain and http://dejure.org/gesetze/UrhG/29.html). IANAL, but I would guess that this is relevant when I commit code, even if I2P isn't a german project.
I don't really care about legal issues but since the whole point of me signing this seems to be avoiding legal issues and/or uncertainty which code has which license and similiar issues, I thought I should say this. If you don't care, ignore it. :)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkqjRpgACgkQD9YhRSUxPSd74wCdEIHUauSInrfmhXlcx3t5pwrh
9RQAoNy6BW1qSSGhu+Jd2EQ8fQOoO13q
=LG0S
-----END PGP SIGNATURE-----
walking:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I agree that, in respect of the Invisible Internet Project (I2P):
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
iQEcBAEBAgAGBQJK3xwEAAoJELST8RRG8p88DQsH/2cMRMtDiaYKNF+fQvdSKuQI
igqRJnnIr/g5s8alfikRhm6MqR/q/vsWVfQlKs+KwL+15OKPjJJtxahp/CsWu5ZX
edHZv4nKGuSB7FvUoy0Lz6LRlu0HgZl7nli6YNVYbfbAQ1QbPY3wbvRxkLyHy1Zm
kB1XyfzOvA9gpu6r3NLUR8a5mhDUbOtNR8IxoNC/Z1ogsf1c5kzbz0ncHPiV1wMx
WZYIJ6vaa0BzJcEi2BDQWsPasEoMlGiK1+WXrjTq4lYcJYu+xrNFh+ofbRYqYhaf
3sGSCgK6abMlQeoO1aO5uo6CRI/Yvrfp5G5y7S/yDOq03glK3RnPAYlmc3s6VLY=
=i/D9
-----END PGP SIGNATURE-----
neutron:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi zzz,
I agree to the following :
- - Unless marked otherwise, all code I commit is implicitly licensed
under the component's primary license
- - If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
- - I have the right to release the code they commit under the terms I
am committing it
Neutron
- --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkr3D7MACgkQDkulOvK9/Uww+ACeJ/ILV87A7AtRqJI78MutKlxr
IpYAn0MXlHOB9aA7aR07Kj95pvF8A6wv
=AUjh
-----END PGP SIGNATURE-----
HungryHobo:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it.
HungryHobo, 11-3-2009
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkrxDEMACgkQHix7YXbc3BL+GACdGH9r4WWqnZS4ZHdvhq2kEgEH
FQYAn3gMHNDEBh6YD8KBK4UT/v89PRmy
=EXov
-----END PGP SIGNATURE-----
russiansponsor:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAksZr28ACgkQg9RXHZerbBDNqACfa1EHKmqFbX0F3MOaAqln9NMX
JcYAn2dmuA6/jdJW7VikLQbNrKasqG6a
=WsTC
-----END PGP SIGNATURE-----
echelon:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAksaywwACgkQXE9k4qzN3VNuIwCcDR2NL7aVAs+DftvFkoqy9Bnx
7zUAn3PYwfChW0MYdX2EsxV/DCHgk7y0
=HEKB
-----END PGP SIGNATURE-----
4get:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed
under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am
committing it
-----BEGIN PGP SIGNATURE-----
iEYEARECAAYFAkseTgMACgkQSH2S/jaH2VEYeACgsPSxEXAxWfyQ3/qNpJhbBTlh
Q/QAn3tS6UisuXPCFDh9N4BxcscjSD+5
=6DAb
-----END PGP SIGNATURE-----
duck:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed
under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am
committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkulRM8ACgkQHV6vOQfY4WwZswCfTjd7ktLjgqXPL7gvt6z2dxTQ
aFAAoJn1aPHVbMw/9FmkTmPSruVFs8V1
=bgCE
-----END PGP SIGNATURE-----
privateer:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkwKdKoACgkQTo2HeGooF8zClwCfVh8uaCHNP4MQwrB1egFKO40j
aqEAn3zAoSf0hCbTU/A489RKeQ6DA6GM
=mA0j
-----END PGP SIGNATURE-----
m1xxy:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I, mixxy/m1xxy, hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it.
* The following is my monotone signing key:
c9b970f5e8917eada663d4c6b22096617021c95c m1xxy@mail.i2p
[pubkey m1xxy@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/aaFUq37RQdJpMC8aacqYLdd88wNVjwI+4HY5d7a61HvYIAecg1KJlq/CDFFrygmCcusnFaBmmBQFLO+gJXPKi9PMo1vaENiqCTVfY4EUpMMYzpuqKMKjyfuT6eoOHCZEKfZosUowyJt61FsTzGu+B9y27d0jxXwXT/fml100EwIDAQAB
[end]
mixxy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iQIcBAEBAgAGBQJM1gjUAAoJECDrk8/2C++w+WwP/1GLBHpTGYiDO/zfqECgVRu2
S+qxTdEWcJyfz1MY8tJ9vMIhlr66jxveI1KZ4sNUln91yPR2KDgMrBa31wL8IHAz
T4uj7paMt8zLtptMbn2nGqdl/X3fmGloDQvW/VB0MWj3YpBgxXiMfEf3Mv9BcnV4
B6IUvnXAWVe86Dlon1KLoQjAB3hjiGZV0vUV8sjEOYxX/qztLAfP1FPHCRdKlNYY
hb2zNdRTHlCF+CKdZ+TX4HB7qlsjYUbhRJhh2pN2Rwz/2w/CddwXQ4jaKjCkn5T9
D5Ekz4/b68doGq1hhjTf/GZ1FqVt+gkYr8MYPGZP5oJ6O4X5yPc3QhRy5cMlERSj
S5+lXB/nM09w5bScHtdfHauxUI/vWOdF78BzCJHhOBBHZ/jrsV2iX6QDaf+X/FbT
64SWXTa4jzQeE7MafF9Bkex1rWGJiom5Ew4NG73e1GyGtkwvRV6j5H3AKvpgRJzG
G7W3/7MSZjNP7aIs2+BqYe9YveV0GCzC0l0lhIHvKNzRv6Avvvx7krORMQZqSt1k
lVPIAUyoW+ScB+E26dVpRFne/0q9yUcQOeKyqehGCEFtgqQCqLsdTHynxayp58bJ
lccrgLY+pzPpNg5w/5kJFm70ih9MOHRdRik9TiGvj56tzLUEPrD7WeMzl4mkeg0Y
2WPghzlpoV5C1SJkv+dR
=YLVN
-----END PGP SIGNATURE-----
hiddenz:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I, hiddenz/anon8373/slow, hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it.
* The following is my monotone signing key:
[pubkey hiddenz@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnpEeIignM2UUsJT9+hSMcVOUuf0PZTxi9G3zRhDjal8Qdy/NUZQELAc6/gBhnZcSP4BHp/0BTTxXthlTjko8nkwx+EgzQO425Vgb1v/7RneCqEDjMP6QyZUOn1Hi2UBw+jvnbjFk1wDqt9BPdAKITfp3l7bR1xGr4gs1M4MSrcwIDAQAB
[end]
hiddenz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAEBAgAGBQJM3u7uAAoJEFp3lNknxN+16HoIAMNYVELPBHOM4iqO1lWeFqmK
mSw/+eME05KvboZUq9SsJjInUkxlbfDWHf/DuUlCnTPePuQY+wTQPOa18ncldG0y
bgO71WnCSyIydrw8dIUtMBfvVzcSP4c5h0ty10Dw+YxdKL2TLTIw4JuqYCPhE4cm
1IqBfHT5or7A2ahCXLkUt2YX9NW9SAl8xUs+/g5rzc42EAgh656JK83G7kA38UID
nn6ZA+A/3hrTe1+lJ0yHa6sCnJGJ6+tdJlLzjeU6K34cRPCcn2sPO9LUlM6VHVga
AkTEFPvxhJC9yJ4cgIJ5AlrcF8B4Ufb0gsfsEfebAl1puA0C/MRxywTSjZTTB3k=
=UDcv
hottuna:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hottuna:
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit
is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit
under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.16 (MingW32)
iQGcBAEBAgAGBQJNKd3GAAoJEBVx72WXYlXhZjEL/3miyEMtggiJF73UJ26qLyAp
9vFqoztcCHZTdDS3jpXaDY3v2WnfT6bB3eQjrFYkwDO8UpVqjdCnPUhs/sqHg0eX
eqesy6IqDhluxJTO3vlvgBJVh449/g1P15hOQ1aR3vv12okmv85yOD7qbprkAZ9P
J2uByT2L1EaLUuYVABVkmoZyBhvmSFZkfvXmToYlywo413r36mW4M+Y7yFkBuw0x
aEvZ43zVVDaMsJQwTPdcUb4RmfSPk8d15FOr9WbWzSfKhUZ1HUtCWjPUuYWPzIrg
APnJswb07ekm8G9bPeKctOg8lJnJTbM0HzA1KGaCzvpJ+asz6HY8+2mq5RzvQ5XX
+6x+heNjNNG6f55cdwTw+ivWcsZiKDliAMUWlSkHMoWLjdzYOzrCM0vNf+BQMYeU
+Qg/bOU4Pt11Hfn5/PwY7zdK3KTp/bqtWE6kBdlFXtnPdZKaYtUTmwdCgB/2EC2T
pJOW/MBcMyHC5MxdistNFpXDv4O8dt7SNe83ADB2bA==
=aXNE
-----END PGP SIGNATURE-----
hamada:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hamada affirm that:
* Unless marked otherwise, all code I commit is implicitly
licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed
under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I
am committing it
Hamada
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAEBAgAGBQJNUs9+AAoJEOEGJ9ydVi3DddMH/0Bl4Mh3oSWFfx8peOj2JG2z
bXHrK7kDHSK+aJrcFORQ4YPg2INjCH5GDDxaALhHKnVpTqZHy2F+RWII1SYVnU6l
SQKBKOKw4bHQZSS0ibdsRkUbP1cyoxR9bh0SXfDFjwLu3rzsU4FFc6vmRAIdwiOo
xQK3RpiPpzegsZPOFr4+vHIJUGcgGce86EIjC5VSoQHb3gHXsnsYGYBIszEj1MZ4
OCzbjV7Gl44sZ6R8Q2AU1Dita7ANJv6bkbk8W8Rurxqi2lUDHiWkW2XaoZ18mvnj
dZ65tC2kHgJHVU0oIn5rGMA7uuQizFL0d6pzQfJgw1hMA29sGQmxovy+Bp85Pqk=
=HeGr
-----END PGP SIGNATURE-----
magma:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I affirm that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iQIcBAEBAgAGBQJNg8FwAAoJEKiufQgd4cCY8sEP/13U7rmFMyYgbITiJHxRM/Kl
BFW/iVYPqF4Kr9qjT0S80kOw0wvHctWGPAoHv23YxUYRrJuW0gd5EAdv+1KQBmE/
lpKaTXMAt8DKba80dRk5I1S6SnJhAKyesF+nlxi53EfqIp1mRwSwzzRWgx9mz08R
jJSyEbPHX/ipwmohEAZ1diIYQv9QFjrrXOv+avFZgm56tj3ckBtKZNuZ+P/0sttJ
zmom7H7v9O1WlHiF50TuiLRM8V4XMKRRFw2GHaUgC/Uh5jN6PHEBoeQT5ssXvVIu
7IcCx9wTmABoGo2PALO51C+2aMvDXFml7QCEjwKtG2zelWJLXR1tyZuQdn+fxLa0
CDLc/V4mSgjscNN9gOJwX8AIUqwzA/SalZ5ng6gs6IqHk6wnrznw5kKNsEi1FInI
n2MlDsgCiv1D6gqqOYEJYrWYmQqOoU7fNi/cgi9vJ1XQOA0pd40SeoNMNzs4LmIu
oPifPJ+ODqfxTeBGSAZ3UDDdv80hzFlhMXHKk/a0+CpsBd1OmIkE+YhCQTI23wfv
xBzzO3WoecufpM1Ykg0yOYlGJ3IMJ1n7zvobJfiExeLDBM7fPFmJqB1sFRyV0n9f
sNMV1SjtLKZr65oePxFL1ludkQ6aMqlLCzNOSec6cUUSnkd+YwieT5yFpOXb6d8a
w4O9LtQO1R4tgrVXhBw4
=j/xY
-----END PGP SIGNATURE-----
kytv:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I KillYourTV/KYTV affirm that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
[pubkey kytv@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMMTHQs4AQ0KuXjHsPRvfeBo2EydIAcGcBH7VCO26AofX2ns3ezTKfvmv6QcFhcxn41I6OdG29DdFVRz4D8hIZvOoFYfe87nswgyXW85rEilJP02Z8HCr/dcYJbPsWAlMr7/UIDsT/9swd0U6QTf9X2W+VORyhDdYXcG8zikBqXQIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iQEcBAEBAgAGBQJN0b3UAAoJEKvgwxnfCgoaQaMH/RdNoOt+1lm4cztvv5f2QBL3
W4h3PjloDqkLE4ATDm+AcctahQaWuA221AMOrhR0aS+93wm+mOxzSmeoE91V475n
2fpC/zWx0WRAzjQkr1M6OkcXNy6f+H5/UkBcaivzI9y5wUv5ETUHwiy+5qzG4oQ7
AzbPHeJic88c6dyGX6rwa5VFMXLKYnr7h/i562/Ynaqus8tu/td1KEGkdNFgW4We
y/aXYqaNYtds4xova49m99Y5u1kfKltv4YVEwY5a7Cj8p/31aeD8c10rWrf00R9H
XlL2/b0lIx1C8CAK5TmdrD8G1SXl614SJTGuQfBT2N6yCT+jcrOMJIghCZhvmLQ=
=U1Tw
-----END PGP SIGNATURE-----
str4d:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I str4d affirm that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license.
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses.
* I have the right to release the code I commit under the terms I am committing it.
* The following is my monotone signing key:
01265f0c817b24548478341fb75e672720a78b21 str4d@mail.i2p
[pubkey str4d@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe4zkWVW8fBXGtnMpWbw316qbxWhKdnM86bnPyU3a8C2ERaofESzoZPXm21BR4jEqHLFzVzni4MTAJ+J0XjW70Le5DZTm/AG18qXd8UsK2+IreCHqnv5XPL8Lw8oY6zNoT834emGqH2n0T98OHF6zNUStBrvuv9AFPa6FZocF2mwIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iQEcBAEBAgAGBQJPE5faAAoJENXeOJaUpGWy5kUIAIhe1ow0VpMgJitkBr8cBF8B
iJoKJ/DrCQ+XGk8API05VpyW0BLnG9qVRZh8DZux3NealIk3k37gN5rVHas0vpjU
5qzqFNwpeyPSSFhylLMqf3fYdjJJZieZfWU/XW7HUMYGgZ03Lq95sxPRPyl8A0D8
2ahv537Vy4EOZCdE8CvBgS/Hk0TVrG9EPL/vR1T6cx9YSV5/R0xiNNKujgoUHurX
8gHudomaEf+VxqDFCFQbjIWqDuf1sm1eRQokvO+wELqNjkUsWhDMAS54EjTmYN+h
Zc8XFXkeLUdRU6zJHo0tRWo0zswIW+a0r5W+T5MHwUnYOiTUUVgOjtwTGN7uURQ=
=nEwG
-----END PGP SIGNATURE-----
meeh:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
Meeh, 9 Aug 2012
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAEBAgAGBQJQJC9mAAoJELj1P6o1Twr4+i0QANHrOH8CyUJHVXkbTAxRdKW0
u4avJvhQchyXjGvEPxYzUbQw2th41XlaNVKXgoiWTMKdOc88kkhL9dHj8yasMIHI
hncureihJ7bFS11IFBauqP8nV8UG3oONq9GqzW+6YxQ4SL6UAMP84iXCfB6W0wBd
ZE/06i5ezdsbeGfIgbrgkNsQMVcGRrbV5S3kBbW+lV4RitEsF2qb2IYlwbSUUSL9
/7/8FX87xocLRs3GOjhmRiyifMSoSRShnmMmckDNGlkY3Yz19HSThE47xnyg9Aaj
NYzmZMJFVnY6Rt1d4iLEw+/DUlYqs0afovHT2MnqymuN89204I6Yccn3n6AGKJxx
yJX6U4x49BwohG7ZW1S9RINoobqcg3l1Ne1Lp5EBe8jyxFjz0n1684biDuyKJx/o
ryp8mJ2cRKEWOduAyIChMeo/tFaDkMg/tTyuLrpSw404XpXa4EaUUlbZVQRHf25g
1Kil1XL+KhFcAP3hgjmpfc2ukFcL6j09yI0eZhlkJLosI+lKMpK3dqcjbdOiOauk
vQlJdkYZyxW2AReymH2XDI+cDg8tRw9iU22rAABXFs8zy5brK2Gjn1DK/sEVIdna
NVr7aW4hiQWqHVWivVy5Otf8Ioacoi8i2NISZtbCc68WtEkoFmEdW7QB+kwSsXIq
R2VFZ/114yCNY74KmujA
=jfFH
-----END PGP SIGNATURE-----
zab:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I declare that:
Unless marked otherwise, all code I commit is implicitly licensed
under the component's primary license
If specified in the source, the code may be explicitly licensed under
one of the component's alternate licenses
I have the right to release the code I commit under the terms I am
committing it
zab (topiltzin on irc)
[pubkey zab@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0H8bP/f8v7KjnyGlZGWQsF5G3ppvJ1Kwt/dUGi7gHbclKPnFAWXmb7YWOhl9Ua2USjQ4YrIeB7/2uVOpe+3FrFgUzIiWsx6I2yiNI3TscDvQsa5wG0Z2G4BbHXjONyiUzzO+j2TWPs3x35r2LCy8plRzPAswCF1GaIEjJCce5zwIDAQAB
[end]
[pubkey zab-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLI/VD0KtrPPaCSQPHse4p53ze5yi/0CePfbh1YXTJieUzCGpD76IjlpRB8sRYIevWGglOjac6fhAA97VMlSmZHIxtBw3U4Y7kTkdZcsgkKTa756ge5UeURVmBaUZevb8DDRREUQ3ELt6bit9iQhOvsAeUNiB1IVmRRBXrYIQhSQIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQmQeOAAoJEJkeLHPsdqhZgOUQAIRzuQZ3yF1r+P0iO390r+qy
RxU0gQiPJDqDixDn0u8EAb2ljRWHTBfy792hs0nUu2//fNCh6chd7tbmJQn02Rm9
nDICr2Lex6a9j498yWnkh0ZHq9yd1CPGT8xo3DW/KzLmqj+8xNUmx9RI3Y32wL9h
H/O0VsGN0FhYeLU0vBlNkb+Vs9e0wY3/qCVMo1ldjVPahz6bblYXKVxfRhCThdfS
ufUH2wqaDUozKabCeuM0xlll3PuaL2cATjUJuVWvO4Lahf6EZZBUvEgiW95wAL3q
dFxZw9hUmFC4p30p0N+fQND/7aGfwujQO++S3D8gizqzSovaFpXxNzoQ6hSUWjI0
+KsvbJXu0IguUen2p/Ka8EB0yWokYjIUH4V2kLt9jVJLuoSkejnTrFQuPIR1Qmcr
31wqWJMWWbbFBR7KrPaDnBnRej5aIyZnHIyTtgUKhO+paDGQ0IYDirgXP10MtouY
4Hl5v2OwhOwv/mPOm74EwJknFPhQThgxO8zG9sTHq5Lteb5SwaPLdZi7CruVU66p
uCol/dZqVwrb2iVD19S4MvNQiOVQEWFKeBrxxBkT+qcGIWLMsG/o1qu0+VHpWQmo
G4Adgew+7tIkak/71ss1pvUi05WsPP9KyzXrwqcFyoAmMFPtgxUIVYVc1kwYb5h3
G58Br6HXTQLV8xAN1ml8
=4989
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I lost my original keys, will be using these going forward.
Thanks,
zab
[pubkey zab2@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLabJXvbBfHZ4zH2kom+W2Kb3kYYs58j8ZygkK9rj8j2SrlokxLiLABVYK7tdlb1zgZJVYgO8flnqsOSGb2CtoQ3i3Fqk0HNq2if47LVyaLwgOyoPOhYkDDGr9WggBp+svAHALMoGvh0lemKQZpQfdMgZ33k2l2o3Udvj3tpB/KwIDAQAB
[end]
[pubkey zab2-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmh9ukHhxTY3/bDsAt7mOUETxO3sLrf70kR9Mn4p44c4NKuFF4APmeYaFfIP9N5ZkBxY+52YPCQNXdtLDAPpxrq9as+IOaxH3ZVENllml0iCuGjZWtvYVkxHXCKohMMlffgZFJeDIEEed3eIttUPsIdW8U+2XQM1zF9R77+K0ZJQIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAEBAgAGBQJRdvPLAAoJEJkeLHPsdqhZvAgP/02btw3WcVZ1CSJkfSrZ/shE
ooBPao/nq0XYY9GZdGbA2Ki/5HOKnPTyulPwCNocL3EULFzR9bCAr2ZdjujOdKOO
6RQc6QcebGvtQF21eLdffT+LiHVI6Vl1y2ls288WP4YYhBXmaf7vj+6wNHf2l/B7
wiFEZH2nfyml7fruyWa0GHmWla96rbdMfXMdJAIcu/Uv0E5AeUHhHYhrDAZFf1/0
CzdW/MvXCtan0WwrNHfFmeDx29kT9wtF3cgduyBj/K4Kw1NDGpXt3w5Hybp0xak5
mpCo+lAxpC6DgjaTvrF54Hnqe21dydUdfwTZ7dtzfPbEwK5LrAWJCpjnlYO3kote
GUYXyGccg4A6nknCrkeidJcaF1j4xpJf38XY08z48r+Wd0/n5VSDbvo6BBcOljgp
IC1YQMcnFdRcV/K7MNlm58+WTa6NqJgrqnMnHDwdwF2v4csH4hjVmOD5//u6pCNg
ghCMrTVuEP6fqFJflFdKYfG/jlX7Vm1hh0a4QobWsII2A8TBGe9x3//ZXhX3d57c
mFhMwzjnCWdUTAfGPKeT+YorOnL9YRwsoXyBm4LjKGuHAMOKYpbS+6aZV2plPgIe
QUamNO18hBy7N/YdF2DPoV41ntobkM+kVfmR0jLCbiNjisMg1eO8mQ1ynY4Kf2F1
6+WauW2gCAnDCnD/+EEh
=7u31
-----END PGP SIGNATURE-----
digit:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applicable to the code I contribute to the I2P project,
I hereby state that:
* Unless marked otherwise, all code I commit is implicitly licensed under the component's primary license
* If specified in the source, the code may be explicitly licensed under one of the component's alternate licenses
* I have the right to release the code I commit under the terms I am committing it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (MingW32)
iQEcBAEBAgAGBQJRzgXbAAoJEAhQLmhPD07oWTkH/0nonFM5g0gw5SlqLKTxuBal
OMomT+4+FFaCDgXOSXnnlw38no7c234LeKpuvlr0LLxjiRdfcsnnuvqIWmeeY4cq
m3w6xGI+wNO2c/FYwTVumJO165sPc0Rg3b8d+zdUBncactRMdxcWUJTSHPdNzW2/
tmtChmVft6SOj+qgBQEMW0IjYm/4+vg4NEO4OAg8ncogea8dubpIFJjE2UbSr7dE
jkBoHiRXn4EN20Id4puCwXQK4QbbGwJGlKAUPgZXMd7nLqu9MljwLDkDWBMY9nRl
Zf9i4Wqw8wKgkWIIbZ2+V+zP83FLcX6ga+GMr8tf/bwWjSe1PN7mZAQlPB4p8Qc=
=NxxT
-----END PGP SIGNATURE-----
</pre>
{% endblock %}

View File

@@ -0,0 +1,330 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Licenses') }}{% endblock %}
{% block content %}
<h1>{{ _('I2P Software Licenses') }}</h1>
<p>{% trans threatmodel=site_url('docs/how/threat-model') -%}
As required by our
<a href="{{ threatmodel }}">threat model</a> (among other reasons), the
software developed to support the anonymous communication
network we call I2P must be freely available, open source,
and user modifiable. To meet these criteria, we make use of
a variety of legal and software engineering techniques so
as to remove as many barriers to entry for those considering
making use of or contributing to the I2P effort.
{%- endtrans %}</p>
<p>{% trans -%}
While the information below may be more confusing than just simply
stating "I2P is BSD", "I2P is GPL", or "I2P is public domain",
the short answer to the question "How is I2P licensed?" is this:
{%- endtrans %}</p>
<h2>{{ _('All software bundled in the I2P distributions will allow:') }}</h2>
<ol>
<li>{{ _('use without fee') }}</li>
<li>{{ _('use with no restrictions on how, when, where, why, or by whom is running it') }}</li>
<li>{{ _('access to the source code without fee') }}</li>
<li>{{ _('modifications to the source') }}</li>
</ol>
<p>{% trans -%}
Most of the software guarantees much more - the ability of <b>anyone</b> to
distribute the modified source however they choose. However, not all of the
software bundled provides this freedom - the GPL restricts the ability of
developers who wish to integrate I2P with their own applications that are not
themselves open source applications. While we applaud the noble goals of
increasing the resources in the commons, I2P is best served by removing any
barriers that stand in the way of its adoption - if a developer considering whether
they can integrate I2P with their application has to stop and check with their lawyer,
or conduct a code audit to make sure their own source can be released as GPL-compatible,
we lose out.
{%- endtrans %}</p>
<h2>{{ _('Component licenses') }}</h2>
<p>{% trans -%}
The I2P distribution contains several resources, reflecting the partitioning of
the source code into components. Each component has its own license, which all
developers who contribute to it agree to - either by explicitly declaring the release
of code committed under a license compatible with that component, or by implicitly
releasing the code committed under the component's primary license. Each of these
components has a lead developer who has the final say as to what license is compatible
with the component's primary license, and the I2P project manager has the final say as
to what licenses meet the above four guarantees for inclusion in the I2P distribution.
{%- endtrans %}</p>
<table border="1">
<tr>
<td valign="top" align="left"><b>{{ _('Component') }}</b></td>
<td valign="top" align="left"><b>{{ _('Source path') }}</b></td>
<td valign="top" align="left"><b>{{ _('Resource') }}</b></td>
<td valign="top" align="left"><b>{{ _('Primary license') }}</b></td>
<td valign="top" align="left"><b>{{ _('Alternate licenses') }}</b></td>
<td valign="top" align="left"><b>{{ _('Lead developer') }}</b></td>
</tr>
<tr>
<td valign="top" align="left"><b>I2P SDK</b></td>
<td valign="top" align="left">core</td>
<td valign="top" align="left">i2p.jar</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">zzz</td>
</tr>
<tr>
<td valign="top" align="left"><b>I2P Router</b></td>
<td valign="top" align="left">router</td>
<td valign="top" align="left">router.jar</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">zzz</td>
</tr>
<tr>
<td valign="top" align="left"><b>Ministreaming</b></td>
<td valign="top" align="left">apps/ministreaming</td>
<td valign="top" align="left">mstreaming.jar</td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">mihi</td>
</tr>
<tr>
<td valign="top" align="left"><b>Streaming</b></td>
<td valign="top" align="left">apps/streaming</td>
<td valign="top" align="left">streaming.jar</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">zzz</td>
</tr>
<tr>
<td valign="top" align="left"><b>I2PTunnel</b></td>
<td valign="top" align="left">apps/i2ptunnel</td>
<td valign="top" align="left">i2ptunnel.jar</td>
<td valign="top" align="left">
<a href="#java_exception">GPL + exception</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">mihi</td>
</tr>
<tr>
<td valign="top" align="left"><b>HTTPTunnel</b></td>
<td valign="top" align="left">apps/httptunnel</td>
<td valign="top" align="left">httptunnel.jar</td>
<td valign="top" align="left">
<a href="#java_exception">GPL + exception</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">mihi</td>
</tr>
<tr>
<td valign="top" align="left"><b><a href="{{ site_url('docs/api/sam') }}">SAM</a> Bridge</b></td>
<td valign="top" align="left">apps/sam</td>
<td valign="top" align="left">sam.jar</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">human</td>
</tr>
<tr>
<td valign="top" align="left"><b><a href="{{ site_url('docs/api/sam') }}">SAM</a> perl library</b></td>
<td valign="top" align="left">apps/sam/perl</td>
<td valign="top" align="left">SAM.pm</td>
<td valign="top" align="left">
<a href="http://dev.perl.org/licenses/artistic.html">Artistic</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">BrianR</td>
</tr>
<tr>
<td valign="top" align="left"><b><a href="{{ site_url('docs/api/sam') }}">SAM</a> C library</b></td>
<td valign="top" align="left">apps/sam/c</td>
<td valign="top" align="left">libSAM</td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">Nightblade</td>
</tr>
<tr>
<td valign="top" align="left"><b><a href="{{ site_url('docs/api/sam') }}">SAM</a> Python library</b></td>
<td valign="top" align="left">apps/sam/python</td>
<td valign="top" align="left">i2p.py</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">Connelly</td>
</tr>
<tr>
<td valign="top" align="left"><b><a href="{{ site_url('docs/api/sam') }}">SAM</a> C# library</b></td>
<td valign="top" align="left">apps/sam/csharp/</td>
<td valign="top" align="left">n/a</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">smeghead</td>
</tr>
<tr>
<td valign="top" align="left"><b>Addressbook</b></td>
<td valign="top" align="left">apps/addressbook</td>
<td valign="top" align="left">addressbook.war</td>
<td valign="top" align="left">
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a></td>
<td valign="top" align="left">Ragnarok</td>
</tr>
<tr>
<td valign="top" align="left"><b>I2PSnark</b></td>
<td valign="top" align="left">apps/i2psnark</td>
<td valign="top" align="left">i2psnark.jar</td>
<td valign="top" align="left">
<a href="#java_exception">GPL + exception</a></td>
<td valign="top" align="left">&nbsp;</td>
<td valign="top" align="left">zzz</td>
</tr>
<tr>
<td valign="top" align="left"><b>Susidns</b></td>
<td valign="top" align="left">apps/susidns</td>
<td valign="top" align="left">susidns.war</td>
<td valign="top" align="left">
<a href="#java_exception">GPL + exception</a></td>
<td valign="top" align="left">&nbsp;</td>
<td valign="top" align="left">&nbsp;</td>
</tr>
<tr>
<td valign="top" align="left"><b>Susimail</b></td>
<td valign="top" align="left">apps/susimail</td>
<td valign="top" align="left">susimail.war</td>
<td valign="top" align="left">
<a href="#java_exception">GPL + exception</a></td>
<td valign="top" align="left">&nbsp;</td>
<td valign="top" align="left">&nbsp;</td>
</tr>
<tr>
<td valign="top" align="left"><b>Other apps not mentioned</b></td>
<td valign="top" align="left">apps/</td>
<td valign="top" align="left">...</td>
<td valign="top" align="left">
probably
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a>
but check the source</td>
<td valign="top" align="left">&nbsp;</td>
<td valign="top" align="left">&nbsp;</td>
</tr>
<tr>
<td valign="top" align="left"><b>Installer</b></td>
<td valign="top" align="left">installer</td>
<td valign="top" align="left">install.jar, guiinstall.jar</td>
<td valign="top" align="left">
<a href="http://en.wikipedia.org/wiki/Public_domain">Public domain</a></td>
<td valign="top" align="left"><a href="#java_exception">GPL + exception</a><br />
<a href="http://opensource.org/licenses/bsd-license.php">BSD</a><br />
<a href="http://www.cryptix.org/LICENSE.TXT">Cryptix</a><br />
<a href="http://opensource.org/licenses/mit-license.html">MIT</a></td>
<td valign="top" align="left">&nbsp;</td>
</tr>
</table>
<h3><a id="java_exception">{{ _('GPL + java exception') }}</a></h3>
<p>{% trans gpl='https://www.gnu.org/licenses/gpl.html' -%}
While it may be redundant, just for clarity the
<a href="{{ gpl }}">GPL</a>'ed code included within
I2PTunnel and other apps must be released under the GPL with an additional "exception"
explicitly authorizing the use of Java's standard libraries:
{%- endtrans %}</p>
<p><code>In addition, as a special exception, XXXX gives permission to link the
code of this program with the proprietary Java implementation provided by Sun
(or other vendors as well), and distribute linked combinations including the
two. You must obey the GNU General Public License in all respects for all of the
code used other than the proprietary Java implementation. If you modify this
file, you may extend this exception to your version of the file, but you are not
obligated to do so. If you do not wish to do so, delete this exception statement
from your version.</code></p>
<p>{% trans -%}
All source code under each component will by default be licensed under the
primary license, unless marked otherwise in the code. All of the above is
summary of the license terms - please see the specific license for the component
or source code in question for authoritative terms. Component source locations and
resource packaging may be changed if the repository is reorganized.
{%- endtrans %}</p>
<h2><a id="commit">{{ _('Commit privileges') }}</a></h2>
<p>{% trans monotone=site_url('get-involved/guides/monotone') -%}
Developers may push changes to a distributed monotone repository if you
receive permission from the person running that repository.
See the <a href="{{ monotone }}">Monotone Page</a> for details.
{%- endtrans %}</p>
<p>{% trans -%}
However, to have changes included in a release, developers
must be trusted by the release manager (currently zzz).
In addition, they must explicitly agree with the above terms to be trusted.
That means that they must send one of the release managers a signed message affirming that:
{%- endtrans %}</p>
<ul>
<li>{% trans -%}
Unless marked otherwise, all code I commit is implicitly licensed under
the component's primary license
{%- endtrans %}</li>
<li>{% trans -%}
If specified in the source, the code may be explicitly licensed under one
of the component's alternate licenses
{%- endtrans %}</li>
<li>{% trans -%}
I have the right to release the code I commit under the terms I
am committing it
{%- endtrans %}</li>
</ul>
<p>{% trans licenseagreements=site_url('get-involved/develop/license-agreements') -%}
If anyone is aware of any instances where the above conditions are not met,
please contact the component lead and/or an I2P release manager with further
information.
<a href="{{ licenseagreements }}">See developers' license agreements</a>.
{%- endtrans %}</p>
{% endblock %}

View File

@@ -0,0 +1,115 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Release Signing Key') }}{% endblock %}
{% block content %}
<p>{% trans -%}
Releases 0.7.6 and later are signed by zzz. His public key is:
{%- endtrans %}</p>
<p>
<pre>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (GNU/Linux)
mQGiBEOjTnURBADegKKrIP6pz4+n57dqo3l9QrKhIklCtIxgJkL06ZJq5fKAnMLv
GPaGXmn5vRrbo6QzHs/lGLG+ySWFWr9SsVstNKrwk+F1yGIERutl0BqMwX1esfN2
ugiZ3wB1yRu0PIrkm5cuDAFASFE+2lBjr1lfOrhw/dV+lLTcWx4NzkMzlwCgxgIk
4cqQMGaVkmtuICQdYmmMicUD/AmNSVJEm2XUvaS5fYWsHJG3+oNkdNGcx5SOMUdk
PFwcSozqvT9FeIP76OVHAshQKeftE3utOFANQ/YomXEnypmwMxLLR+GPw5pMbKlK
6p+87aJZz+SA95E3ekmh7MmndvRd5RJDboUZy2H0FKX+FgaBlpsLl0uhT6uDuM/s
7nb0A/9nEAgICOU5SeXtO3jKY+RQvKyE0AblK7xVaU+Sn8ly0zauOJD13rycVGhu
vLcAUVR3FKEjxafpvZ0ZPBo7AACjSDqAoCw/s/vt9gmrhHKiqN31PhYYLhKdfKTs
4LzWKTWKIAOwErkbYsMAXWKFT3LXsrEYvxq5j5m/6zMOwz2N7rQYenp6ICh6enop
IDx6enpAbWFpbC5pMnA+iF8EExECAB8FAkOjTnUCGwMGCwkIBwMCBBUCCAMDFgIB
Ah4BAheAAAoJEEFVdrqnbgvtxGsAn39SvQ3+ey87WDDG+TWArN6oU8gnAJ4zeAsA
LUK37WZIt8OImZSxk37uQbkCDQRDo06VEAgAy2UeqsM5a+U6ZOWS9NQiILb3KbTL
FeeAd2rn9oLSLpn5gDWycwUS0Q62JmbSMWy6m9aczpnxvwaBYXz6aCIvZmTNtaU6
vyR/6wfJDyiUWSHtCyjpyFFYJimANd8Y8dDCimvceI/ihEDVyBX0kkgUGRAn8t3e
unaLXqhbfiLiFw/GG1MNxUMzHt55/+9AqLOfRZg0riZvDoV79K+1sYSs8n1WeaVc
T3wTb+Cb7fKNN7GT1MUhcXIoYYY6FGwsy5EWFsxYBRervqHtBJog2SoNUa/6BFGr
zX+LDjK9L3xMTr3+fHIt4gPR/Lt4nnfEzL+rjClz/Fazmv38BRwPuKahFwADBQgA
nD/AvZCnbWSB6khAVMqva5ROaD0gV0/UejCelZdYfgfHeCmrcMNQ+wCyww2NPsih
9vB1w+AUE0pdH37k65VZN+2falUdzN+PFugJGuH2pmlVOprH2SuC5gKpGRvzUqV5
U0nJmT2okDpW/52asUDJJLu1g//A3qBP83WGvSKUZg/ZisZA0qTiHH4QpjklopXi
sSxR2hT8Fr9gF9WmDa09wbxE2xh/EL7gvVg/vk0gwOJcsFd67bNC+KUMOnjhOP0T
K0/Ah4TEEs/hHNe9RsyyWlMoIUsF8AhG71ISOrJ5lLSXNe151XEb5FzZRM8sD9Zq
0E3PjmLbdVhanYvsPnWK6YhJBBgRAgAJBQJDo06VAhsMAAoJEEFVdrqnbgvtXTwA
njMu9ueCFbsjme7nwsz96PdazJcHAKCce17hGI25QNXDZyHohrjha6IxDg==
=fAfi
-----END PGP PUBLIC KEY BLOCK-----
</pre>
<p>{% trans -%}
Releases 0.6.1.31 through 0.7.5 were signed by Complication. His public key is:
{%- endtrans %}</p>
<p>
<pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
I certify that below is my new public key, issued on 2007-11-24,
valid until 2009-11-23, and its key fingerprint is:
73CF 2862 87A7 E7D2 19FF DB66 FA1D FC6B 79FC CE33
If you have my old public key, and use it to verify this,
you will notice that my old key expired on 2007-11-15.
Apologies for being late with this update.
For people who want to copy the key directly from this message,
but aren't reading this using an e-mail program, please remember
to delete the "- " escape sequences from the start and end marker
of the public key block. Otherwise it won't be recognized.
Complication.
- -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)
mQGiBEdH5SYRBACzCum9jIjq+/G7ckuZ/TcFmaVYeBRE6OXPQozyrmTYtoCM2qGj
DmvMJvKYiNiQVM42KiwlnqvaNtlgnXIZ6rcyLyn+bCI5cdX1SD5Rr5tgsgcXYA6Z
l7usiFv1bTjD67piBehF130o+LZAJnVzI7JdpbA9SBY0mUwgKXLi0DAo8wCgiKOV
UXC8+9X9vU1Mh/GyIrD4c3kD/iQOkYH4ajNaehTHNB31K+61ltpK9tMmcWtUY30A
Z3q38jg/nmqqup/MYCtkvOqY4X9kujKzu01eSWSNZIE+BQSSd1cSsVD17OY3TL6B
EvE+UFxh8OnDKs3tzJ0COnT/2zbgTavbWwqovoUE0P0PSYOFm2Co0BEQiCt9Tabc
CxU3BACRWDvq7LFMRnHT+/OOJS6M442CYzy3+tIuc3ZAmZ8QwGsh4r1kd+5P1JTN
YJCun6MPQEllJbRyHRBby76vFkWearRgnkpAmk2l1T2SXw3lip/SdmI0GgIzPSfQ
8WyNbMjQXyH8/3k2Y9rgrC0DttrJPYOcTFMNKPpeTR+HN3ZnibQ+Q29tcGxpY2F0
aW9uIChodHRwOi8vY29tcGxpY2F0aW9uLmkycCkgPGNvbXBsaWNhdGlvbkBtYWls
LmkycD6IZQQTEQIAJQUCR0flJgIbAwUJA8JnAAYLCQgHAwIEFQIIAwMWAgECHgEC
F4AACgkQ+h38a3n8zjP1yACfWkF1zjmlD0EzLaJRnefW5OHr10MAn0fgMyElK6ee
AoPl2mTfxQQYOophuQQNBEdH5SYQEACTcoMJQBhyrr+EunLmEGNMO7D6RSBAtEKZ
i5ctmhr/TCXMV9qjXkWISLZ9AS6z88rKozeOOK+QPBnc2FcEf77N04O5hwSdAyPH
Qt7+umhiNQFQpZycJ5W87Y0ryERJygA5XyU47g7CGvuuOLgKGk0dDGCNFZGSblwI
xtSh1CsrjWp23grFiBS0xvlU2VyuYUyrBuH5ip04pxmOyeRcaelkQerFhEXSRIR7
XFxl6JpfqWt2oWHmYbYD3RT6WHU+rpSF1Hyey+zoF2zXfRb+JD90MpBL1xIkpieQ
Y69Cj5U5VRjEppJJowSmwgz+UyMnT2KLl45vJesPrMUaSgduHiIQo4LM5BcbbV+2
SC5i9xqbSJ+rc19Ftt9IEUZVMLole9PJC5Ff/h1qsabyueFuMIQkbiaUiNLOKl31
I+JAiDt0Xku2PEVCERg7Jq5AsTLB9D+zKqxbvFu+JvqSdlaCvlas2BYU5rBosszH
TStK2XW/+poTKnjnbJl6nGC06BNQPhRFAwuXboyUC5fyiuG1HohvPmPIi6IejLUY
G8A5nZ+7um/XpKlt2i5rdVRfN1BX3+aKHQeLmrc+EIORZUU32TrP4ceLtSDf+JOW
8N3vwzqKIPu42Y5KB8vnXEFSOkyt36OfEd6CcPKmncDyA4wJmfC+X3eoKcj+Yrh7
UMr0elyw4wADBg/9F7g+bTpT4wPXj5ax1i+4BdedjVlO3YBdhc4LP6MXipNU6yLl
l63TJ8q/l8pvSkUWZXrO3a7OibM/MHp0Te/7sTmKib2/3MFwHTrtjgcZBF6wx8LD
T3oa6O0IK8IRnRwNqeu83SxojvVY0wLz/hpUbnIrOcHMZjWLMJEfHkNBHn+1HhT5
tk9LRGu3j1oTpGh+DpdoPF5fggNu48YJ6n7etJJGW2MXQ++33aKeQSFrx+KlMtFW
DSzg3KKSroB8Ex9wiKKWybagaed0YoP9BW3vIAaOeDpqK92UuTFz1Bte1DYiYU1e
Rqq1xoBVhJXE5xzGmvS4/PIZMOL/bpKcuNxAgmwOVoaYoWZuIgePUaBbNvNg84HE
RBjFMyfpzRCdPlWPZ18KcLUki3T58KzXEZ7WS5hC5lezwC6ET+wJusAt0A+Ik146
igayKfVnvhedQdqufWhQWNr+hDc5Fb/az8nTyNOflAhD3yHldjxgkCOV8wjqyS+4
iO33P5wW7o2QkZNWq8pyjsKRRJCtZ/PJ7FRGkUOjoC/gwhnGvBi0KoDcyBmfnPXp
3MAgrzk9LwiA7PlS7PyhyMx5mYpa90xlXzszweCIXzGfbm6ciCUAM3G3Qb+qa2dW
0u1X5L6bVtHVpYnr+5JOxCS4qwQvoK0QnHu6ezu4+rFutUJN35z6rFquejiITwQY
EQIADwUCR0flJgIbDAUJA8JnAAAKCRD6HfxrefzOMzSZAJ9PmYNkW4Ia1qPqowg9
z4Ja+hJ3dgCeL3mqvOEHG7AcUQrSlc6xlC1vbNY=
=rGxK
- -----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
iD8DBQFHR/zm4tLxqYRsGn0RAtCfAJ9rz+tsyEbeUAHcogdzgSPfuiWOAwCfWaVn
Aiib6V5wOPbYTy13ADmxhfE=
=mPFq
-----END PGP SIGNATURE-----
</pre>
{% endblock %}

View File

@@ -0,0 +1,176 @@
{% extends "global/layout.html" %}
{% block title %}{{ _('Signed Developer Keys') }}{% endblock %}
{% block content %}
<p>{% trans -%}
Keys for zzz, Complication and welterde are provided clearsigned. The key for jrandom must be
verified differently, since he's away, and only left a binary detached
signature for his key.
{%- endtrans %}</p>
<ol>
<li><a href="#monotone-keys-for-zzz">{{ _('Monotone keys for zzz') }}</a></li>
<li><a href="#monotone-keys-for-welterde">{{ _('Monotone keys for welterde') }}</a></li>
<li><a href="#monotone-keys-for-complication">{{ _('Monotone keys for Complication') }}</a></li>
<li><a href="#monotone-keys-for-jrandom">{{ _('Monotone keys for jrandom') }}</a></li>
<li><a href="#other-developer-keys">{{ _('Others') }}</a></li>
</ol>
<h3 id="monotone-keys-for-zzz">{{ _('Monotone keys for zzz') }}</h3>
<p>{% trans -%}
<u>Tip:</u> To find zzz's GPG key, on his eepsite locate the key `0xA76E0BED`, with
the name `zzz@mail.i2p` and the fingerprint `4456 EBBE C805 63FE 57E6 B310 4155
76BA A76E 0BED`.
{%- endtrans %}</p>
<code><pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[pubkey zzz-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDa2uZI1BobxS4TapMqmf4Ws3nyL3GYgkfb
MEawyWl0E1pfHJ4dLZkdxQdcLyCsN9OCY4jRNzmoYnDa2HtBLINq15BJmGJ0cfIDLXIB2GBO
ViAPRkEKQTVoc7IpcjtPPjtSBVganD/AW78m9cgUYag86Lbm2ynUaXWpw9i4gpLdLQIDAQAB
[end]
[pubkey zzz@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtgaWY0Wc1c8pFGIxASZx78pHpHZKQV8z6
IRQkgy65gQMjpLquaQpy3Xk8rkpnfA+6h3TS6bjplsEhlaQoxvpGxacRYOt+y1HC/n20O3RI
E1A/e3sGKHGDEQW+3ItF4WSNfeQ18DzLeun32vFknq2k9im6Ts4tiYfKs8CZ5KW0/QIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHnN51QVV2uqduC+0RAv8NAJ9B/7pWKLvqVI6HnAifs9oedsdWSACfYS1E
sFwJiw4A+Sr9wQrtoO4X4ow=
=SVDV
-----END PGP SIGNATURE-----
</pre></code>
<h3 id="monotone-keys-for-welterde">{{ _('Monotone keys for welterde') }}</h3>
<p>{% trans -%}
<b>Tip:</b> To find welterde's GPG key, on public keyservers locate the key
`0x62E011A1`, with the name `welterde@arcor.de` and the fingerprint `6720 FD81
3872 6DFC 6016 64D1 EBBC 0374 62E0 11A1`.
{%- endtrans %}</p>
<code><pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[pubkey dev@welterde.de]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRnJUBY0d4310UpZYGUlsWgxWHoD8bsKtT
vGw83vwUQRtM2xPKxCHvEntg9Dgiqr5RurOKHK7Eak6WgxCXQFfC9ALr4SoC5abI4ZFvM/CA
WRb547UIPTchSnuDUn/TSgDGqtGvMFS9t6OUp9Z/7QzIjLQhhBCqj4/hZhxUJ61XBwIDAQAB
[end]
[pubkey transport@welterde.de]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCujyq15a7t0Gki/sKoZQbv7CHJWbT3YB5O
DQyU3zfqXnHNj82tz6wVsvjZmKUYZvax7wLLRErMGX3PTGxb23I5iypLmYtWt+lbkxMZdcGT
GEXBU8JnAfhnSIdLzBJ2soe55vBQp0Tx1Ta+7/CNYwVPUxr5l6J/2gcGFJg3cAD99wIDAQAB
[end]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
iD8DBQFHojoC67wDdGLgEaERAsALAKCwNlkNFaTyC4pV4rsinXQ8hu7UvgCbBeeV
Ni/uLlSdl3Kz7KfVipwnjm4=
=oE5t
-----END PGP SIGNATURE-----
</pre></code>
<h3 id="monotone-keys-for-complication">{{ _('Monotone keys for Complication') }}</h3>
<p>{% trans -%}
<b>Tip:</b> To find Complication's GPG key, on his eepsite locate the key
`0x79FCCE33`, with the name `complication@mail.i2p` and the fingerprint `73CF
2862 87A7 E7D2 19FF DB66 FA1D FC6B 79FC CE33`.
{%- endtrans %}</p>
<code><pre>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I confirm that my Monotone commit and transport keys are:
[pubkey complication@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCx1F6nwBUCIiCPVsogy/h/+2d8X3uMcEdn
RIN+gxO+0pK+yrGZiFwi7TG/K3PjDfJWuxsPRKLeb9Q4NmfxrAePelGig9llalrDnRkIcRFu
cnNUOJo9C0MjvzYR9D6bIS3+udPdl6ou94JX+ueo2jLXI1lGgtdWDWTetJx9I++EvwIDAQAB
[end]
[pubkey complication-transport@mail.i2p]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP55FmBUIZjamtDinVDrLmS9uU40KoNfLd
iB+t/iEgEWHDPQxlwugh/aBQwsXKGGJMJSNURKwwjfrcr5y3oz9jpRjtLVqoZMBVLgp28WGA
9KbzXi4/dYhdyNmr4gHc17mDSlhCfk/L5QxifSYwSaeeFPsoAAyBBB221Z3197bmVQIDAQAB
[end]
Complication.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFHpdQT+h38a3n8zjMRAtW8AJ0fmuw1hrZePDzOx61xSh5cK27ikQCeJn+U
g8X/m/JAsedzOFJDN0tlTig=
=LM+C
-----END PGP SIGNATURE-----
</pre></code>
<h3 id="monotone-keys-for-jrandom">{{ _('Monotone keys for jrandom') }}</h3>
<p>{% trans -%}
<b>Tip:</b> To find jrandom's GPG key for Syndie releases, on public keyservers locate
the key `0x393F2DF9`, with the name `syndie-dist-key@i2p.net` and the
fingerprint `AE89 D080 0E85 72F0 B777 B2ED C2FA 68C0 393F 2DF9`.
{%- endtrans %}</p>
<p>{% trans -%}
Jrandom had to leave unexpectedly in the end of 2007. His commit key was
deployed in the Syndie Monotone repository, in a file named `mtn-committers`.
That file also had a GPG signature, `mtn-committers.sig`, but it was a binary
detached signature. I am going to supply both files in GPG ASCII-armoured form
below.
{%- endtrans %}</p>
<p>{% trans -%}
First, the file `mtn-committers` containing jrandom's Monotone key. Save as
`mtn-committers.asc` and unpack it using `gpg --output mtn-committers --dearmor
mtn-committers.asc`:
{%- endtrans %}</p>
<code><pre>
-----BEGIN PGP ARMORED FILE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Use "gpg --dearmor" for unpacking
W3B1YmtleSBqcmFuZG9tQGkycC5uZXRdCk1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFV
QUE0R05BRENCaVFLQmdRRE9MdzA1a1pidXg1S0xkcHJjR0hlQ1RseXQrR2poR1ho
NwpBdXBzK1FNRC9GRWJJVkVGUEdJQkcyanUzMDY5VEtJSHBYcjVIRWU1bWFCZ3RJ
SkJNOU5QVnZNTkZDZ09TcmVnbW5WSXB4U2cKSGQrV2l1MUl5emhkMFN4QzVwQ0hk
bndTanYwNTFmY3RZY3AxcnM1T2NVb2pVZHZGN3RxOTF6QUFZK2tMeHBYNnpRSURB
UUFCCltlbmRdCg==
=035X
-----END PGP ARMORED FILE-----
</pre></code>
<p>{% trans -%}
Now the file `mtn-committers.sig`, containing the GPG signature. Save as
`mtn-committers.sig.asc` and unpack it using `gpg --output mtn-committers.sig
--dearmor mtn-committers.sig.asc`. Use it to verify the above supplied
`mtn-committers` file:
{%- endtrans %}</p>
<code><pre>
-----BEGIN PGP ARMORED FILE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Use "gpg --dearmor" for unpacking
iD8DBQBFLssNwvpowDk/LfkRAtytAKCOiaDIveC3sri0lrdvwxt/TQciigCfXgyC
ZY3qq910P/TX94qoJGePbuc=
=8NHt
-----END PGP ARMORED FILE-----
</pre></code>
<h3 id="other-developer-keys">{{ _('Others') }}</h3>
<p>{% trans licenseagreements=site_url('get-involved/develop/license-agreements') -%}
Some of the developers have included their Monotone keys in their <a href="{{ licenseagreements }}">signed license agreement</a>.
{%- endtrans %}</p>
{% endblock %}