Documentation ¶
Overview ¶
Package wire implements the Katzenpost wire protocol.
Index ¶
Constants ¶
const ( // MaxAdditionalDataLength is the maximum length of the additional data // sent to the peer as part of the handshake authentication. MaxAdditionalDataLength = 255 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PeerAuthenticator ¶
type PeerAuthenticator interface { // IsPeerValid authenticates the remote peer's credentials, returning true // iff the peer is valid. IsPeerValid(*PeerCredentials) bool }
PeerAuthenticator is the interface used to authenticate the remote peer, based on the authenticated key exchange.
type PeerCredentials ¶
PeerCredentials is the peer's credentials received during the authenticated key exchange. By virtue of the Noise Protocol's design, the AdditionalData is guaranteed to have been sent from a peer possessing the private component of PublicKey.
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session is a wire protocol session.
func NewSession ¶
func NewSession(cfg *SessionConfig, isInitiator bool) (*Session, error)
NewSession creates a new Session.
func (*Session) ClockSkew ¶
ClockSkew returns the approximate clock skew based on the responder's timestamp received as part of the handshake. This call MUST only be called from a session that has successfully completed Initialize(), and the peer is the responder.
func (*Session) Initialize ¶
Initialize takes an establised net.Conn, and binds it to a Session, and conducts the wire protocol handshake.
func (*Session) PeerCredentials ¶
func (s *Session) PeerCredentials() (*PeerCredentials, error)
PeerCredentials returns the peer's credentials. This call MUST only be called from a session that has successfully completed Initialize().
func (*Session) RecvCommand ¶
RecvCommand receives a wire protocol command off the network.
type SessionConfig ¶
type SessionConfig struct { // Authenticator is the PeerAuthenticator instance that will be used to // authenticate the remote peer for the newly created Session. Authenticator PeerAuthenticator // AdditionalData is the additional data that will be passed to the peer // as part of the wire protocol handshake, the length of which MUST be less // than or equal to MaxAdditionalDataLength. AdditionalData []byte // AuthenticationKey is the static long term authentication key used to // authenticate with the remote peer. AuthenticationKey *ecdh.PrivateKey // RandomReader is a cryptographic entropy source. RandomReader io.Reader }
SessionConfig is the configuration used to create new Sessions.
type SessionInterface ¶
type SessionInterface interface { Initialize(conn net.Conn) error SendCommand(cmd commands.Command) error RecvCommand() (commands.Command, error) Close() PeerCredentials() *PeerCredentials ClockSkew() time.Duration }
SessionInterface is the interface used to initialize or teardown a Session and send and receive command.Commands.