const debugHandshake …
const chanSize …
type keyingTransport …
type handshakeTransport …
type pendingKex …
func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport { … }
func newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport { … }
func newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport { … }
func (t *handshakeTransport) getSessionID() []byte { … }
func (t *handshakeTransport) waitSession() error { … }
func (t *handshakeTransport) id() string { … }
func (t *handshakeTransport) printPacket(p []byte, write bool) { … }
func (t *handshakeTransport) readPacket() ([]byte, error) { … }
func (t *handshakeTransport) readLoop() { … }
func (t *handshakeTransport) pushPacket(p []byte) error { … }
func (t *handshakeTransport) getWriteError() error { … }
func (t *handshakeTransport) recordWriteError(err error) { … }
func (t *handshakeTransport) requestKeyExchange() { … }
func (t *handshakeTransport) resetWriteThresholds() { … }
func (t *handshakeTransport) kexLoop() { … }
const packetRekeyThreshold …
func (t *handshakeTransport) resetReadThresholds() { … }
func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) { … }
const kexStrictClient …
const kexStrictServer …
func (t *handshakeTransport) sendKexInit() error { … }
func (t *handshakeTransport) writePacket(p []byte) error { … }
func (t *handshakeTransport) Close() error { … }
func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { … }
type algorithmSignerWrapper …
func (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { … }
func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner { … }
func (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { … }
func (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { … }