package main import ( "bytes" "crypto/sha512" "github.com/agl/ed25519" ) type Sig struct { PKAlg [2]byte KeyNum [KeyNumLen]byte Sig [ed25519.SignatureSize]byte } type PubKey struct { PKAlg [2]byte KeyNum [KeyNumLen]byte PubKey [ed25519.PublicKeySize]byte } type EncKey struct { PKAlg [2]byte KDFAlg [2]byte KDFRounds uint32 // network byte order Salt [16]byte Checksum [8]byte KeyNum [KeyNumLen]byte SecKey [ed25519.PrivateKeySize]byte } func (v *EncKey) Valid() bool { sum := sha512.Sum512(v.SecKey[:]) return bytes.Equal(sum[:len(v.Checksum)], v.Checksum[:]) }