aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-07-19 00:56:21 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-07-19 00:56:21 +0200
commitccb10d4fd0eec1437901ec143df646f405ec6073 (patch)
treecb222b7a8a29f9f5dce7221afbe0e528dd50b4a3
parent192414f67f722599467ab621c7348e41574fd759 (diff)
...
-rw-r--r--ask/ask.go4
-rw-r--r--generate.go6
-rw-r--r--key/enc.go25
-rw-r--r--key/key.go14
-rw-r--r--key/pub.go9
-rw-r--r--key/sig.go9
6 files changed, 26 insertions, 41 deletions
diff --git a/ask/ask.go b/ask/ask.go
index 253245e..205ad4c 100644
--- a/ask/ask.go
+++ b/ask/ask.go
@@ -23,7 +23,7 @@ const (
type Passphrase struct{}
-func (Passphrase) DeriveKey(salt []byte, rounds int, length int) ([]byte, error) {
+func (Passphrase) Derive(salt []byte, rounds int, length int) ([]byte, error) {
pass, err := passphrase()
if err != nil {
return nil, err
@@ -33,7 +33,7 @@ func (Passphrase) DeriveKey(salt []byte, rounds int, length int) ([]byte, error)
type Confirmed struct{}
-func (Confirmed) DeriveKey(salt []byte, rounds int, length int) ([]byte, error) {
+func (Confirmed) Derive(salt []byte, rounds int, length int) ([]byte, error) {
pass, err := confirmed()
if err != nil {
return nil, err
diff --git a/generate.go b/generate.go
index 97c9fdb..cf786eb 100644
--- a/generate.go
+++ b/generate.go
@@ -29,12 +29,12 @@ func generate(args []string) error {
return err
}
- var deriver key.KeyDeriver
+ var der key.Deriver
if !*nopass {
- deriver = ask.Confirmed{}
+ der = ask.Confirmed{}
}
- pubKey, encKey, err := key.Generate(deriver)
+ pubKey, encKey, err := key.Generate(der)
if err != nil {
return err
}
diff --git a/key/enc.go b/key/enc.go
index 898eb4c..6013ab7 100644
--- a/key/enc.go
+++ b/key/enc.go
@@ -17,14 +17,6 @@ type Enc struct {
Key [ed25519.PrivateKeySize]byte
}
-// 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
-}
-
// Sign message
func (v *Enc) Sign(message []byte) *Sig {
sig := &Sig{PKAlg: v.PKAlg, KeyNum: v.KeyNum}
@@ -46,22 +38,25 @@ func (v *Enc) Err() error {
return nil
}
-func (v *Enc) MarshalBinary() ([]byte, error) {
- return marshal(v)
-}
+func (v *Enc) MarshalBinary() ([]byte, error) { return marshal(v) }
+func (v *Enc) UnmarshalBinary(data []byte) error { return unmarshal(data, 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 KeyDeriver) (*Enc, error) {
+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.DeriveKey(enc.Salt[:], int(enc.KDFRounds), len(enc.Key))
+ xor, err := der.Derive(enc.Salt[:], int(enc.KDFRounds), len(enc.Key))
if err != nil {
return nil, err
}
diff --git a/key/key.go b/key/key.go
index bddd6ac..738d065 100644
--- a/key/key.go
+++ b/key/key.go
@@ -28,13 +28,13 @@ var (
kdfAlg = [2]byte{'B', 'K'}
)
-// KeyDeriver returns a derived key from passphrase
-type KeyDeriver interface {
- DeriveKey(salt []byte, rounds int, length int) ([]byte, error)
+// Deriver returns a derived key from passphrase
+type Deriver interface {
+ Derive(salt []byte, rounds int, length int) ([]byte, error)
}
// Generate a new key pair
-func Generate(der KeyDeriver) (*Pub, *Enc, error) {
+func Generate(der Deriver) (*Pub, *Enc, error) {
pubKey, encKey, err := ed25519.GenerateKey(rand.Reader)
if err != nil {
return nil, nil, err
@@ -48,15 +48,15 @@ func Generate(der KeyDeriver) (*Pub, *Enc, error) {
copy(enc.Checksum[:], checkSum[:len(enc.Checksum)])
if _, err := rand.Read(enc.Salt[:]); err != nil {
- return err
+ return nil, nil, err
}
if _, err := rand.Read(enc.KeyNum[:]); err != nil {
- return err
+ return nil, nil, err
}
// Pbdkf
if der != nil {
- xor, err := der.DeriveKey(enc.Salt[:], DefaultRounds, len(enc.Key))
+ xor, err := der.Derive(enc.Salt[:], DefaultRounds, len(enc.Key))
if err != nil {
return nil, nil, err
}
diff --git a/key/pub.go b/key/pub.go
index edc8acf..7767531 100644
--- a/key/pub.go
+++ b/key/pub.go
@@ -15,13 +15,8 @@ func (v *Pub) Err() error {
return nil
}
-func (v *Pub) MarshalBinary() ([]byte, error) {
- return marshal(v)
-}
-
-func (v *Pub) UnmarshalBinary(data []byte) error {
- return unmarshal(data, v)
-}
+func (v *Pub) MarshalBinary() ([]byte, error) { return marshal(v) }
+func (v *Pub) UnmarshalBinary(data []byte) error { return unmarshal(data, v) }
// NewPub returns a parsed public key
func NewPub(data []byte) (*Pub, error) {
diff --git a/key/sig.go b/key/sig.go
index 00ca5ef..59c2c44 100644
--- a/key/sig.go
+++ b/key/sig.go
@@ -26,13 +26,8 @@ func (v *Sig) Verify(message []byte, pub *Pub) error {
return nil
}
-func (v *Sig) MarshalBinary() ([]byte, error) {
- return marshal(v)
-}
-
-func (v *Sig) UnmarshalBinary(data []byte) error {
- return unmarshal(data, v)
-}
+func (v *Sig) MarshalBinary() ([]byte, error) { return marshal(v) }
+func (v *Sig) UnmarshalBinary(data []byte) error { return unmarshal(data, v) }
// NewSig return parsed signature
func NewSig(data []byte) (*Sig, error) {