import "github.com/katzenpost/core/wire"
Package wire implements the Katzenpost wire protocol.
const ( // MaxAdditionalDataLength is the maximum length of the additional data // sent to the peer as part of the handshake authentication. MaxAdditionalDataLength = 255 )
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.
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 struct {
// contains filtered or unexported fields
}
Session is a wire protocol session.
func NewSession(cfg *SessionConfig, isInitiator bool) (*Session, error)
NewSession creates a new Session.
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.
Close terminates a session.
Initialize takes an establised net.Conn, and binds it to a Session, and conducts the wire protocol handshake.
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().
RecvCommand receives a wire protocol command off the network.
SendCommand sends the wire protocol command cmd.
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 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.
Path | Synopsis |
---|---|
commands |
Package wire imports 11 packages (graph) and is imported by 10 packages. Updated 2019-11-14. Refresh now. Tools for package owners.