package main import ( "epoint/dsakey" "crypto/openpgp" "log" "os" "time" ) const usage = "usage: ./genkey name comment email seckeyfile pubkeyfile < seed" func serialize(e *openpgp.Entity, sk, pk string) (err error) { f, err := os.Create(sk) if err != nil { return } err = e.SerializePrivate(f) if err != nil { return } err = f.Sync() if err != nil { return } err = f.Close() if err != nil { return } // public key f, err = os.Create(pk) if err != nil { return } /* // TODO: maybe Serialize should do this internally for _, ident := range e.Identities { err = ident.SelfSignature.SignUserId(ident.UserId.Id, e.PrimaryKey, e.PrivateKey) if err != nil { return } } for _, subkey := range e.Subkeys { err = subkey.Sig.SignKey(subkey.PublicKey, e.PrivateKey) if err != nil { return } } */ err = e.Serialize(f) if err != nil { return } err = f.Sync() if err != nil { return } err = f.Close() return } func main() { if len(os.Args) != 6 { log.Fatal(usage) } b := make([]byte, 1000) n, err := os.Stdin.Read(b) if err != nil { 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]) if err != nil { log.Fatal(err) } err = serialize(e, os.Args[4], os.Args[5]) if err != nil { log.Fatal(err) } }