plan9 currently uses the shared secret from the authentication process with ssl and rc4 cipher for encrypting traffic for exportfs and the cpu services (pushssl()). the cipher can be changed by the client by providing command line parameters, tho there is no real negotiation going on. if the server doesnt like the cipher from the client, the connection just breaks.
when switching to tls, we have a few options: 1) do as we do with ssl, client sends what cipher and hash alg it wants as a string before calling pushtls(). 2) use fixed cipher like chacha20/poly1305 aead unconditionally. 3) use fixed cipher initially, and after that, renegotiate cipher (devtls can change secrets and ciphers inband). 4) use standard tls handshake with PSK cipher suits. 5) make our own little cipher negotiation handshake protocol. suggestions? -- cinap