From f6c49d3e907ce2ea1e1bfdebcc8e6d0160aecaa0 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 20 Jul 2017 00:49:51 +0200 Subject: Rename Enc to Sec --- key/enc.go | 68 -------------------------------------------------------------- 1 file changed, 68 deletions(-) delete mode 100644 key/enc.go (limited to 'key/enc.go') diff --git a/key/enc.go b/key/enc.go deleted file mode 100644 index aa65df3..0000000 --- a/key/enc.go +++ /dev/null @@ -1,68 +0,0 @@ -package key - -import ( - "bytes" - "crypto/sha512" - - "golang.org/x/crypto/ed25519" -) - -type Enc struct { - PKAlg [2]byte - KDFAlg [2]byte - KDFRounds uint32 - Salt [16]byte - Checksum [8]byte - KeyNum [8]byte - Key [ed25519.PrivateKeySize]byte -} - -// Sign message -func (v *Enc) Sign(message []byte) *Sig { - sig := &Sig{PKAlg: v.PKAlg, KeyNum: v.KeyNum} - copy(sig.Sig[:], ed25519.Sign(ed25519.PrivateKey(v.Key[:]), message)) - return sig -} - -func (v *Enc) Validate() error { - if v.PKAlg != pkAlg { - return ErrInvalidPK - } - if v.KDFAlg != kdfAlg { - return ErrInvalidKDF - } - sum := sha512.Sum512(v.Key[:]) - if !bytes.Equal(sum[:len(v.Checksum)], v.Checksum[:]) { - return ErrInvalidKey - } - return nil -} - -func (v *Enc) MarshalBinary() ([]byte, error) { return marshal(v) } -func (v *Enc) UnmarshalBinary(data []byte) error { return unmarshal(data, v) } - -// Public key of encryption key -func (v *Enc) Public() *Pub { - key := ed25519.PrivateKey(v.Key[:]).Public().(ed25519.PublicKey) - pub := &Pub{PKAlg: pkAlg, KeyNum: v.KeyNum} - copy(pub.Key[:], key) - return pub -} - -// NewEnc returns a parsed and decoded encryption key -func NewEnc(data []byte, der Deriver) (*Enc, error) { - enc := new(Enc) - if err := enc.UnmarshalBinary(data); err != nil { - return nil, err - } - if der != nil && enc.KDFRounds > 0 { - xor, err := der.Derive(enc.Salt[:], int(enc.KDFRounds), len(enc.Key)) - if err != nil { - return nil, err - } - for i := range xor { - enc.Key[i] ^= xor[i] - } - } - return enc, enc.Validate() -} -- cgit v1.2.3