java.lang.Object
net.i2p.client.impl.I2PClientImpl
All Implemented Interfaces:
I2PClient

public class I2PClientImplextends Object implements I2PClient
Base client implementation. An I2PClient contains no state, it is just a facility for creating private key files and generating sesssions from existing private key files.
  • Field Details

    • PADDING_ENTROPY

      private static final int PADDING_ENTROPY
      Bytes of random data behind the padding pattern.
      See Also:
    • _context

      private final I2PAppContext _context
      The router context the client runs in.
  • Constructor Details

    • I2PClientImpl

      public I2PClientImpl()
      Construct a client bound to the global application context.
    • I2PClientImpl

      public I2PClientImpl(I2PAppContext ctx)
      Construct a client bound to a specific application context.
      Parameters:
      ctx - the context the sessions created here will belong to
  • Method Details

    • createDestination

      public Destination createDestination(OutputStream destKeyStream) throws I2PException, IOException
      Create a destination with a DSA 1024/160 signature type and a null certificate. This is not bound to the I2PClient, you must supply the data back again in createSession(InputStream, Properties).

      Caller must close stream.

      Specified by:
      createDestination in interface I2PClient
      Parameters:
      destKeyStream - location to write out the destination, PrivateKey, and SigningPrivateKey, format is specified in PrivateKeyFile
      Returns:
      the new destination, whose keys have been written to the stream
      Throws:
      I2PException - on I2P protocol error
      IOException - on IO error
    • createDestination

      public Destination createDestination(OutputStream destKeyStream, SigType type) throws I2PException, IOException
      Create a destination with the given signature type. It will have a null certificate for DSA 1024/160 and KeyCertificate otherwise. This is not bound to the I2PClient, you must supply the data back again in createSession().

      Caller must close stream.

      Specified by:
      createDestination in interface I2PClient
      Parameters:
      destKeyStream - location to write out the destination, PrivateKey, and SigningPrivateKey, format is specified in PrivateKeyFile
      type - the signature type for the destination
      Returns:
      the new destination, whose keys have been written to the stream
      Throws:
      I2PException - on I2P protocol error
      IOException - on IO error
    • createDestination

      public Destination createDestination(OutputStream destKeyStream, Certificate cert) throws I2PException, IOException
      Create the destination with the given payload and write it out along with the PrivateKey and SigningPrivateKey to the destKeyStream

      If cert is a KeyCertificate, the signing keypair will be of the specified type. The KeyCertificate data must be ............................. The padding if any will be randomized. The extra key data if any will be set in the key cert.

      Caller must close stream.

      Specified by:
      createDestination in interface I2PClient
      Parameters:
      destKeyStream - location to write out the destination, PrivateKey, and SigningPrivateKey, format is specified in PrivateKeyFile
      cert - certificate to tie to the destination
      Returns:
      newly created destination
      Throws:
      I2PException - on I2P protocol error
      IOException - on IO error
    • createSession

      public I2PSession createSession(InputStream destKeyStream, Properties options) throws I2PSessionException
      Create a new session (though do not connect it yet).
      Specified by:
      createSession in interface I2PClient
      Parameters:
      destKeyStream - location from which to read the Destination, PrivateKey, and SigningPrivateKey from, format is specified in PrivateKeyFile
      options - set of options to configure the router with, if null will use System properties
      Returns:
      new session allowing a Destination to receive all of its messages and send messages to any other Destination.
      Throws:
      I2PSessionException - if there is a problem creating the session
    • createSession

      public I2PSession createSession(I2PAppContext context, InputStream destKeyStream, Properties options) throws I2PSessionException
      Create a new session (though do not connect it yet).
      Parameters:
      context - the I2PAppContext to use
      destKeyStream - location from which to read the Destination, PrivateKey, and SigningPrivateKey from, format is specified in PrivateKeyFile
      options - set of options to configure the router with, if null will use System properties
      Returns:
      the newly created session, not yet logged in
      Throws:
      I2PSessionException - if the stream does not hold a valid Destination, PrivateKey and SigningPrivateKey