Skip to content

SshChacha20Poly1305Context

[Source]

chacha20-poly1305@openssh.com cipher context. Uses two ChaCha20 keys: main_key (payload) and header_key (packet length). Nonce is derived from the packet sequence number.

class ref SshChacha20Poly1305Context

Constructors

create

[Source]

Key material must be 64 bytes: main_key (0-31) || header_key (32-63).

new ref create(
  key_material: Array[U8 val] val)
: SshChacha20Poly1305Context ref^ ?

Parameters

Returns


Public Functions

encrypt

[Source]

Encrypt a complete SSH packet (packet_length || padding_length || payload || padding). Returns: encrypted_length || encrypted_body || poly1305_tag

fun ref encrypt(
  sequence_number: U32 val,
  plaintext_packet: Array[U8 val] val)
: (Array[U8 val] val | SshCryptoError)

Parameters

  • sequence_number: U32 val
  • plaintext_packet: Array[U8 val] val

Returns


decrypt

[Source]

Decrypt a chacha20-poly1305 packet. Input: encrypted_length(4) || encrypted_body(N) || tag(16) Returns: packet_length || padding_length || payload || padding

fun ref decrypt(
  sequence_number: U32 val,
  data: Array[U8 val] val)
: (Array[U8 val] val | SshCryptoError)

Parameters

  • sequence_number: U32 val
  • data: Array[U8 val] val

Returns