aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-18 23:32:32 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-18 23:32:32 +0200
commitcbcc151ff94e89866d3c889f2346b6ba036e39fa (patch)
tree1d624b9d54c3f84c32c05307e1d4ce8fb60893f0 /main.go
parent4fbfd1286c60f1041f706355addddf3edb9ed81f (diff)
...
Diffstat (limited to 'main.go')
-rw-r--r--main.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/main.go b/main.go
index db4579f..dddc624 100644
--- a/main.go
+++ b/main.go
@@ -2,6 +2,7 @@ package main
import (
"flag"
+ "fmt"
"log"
)
@@ -50,3 +51,45 @@ func main() {
case *verify:
}
}
+
+func Generate(pubkeyfile, seckeyfile, comment string, rounds int) error {
+ pubKey, encKey, err := NewKey()
+ if err != nil {
+ return err
+ }
+
+ if rounds > 0 {
+ pass, err := AskPassword(nil, true)
+ if err != nil {
+ return err
+ }
+ encKey.Kdf(pass, rounds)
+ }
+
+ sb64, err := Marshal(encKey)
+ if err != nil {
+ return err
+ }
+
+ sfile := File{
+ Comment: fmt.Sprintf("%s secret key", comment),
+ RawKey: sb64,
+ }
+ if err := sfile.WriteFile(seckeyfile, SecMode); err != nil {
+ return err
+ }
+
+ pb64, err := Marshal(pubKey)
+ if err != nil {
+ return err
+ }
+ pfile := File{
+ Comment: fmt.Sprintf("%s public key", comment),
+ RawKey: pb64,
+ }
+ if err := pfile.WriteFile(pubkeyfile, PubMode); err != nil {
+ return err
+ }
+
+ return nil
+}