Defines a certificate that can be attached to various I2P structures, such
as RouterIdentity and Destination, allowing routers and clients to help
manage denial of service attacks and the network utilization.
If a class started via clients.config implements this interface,
it will be used to manage the client, instead of starting with main()
Clients implementing this interface MUST provide the following constructor:
public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args) {...}
All parameters are non-null.
Contains a really simple ClientApp "structure" and some static methods
so they can be used both by LoadClientAppsJob and by the configuration
page in the router console.
Async writer class so that if a client app hangs, they wont take down the
whole router with them (since otherwise the JobQueue would block until
the client reads from their i2cp socket, causing all sorts of bad things to
happen)
For external I2CP connections only.
Define the current options for the con (and allow custom tweaking midstream)
TODO many of these are not per-connection options, and should be migrated
somewhere so they aren't copied for every connection
Determine if we have received a session key associated with the given session tag,
and if so, discard it (but keep track for frequent dups) and return the decryption
key it was received with (via tagsReceived(...)).
Determine if we have received a session key associated with the given session tag,
and if so, discard it (but keep track for frequent dups) and return the decryption
key it was received with (via tagsReceived(...)).
Send a series of searches to the next available peers as selected by
the routing table, but making sure no more than SEARCH_BREDTH are outstanding
at any time
Convert any kind of destination String to a hash
Supported:
Base64 dest
Base64 dest.i2p
Base64 Hash
Base64 Hash.i2p
Base32 Hash
Base32 desthash.b32.i2p
example.i2p
Create a new destination with the default certificate creation properties and store
it, along with the private encryption and signing keys at the specified location
Allow the app to specify the data clove directly, which enables OutboundClientMessage to resend the
same payload (including expiration and unique id) in different garlics (down different tunnels)
This is called from OCMOSJ
Create a socket manager using the destination loaded from the given private key
stream and connected to the I2CP router on the specified machine on the given
port
Place the asymmetrically encrypted record in the specified record slot,
containing the hop's configuration (as well as the reply info, if it is an outbound endpoint)
Writes 6 files: router.info (standard RI format),
router,keys, and 4 individual key files under keyBackup/
router.keys file format: Note that this is NOT the
same "eepPriv.dat" format used by the client code.
Create a new client session for the Destination stored at the destKeyStream
using the specified options to both connect to the router, to instruct
the router how to handle the new session, and to configure the end to end
encryption.
Prime for ElGamal from http://tools.ietf.org/html/rfc3526
Primes for DSA: Generated by TheCrypto http://article.gmane.org/gmane.comp.security.invisiblenet.iip.devel/343