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