Documentation
Overview ¶
Package secrethandshake is a Go implementation of Dominic Tarr's secret-handshake: https://github.com/auditdrivencrypto/secret-handshake
Two instances of go-shs can secretly shake hands over a connection.
The implementation is compatible with the JS implementation. Run `npm ci && go test -tags interop_nodejs`.
Index ¶
Constants ¶
const ChallengeLength = 64
ChallengeLength is the length of a challenge message in bytes
const ClientAuthLength = 16 + 32 + 64
ClientAuthLength is the length of a clientAuth message in bytes
const MACLength = 16
MACLength is the length of a MAC in bytes
const ServerAuthLength = 16 + 64
ServerAuthLength is the length of a serverAuth message in bytes
Variables ¶
var ErrInvalidKeyPair = fmt.Errorf("secrethandshake/NewKeyPair: invalid public key")
Functions ¶
Types ¶
type CurveKeyPair ¶
CurveKeyPair is a keypair for use with github.com/agl/ed25519
type EdKeyPair ¶
type EdKeyPair struct { Public ed25519.PublicKey Secret ed25519.PrivateKey }
EdKeyPair is a keypair for use with github.com/agl/ed25519
func GenEdKeyPair ¶
GenEdKeyPair generates a ed25519 keyPair using the passed reader if r == nil it uses crypto/rand.Reader
func NewKeyPair ¶
type ErrEncoding ¶
type ErrEncoding struct {
// contains filtered or unexported fields
}
func (ErrEncoding) Error ¶
func (e ErrEncoding) Error() string
type ErrKeySize ¶
type ErrKeySize struct {
// contains filtered or unexported fields
}
func (ErrKeySize) Error ¶
func (eks ErrKeySize) Error() string
type ErrProcessing ¶
type ErrProcessing struct {
// contains filtered or unexported fields
}
ErrProcessing is returned if I/O fails during the handshake TODO: supply Unwrap() for cause?
func (ErrProcessing) Error ¶
func (e ErrProcessing) Error() string
type ErrProtocol ¶
type ErrProtocol struct {
// contains filtered or unexported fields
}
func (ErrProtocol) Error ¶
func (e ErrProtocol) Error() string
type State ¶
type State struct {
// contains filtered or unexported fields
}
State is the state each peer holds during the handshake
func NewClientState ¶
NewClientState initializes the state for the client side
func NewServerState ¶
NewServerState initializes the state for the server side
func (*State) GetBoxstreamDecKeys ¶
GetBoxstreamDecKeys returns the decryption key and nonce suitable for boxstream
func (*State) GetBoxstreamEncKeys ¶
GetBoxstreamEncKeys returns the encryption key and nonce suitable for boxstream
Directories
Path | Synopsis |
---|---|
internal/extra25519 | blatent grep of github.com/agl/ed25519/extra25519 until we have a better solution |
tests |