X25519 key agreement using ephemeral key pairs.

Note that unless this key agreement is combined with an authentication method, such as public key signatures, it's vulnerable to man-in-the-middle attacks.

Implements

Constructors

Properties

acceptMessageLength: 32 = ACCEPT_MESSAGE_LENGTH

Accept message length in bytes

offerMessageLength: 32 = OFFER_MESSAGE_LENGTH

Offer message length in bytes

savedStateLength: 32 = SAVED_STATE_LENGTH

Saved state length in bytes *

sharedKeyLength: 32 = SHARED_KEY_LENGTH

Shared key length in bytes *

Methods

  • Accept offer message and return new accept message, which should be sent back to the offering party.

    Also derives shared key, so the accepting party can call getSharedKey() right after calling accept.

    Parameters

    • offerMsg: Uint8Array

    Returns Uint8Array

  • Offering party finishes key agreement by receiving accept message and passing it to finish(). After calling finish(), offering party can call sharedKey() to get shared key.

    Parameters

    • acceptMsg: Uint8Array

    Returns this

  • Returns the agreed shared key.

    • Offering party should call this after finish().
    • Accepting party should call this after accept().

    Returns Uint8Array

  • Offer returns a new offer message, which should be send to the accepting party.

    Returns Uint8Array

  • Serializes secret offering party state into byte array.

    This function should be called after offer() if the offering party cannot keep KeyAgreement instance in memory. When it receives accept message, it can create a new instance and call restoreState() on it with the serialized state to recover to continue the agreement.

    Returns Uint8Array