package main import ( "bytes" "crypto/sha512" "golang.org/x/crypto/ed25519" ) var ( PKAlg = [2]byte{'E', 'd'} KDFAlg = [2]byte{'B', 'K'} ) type Sig struct { PKAlg [2]byte KeyNum [8]byte Sig [ed25519.SignatureSize]byte } type PubKey struct { PKAlg [2]byte KeyNum [8]byte PubKey [ed25519.PublicKeySize]byte } type EncKey struct { PKAlg [2]byte KDFAlg [2]byte KDFRounds uint32 Salt [16]byte Checksum [8]byte KeyNum [8]byte SecKey [ed25519.PrivateKeySize]byte } func (v *EncKey) Valid() bool { sum := sha512.Sum512(v.SecKey[:]) return bytes.Equal(sum[:8], v.Checksum[:]) }