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 durring the authenticated key exchange. By virtue of the Noise Protocol's design, the AdditionalData is guaranteed to have been sent from a peer posessing 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
PeerCredentials returns the peer's credentials. This call MUST only be called from a session that has succesfully 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.