class Net::SSH::Transport::Kex::Curve25519Sha256

def self.ensure_supported!

def self.ensure_supported!
  unless OpenSSL::PKey.respond_to?(:generate_key) && OpenSSL::PKey.respond_to?(:new_raw_public_key)
    raise UnsupportedError, "OpenSSL::PKey raw public key APIs are unavailable"
  end
  key = generate_x25519_key
  public_key = new_raw_public_key(key.raw_public_key)
  validate_key_bytes!(key.derive(public_key), "shared secret", KEY_BYTES)
rescue OpenSSL::PKey::PKeyError => e
  raise UnsupportedError, e.message
end