update genkey (+minor cleanups)
[epoint] / cmd / genkey / genkey.go
index 6420306..3a8a256 100644 (file)
@@ -1,14 +1,14 @@
 package main
 
 import (
-       "epoint/dsakey"
        "crypto/openpgp"
+       "epoint/dsakey"
+       "fmt"
        "log"
        "os"
-       "time"
 )
 
-const usage = "usage: ./genkey name comment email seckeyfile pubkeyfile < seed"
+const usage = "usage: ./genkey [issuer] denomination seckeyfile pubkeyfile < seed > fingerprint"
 
 func serialize(e *openpgp.Entity, sk, pk string) (err error) {
        f, err := os.Create(sk)
@@ -60,7 +60,22 @@ func serialize(e *openpgp.Entity, sk, pk string) (err error) {
 }
 
 func main() {
-       if len(os.Args) != 6 {
+       isIssuer := false
+       issuer := ""
+       denom := ""
+       sk := ""
+       pk := ""
+       if len(os.Args) == 4 {
+               isIssuer = true
+               denom = os.Args[1]
+               sk = os.Args[2]
+               pk = os.Args[3]
+       } else if len(os.Args) == 5 {
+               issuer = os.Args[1]
+               denom = os.Args[2]
+               sk = os.Args[3]
+               pk = os.Args[4]
+       } else {
                log.Fatal(usage)
        }
        b := make([]byte, 1000)
@@ -69,13 +84,18 @@ func main() {
                log.Print(err)
                log.Fatal(usage)
        }
-       key := dsakey.PrivKey(b[:n])
-       e, err := dsakey.NewEntity(key, time.Seconds(), os.Args[1], os.Args[2], os.Args[3])
+       var e *openpgp.Entity
+       if isIssuer {
+               e, err = dsakey.NewIssuerEntity(b[:n], denom)
+       } else {
+               e, err = dsakey.NewHolderEntity(b[:n], issuer, denom)
+       }
        if err != nil {
                log.Fatal(err)
        }
-       err = serialize(e, os.Args[4], os.Args[5])
+       err = serialize(e, sk, pk)
        if err != nil {
                log.Fatal(err)
        }
+       fmt.Fprintf(os.Stdout, "%X\n", e.PrimaryKey.Fingerprint)
 }