class Net::SSH::Transport::ChaCha20Poly1305Cipher

def initialize(encrypt:, key:)

def initialize(encrypt:, key:)
  @chacha_hdr = OpenSSL::Cipher.new("chacha20")
  key_len = @chacha_hdr.key_len
  @chacha_main = OpenSSL::Cipher.new("chacha20")
  @poly = RbNaCl::OneTimeAuths::Poly1305
  if key.size < key_len * 2
    error { "chacha20_poly1305: keylength doesn't match" }
    raise "chacha20_poly1305: keylength doesn't match"
  end
  if encrypt
    @chacha_hdr.encrypt
    @chacha_main.encrypt
  else
    @chacha_hdr.decrypt
    @chacha_main.decrypt
  end
  main_key = key[0...key_len]
  @chacha_main.key = main_key
  hdr_key = key[key_len...(2 * key_len)]
  @chacha_hdr.key = hdr_key
end