# Functions
NewConn establishes a Kex session based on the given secret.
RunProvisionee runs a provisioner given the necessary arguments.
RunProvisioner runs a provisioner given the necessary arguments.
# Variables
ErrAgain indicates that no data was available to read, but the reader was in non-blocking mode, so to try again later.
ErrBadMetadata indicates that the metadata outside the encrypted message didn't match what was inside.
ErrBadPacketSequence indicates that packets arrived out of order from the server (which they shouldn't).
ErrCanceled is returned if Kex is canceled by the caller via the Context argument.
ErrBadDecryption indicates that a ciphertext failed to decrypt or MAC properly.
ErrNotEnoughRandomness indicates that encryption failed due to insufficient randomness.
ErrSelfReceive indicates that the client received a message sent by itself, which should never happen.
ErrTimedOut is the signleton error we use if the operation timedout.
ErrUnimplemented indicates the given method isn't implemented.
ErrWrongSession indicatest that the given session didn't match the clients expectations.
# Structs
Conn is a struct that obeys the net.Conn interface.
KexBaseArg are arguments common to both Provisioner and Provisionee.
ProvisioneeArg provides the details that a provisionee needs in order to run its course.
ProvisionerArg provides the details that a provisioner needs in order to run its course.
# Interfaces
MessageRouter is a stateful message router that will be implemented by JSON/REST calls to the Keybase API server.
Provisionee is an interface that abstracts out the crypto and session management that a provisionee needs to do as part of the protocol.
Provisioner is an interface that abstracts out the crypto and session management that a provisioner needs to do as part of the protocol.