aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-07-19 00:10:12 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-07-19 00:10:12 +0200
commit016194f41c6267e84f513e9895456f414651b3ad (patch)
tree4b3d6056ffe9ea6b03afb9db99a8cfdc3eed8765
parente322c768df439cf34049dd62c4c0b6d3e2c1112b (diff)
Add Public method
-rw-r--r--key/enc.go7
-rw-r--r--key/key.go10
2 files changed, 13 insertions, 4 deletions
diff --git a/key/enc.go b/key/enc.go
index 2283b07..f36192d 100644
--- a/key/enc.go
+++ b/key/enc.go
@@ -17,6 +17,13 @@ type Enc struct {
Key [ed25519.PrivateKeySize]byte
}
+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
+}
+
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))
diff --git a/key/key.go b/key/key.go
index 32aa2e8..06746aa 100644
--- a/key/key.go
+++ b/key/key.go
@@ -37,10 +37,8 @@ func NewKey(d KeyDeriver) (*Pub, *Enc, error) {
return nil, nil, err
}
- pub := &Pub{PKAlg: pkAlg}
+ // encoding key
enc := &Enc{PKAlg: pkAlg, KDFAlg: kdfAlg}
-
- copy(pub.Key[:], pubKey)
copy(enc.Key[:], encKey)
checkSum := sha512.Sum512(encKey)
@@ -48,8 +46,8 @@ func NewKey(d KeyDeriver) (*Pub, *Enc, error) {
rand.Read(enc.Salt[:])
rand.Read(enc.KeyNum[:])
- pub.KeyNum = enc.KeyNum
+ // Pbdkf
if d != nil {
xor, err := d.DeriveKey(enc.Salt[:], DefaultRounds, len(enc.Key))
if err != nil {
@@ -61,6 +59,10 @@ func NewKey(d KeyDeriver) (*Pub, *Enc, error) {
enc.KDFRounds = DefaultRounds
}
+ // public key
+ pub := &Pub{PKAlg: pkAlg, KeyNum: enc.KeyNum}
+ copy(pub.Key[:], pubKey)
+
return pub, enc, nil
}