tailscale/control/controlclient
David Anderson 02ad987e24 control/controlbase: make the protocol version number selectable.
This is so that we can plumb our client capability version through
the protocol as the Noise version. The capability version increments
more frequently than strictly required (the Noise version only needs
to change when cryptographically-significant changes are made to
the protocol, whereas the capability version also indicates changes
in non-cryptographically-significant parts of the protocol), but this
gives us a safe pre-auth way to determine if the client supports
future protocol features, while still relying on Noise's strong
assurance that the client and server have agreed on the same version.

Currently, the server executes the same protocol regardless of the
version number, and just presents the version to the caller so they
can do capability-based things in the upper RPC protocol. In future,
we may add a ratchet to disallow obsolete protocols, or vary the
Noise handshake behavior based on requested version.

Updates #3488

Signed-off-by: David Anderson <danderson@tailscale.com>
2022-04-07 13:25:28 -07:00
..
auto.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
client.go ssh/tailssh, ipnlocal, controlclient: fetch next SSHAction from network 2022-03-10 13:41:08 -08:00
controlclient_test.go hostinfo: add SetDeviceModel setter, move remaining code from controlclient 2021-08-20 10:45:22 -07:00
debug_test.go control/controlclient: don't use regexp in goroutine stack scrubbing 2021-07-22 13:18:05 -07:00
debug.go control/controlclient: grow goroutine debug buffer as needed 2021-07-22 13:18:05 -07:00
direct_test.go types/key: add a special key with custom serialization for control private keys (#2792) 2021-09-03 13:17:46 -07:00
direct.go net/netutil: add CheckIPForwardingLinux (#4301) 2022-03-28 10:24:11 -07:00
map_test.go control/controlclient: stop using wgkey. 2021-10-28 14:22:51 -07:00
map.go control/controlclient, ipn/ipnlocal, tailcfg: add MapResponse.PopBrowserURL 2022-03-22 09:37:00 -07:00
noise_test.go control/controlbase: make the protocol version number selectable. 2022-04-07 13:25:28 -07:00
noise.go control/controlbase: make the protocol version number selectable. 2022-04-07 13:25:28 -07:00
sign_supported_test.go go.mod: update to latest certstore 2022-03-16 16:10:29 -07:00
sign_supported.go go.mod: update to latest certstore 2022-03-16 16:10:29 -07:00
sign_unsupported.go go.mod: update to latest certstore 2022-03-16 16:10:29 -07:00
sign.go control/controlclient: update machine certificate signature version 2021-09-17 17:43:06 -04:00
status.go control/controlclient,tailcfg: propagate registration errors to the frontend 2021-10-27 06:57:26 -07:00