## Uses of Class
com.southernstorm.noise.protocol.HandshakeState

- Packages that use HandshakeState
  Package | Description
  --- | ---
  com.southernstorm.noise.protocol | Provides classes for communicating via the Noise protocol.
  net.i2p.router.crypto.ratchet | Implementation of ECIES-X25519-AEAD-Ratchet cryptographic protocol (I2P proposal 144), providing forward secrecy and enhanced security for I2P transport communications.
  net.i2p.router.transport.ntcp | The NTCP (New TCP) transport for I2P, allowing I2P messages to be passed over TCP connections.
  net.i2p.router.transport.udp | The UDP transport (also known as 'SSU' or Secure Semi-reliable UDP transport) for I2P, allowing I2P messages to be passed over UDP connections.

- - ### Uses of HandshakeState in com.southernstorm.noise.protocol

    Methods in com.southernstorm.noise.protocol that return HandshakeState
    Modifier and Type | Method and Description
    --- | ---
    `HandshakeState` | HandshakeState.`clone()` I2P Must be called before both eph.

    Constructors in com.southernstorm.noise.protocol with parameters of type HandshakeState
    Constructor and Description
    `HandshakeState(HandshakeState o)` Copy constructor for cloning

  - ### Uses of HandshakeState in net.i2p.router.crypto.ratchet

    Methods in net.i2p.router.crypto.ratchet that return HandshakeState
    Modifier and Type | Method and Description
    --- | ---
    `HandshakeState` | RatchetTagSet.`getHandshakeState()` For inbound/outbound NSR only, else null.
    `HandshakeState` | SessionKeyAndNonce.`getHandshakeState()` For inbound NSR only, else null.

    Methods in net.i2p.router.crypto.ratchet with parameters of type HandshakeState
    Modifier and Type | Method and Description
    --- | ---
    `(package private) boolean` | RatchetSKM.`createSession(PublicKey target, Destination d, HandshakeState state, ReplyCallback callback)` Inbound or outbound.
    `(package private) boolean` | RatchetSKM.`updateSession(PublicKey target, HandshakeState oldState, HandshakeState state, ReplyCallback callback, SplitKeys split)` Inbound or outbound.

    Constructors in net.i2p.router.crypto.ratchet with parameters of type HandshakeState
    Constructor and Description
    `RatchetTagSet(HKDF hkdf, HandshakeState state, SessionKey rootKey, SessionKey data, long date)` Outbound NSR Tagset
    `RatchetTagSet(HKDF hkdf, SessionTagListener lsnr, HandshakeState state, SessionKey rootKey, SessionKey data, long date, int minSize, int maxSize)` Inbound NSR Tagset
    `SessionKeyAndNonce(HandshakeState state)` For New Session Replies
    `SplitKeys(HandshakeState state, HKDF hkdf)`

  - ### Uses of HandshakeState in net.i2p.router.transport.ntcp

    Methods in net.i2p.router.transport.ntcp with parameters of type HandshakeState
    Modifier and Type | Method and Description
    --- | ---
    `(package private) static byte[][]` | OutboundNTCP2State.`generateSipHashKeys(RouterContext ctx, HandshakeState state)` KDF for SipHash

  - ### Uses of HandshakeState in net.i2p.router.transport.udp

    Methods in net.i2p.router.transport.udp that return HandshakeState
    Modifier and Type | Method and Description
    --- | ---
    `HandshakeState` | OutboundEstablishState2.`getHandshakeState()`
    `HandshakeState` | InboundEstablishState2.`getHandshakeState()`