Libp2p.Noise.HandshakePayloadPB (libp2p_elixir v0.9.0)

Protobuf encoding/decoding for NoiseHandshakePayload (noise-libp2p spec).

From noise/README.md:

  • field 1: identity_key (bytes) = serialized libp2p PublicKey protobuf
  • field 2: identity_sig (bytes)
  • field 4: extensions (NoiseExtensions)

Summary

Types

extensions()

@type extensions() :: %{
  optional(:webtransport_certhashes) => [binary()],
  optional(:stream_muxers) => [binary()]
}

Functions

decode(bin)

@spec decode(binary()) :: %{
  identity_key: binary(),
  identity_sig: binary(),
  extensions: binary() | nil
}

decode_extensions(ext_bin)

@spec decode_extensions(binary() | nil) :: %{
  webtransport_certhashes: [binary()],
  stream_muxers: [binary()]
}

encode(msg)

@spec encode(%{
  optional(:extensions) => binary() | nil,
  identity_key: binary(),
  identity_sig: binary()
}) ::
  binary()

encode_extensions(ext)

@spec encode_extensions(extensions()) :: binary()

Encode a NoiseExtensions message.

Currently used for stream_muxers (field 2) as described in libp2p_specs/noise/README.md.