net.i2p.client

## Interface I2PClient

- All Known Implementing Classes:
    I2PClientImpl, I2PSimpleClient

      public interface I2PClient

  Define the standard means of interacting with the I2P system An I2PClient contains no state, it is just a facility for creating private key files and generating sesssions from existing private key files.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_LISTEN_PORT` 7654
    `static SigType` | `DEFAULT_SIGTYPE` Default signature type.
    `static String` | `PROP_ENABLE_SSL` Enable SSL for I2CP connection.
    `static String` | `PROP_FAST_RECEIVE` For router->client payloads.
    `static String` | `PROP_GZIP` Enable gzip compression for I2CP messages.
    `static String` | `PROP_PW` Password for I2CP authentication.
    `static String` | `PROP_RELIABILITY` Reliability property
    `static String` | `PROP_RELIABILITY_BEST_EFFORT` Reliability value: best effort
    `static String` | `PROP_RELIABILITY_GUARANTEED` Reliability value: guaranteed
    `static String` | `PROP_RELIABILITY_NONE` Reliability value: none.
    `static String` | `PROP_SIGTYPE` Destination signature type property.
    `static String` | `PROP_TCP_HOST` Standard host property, defaulting to localhost if not specified
    `static String` | `PROP_TCP_PORT` Standard port number property
    `static String` | `PROP_USER` Username for I2CP authentication.
    `static int` | `PROTOCOL_BYTE` protocol flag that must be sent when opening the i2cp connection to the router

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | `createDestination(OutputStream destKeyStream)` 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 Caller must close stream.
    `Destination` | `createDestination(OutputStream destKeyStream, Certificate cert)` Create a new destination with the given certificate and store it, along with the private encryption and signing keys at the specified location Caller must close stream.
    `Destination` | `createDestination(OutputStream destKeyStream, SigType type)` Create a destination with the given signature type.
    `I2PSession` | `createSession(InputStream destKeyStream, Properties options)` 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.

- - ### Field Detail

    - #### DEFAULT_LISTEN_PORT

          static final int DEFAULT_LISTEN_PORT

      7654
      See Also:
        Constant Field Values

    - #### DEFAULT_SIGTYPE

          static final SigType DEFAULT_SIGTYPE

      Default signature type. @since 0.9.12

    - #### PROP_ENABLE_SSL

          static final String PROP_ENABLE_SSL

      Enable SSL for I2CP connection. @since 0.9.44, was protected in I2PSessionImpl
      See Also:
        Constant Field Values

    - #### PROP_FAST_RECEIVE

          static final String PROP_FAST_RECEIVE

      For router->client payloads. If false, the router will send the MessageStatus, the client must respond with a ReceiveMessageBegin, the router will send the MessagePayload, and the client respond with a ReceiveMessageEnd. If true, the router will send the MessagePayload immediately, and will not send a MessageStatus. The client will not send ReceiveMessageBegin or ReceiveMessageEnd. Default false, but the implementation in this package sets to true.
      See Also:
        Constant Field Values

    - #### PROP_GZIP

          static final String PROP_GZIP

      Enable gzip compression for I2CP messages. @since 0.9.46
      See Also:
        Constant Field Values

    - #### PROP_PW

          static final String PROP_PW

      Password for I2CP authentication. @since 0.9.44, was protected in I2PSessionImpl
      See Also:
        Constant Field Values

    - #### PROP_RELIABILITY

          static final String PROP_RELIABILITY

      Reliability property
      See Also:
        Constant Field Values

    - #### PROP_RELIABILITY_BEST_EFFORT

          static final String PROP_RELIABILITY_BEST_EFFORT

      Reliability value: best effort
      See Also:
        Constant Field Values

    - #### PROP_RELIABILITY_GUARANTEED

          static final String PROP_RELIABILITY_GUARANTEED

      Reliability value: guaranteed
      See Also:
        Constant Field Values

    - #### PROP_RELIABILITY_NONE

          static final String PROP_RELIABILITY_NONE

      Reliability value: none. @since 0.8.1
      See Also:
        Constant Field Values

    - #### PROP_SIGTYPE

          static final String PROP_SIGTYPE

      Destination signature type property. @since 0.9.12
      See Also:
        Constant Field Values

    - #### PROP_TCP_HOST

          static final String PROP_TCP_HOST

      Standard host property, defaulting to localhost if not specified
      See Also:
        Constant Field Values

    - #### PROP_TCP_PORT

          static final String PROP_TCP_PORT

      Standard port number property
      See Also:
        Constant Field Values

    - #### PROP_USER

          static final String PROP_USER

      Username for I2CP authentication. @since 0.9.44, was protected in I2PSessionImpl
      See Also:
        Constant Field Values

    - #### PROTOCOL_BYTE

          static final int PROTOCOL_BYTE

      protocol flag that must be sent when opening the i2cp connection to the router
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### createDestination

          Destination createDestination(OutputStream destKeyStream)
                                 throws I2PException,
                                        IOException

      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 Caller must close stream.
      Parameters:
        `destKeyStream` - create a new destination and write out the object to the given stream, formatted as Destination, PrivateKey, and SigningPrivateKey format is specified in `PrivateKeyFile`
      Returns:
        new destination
      Throws:
        `I2PException`
        `IOException`

    - #### createDestination

          Destination createDestination(OutputStream destKeyStream,
                                        Certificate cert)
                                 throws I2PException,
                                        IOException

      Create a new destination with the given certificate and store it, along with the private encryption and signing keys at the specified location Caller must close stream.
      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`
        `IOException`

    - #### createDestination

          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.
      Parameters:
        `destKeyStream` - location to write out the destination, PrivateKey, and SigningPrivateKey, format is specified in `PrivateKeyFile`
      Throws:
        `I2PException`
        `IOException`

    - #### createSession

          I2PSession createSession(InputStream destKeyStream,
                                   Properties options)
                            throws I2PSessionException

      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. As of 0.9.19, defaults in options are honored.
      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