From 3e643d5d7594a2c2966169cdb3bdd038996124d1 Mon Sep 17 00:00:00 2001 From: nsz Date: Tue, 17 Jan 2012 17:37:22 +0100 Subject: [PATCH] update code to latest go --- Makefile | 1 + cmd/epoint-client/epoint-client.go | 4 ++-- cmd/epoint-server/epoint-server.go | 27 ++++----------------------- pkg/key/key.go | 8 ++++++-- pkg/server/server.go | 26 +++++++++++++++++++++----- 5 files changed, 34 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index 1069500..1a99ac1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ all: install install: + cd pkg && ./deps.sh make -C pkg install test: make -C pkg test diff --git a/cmd/epoint-client/epoint-client.go b/cmd/epoint-client/epoint-client.go index 71efe93..7ddd923 100644 --- a/cmd/epoint-client/epoint-client.go +++ b/cmd/epoint-client/epoint-client.go @@ -84,13 +84,13 @@ func k(r []byte, cmd, arg string) (err error) { } // TODO: maybe Serialize should do this internally for _, ident := range e.Identities { - err = ident.SelfSignature.SignUserId(ident.UserId.Id, e.PrimaryKey, e.PrivateKey) + err = ident.SelfSignature.SignUserId(rand.Reader, ident.UserId.Id, e.PrimaryKey, e.PrivateKey) if err != nil { return } } for _, subkey := range e.Subkeys { - err = subkey.Sig.SignKey(subkey.PublicKey, e.PrivateKey) + err = subkey.Sig.SignKey(rand.Reader, subkey.PublicKey, e.PrivateKey) if err != nil { return } diff --git a/cmd/epoint-server/epoint-server.go b/cmd/epoint-server/epoint-server.go index cf29fa7..6e3bccd 100644 --- a/cmd/epoint-server/epoint-server.go +++ b/cmd/epoint-server/epoint-server.go @@ -1,7 +1,6 @@ package main import ( - "crypto/openpgp" "epoint/key" "epoint/server" "fmt" @@ -18,25 +17,6 @@ const ( // todo: http header limit: 64K, body limit: 64K -// TODO: generate -func initkey() (sk *openpgp.Entity, err error) { - f, err := os.Open(seckey) - if err != nil { - return - } - keys, err := openpgp.ReadKeyRing(f) - if err != nil { - f.Close() - return - } - err = f.Close() - if err != nil { - return - } - sk = keys[0] - return -} - func httpError(w http.ResponseWriter, code int, msg string) { log.Printf("error: %d %s", code, msg) http.Error(w, fmt.Sprintf("%d %s\n\n%s\n", code, http.StatusText(code), msg), code) @@ -54,12 +34,12 @@ func httpReq(r *http.Request) string { } form = fmt.Sprintf("%v", a) } - return fmt.Sprintf("%s %s params:%s", r.Method, r.URL.Raw, form) + return fmt.Sprintf("%s %s params:%s", r.Method, r.URL, form) } func defaultHandler(w http.ResponseWriter, r *http.Request) { log.Printf("%s %s", r.RemoteAddr, httpReq(r)) - fmt.Fprintf(w, "not implemented: %s %s\n", r.Method, r.URL.Raw) + fmt.Fprintf(w, "not implemented: %s %s\n", r.Method, r.URL) } func submitHandler(w http.ResponseWriter, r *http.Request) { @@ -99,7 +79,8 @@ func submitHandler(w http.ResponseWriter, r *http.Request) { } func main() { - serverkey, err := initkey() + // TODO: serious keygen + serverkey, err := key.Server([]byte("secret seed")) if err != nil { log.Fatal(err) } diff --git a/pkg/key/key.go b/pkg/key/key.go index 6f2a322..19537d6 100644 --- a/pkg/key/key.go +++ b/pkg/key/key.go @@ -78,8 +78,8 @@ func New(priv *dsa.PrivateKey, t time.Time, name, comment, email string) (e *ope return nil, fmt.Errorf("NewEntity: invalid argument: user id field contained invalid characters") } e = &openpgp.Entity{ - PrimaryKey: packet.NewDSAPublicKey(t, &priv.PublicKey, false /* not a subkey */ ), - PrivateKey: packet.NewDSAPrivateKey(t, priv, false /* not a subkey */ ), + PrimaryKey: packet.NewDSAPublicKey(t, &priv.PublicKey), + PrivateKey: packet.NewDSAPrivateKey(t, priv), Identities: make(map[string]*openpgp.Identity), } isPrimaryId := true @@ -128,6 +128,10 @@ func Issuer(r []byte, denomination string) (e *openpgp.Entity, err error) { func Holder(r []byte, issuer, denomination string) (e *openpgp.Entity, err error) { return New(DsaKey(r), time.Unix(0,0), "Holder of "+issuer, denomination, "") } +// Server generates a key for the server from random seed r +func Server(r []byte) (e *openpgp.Entity, err error) { + return New(DsaKey(r), time.Now(), "Server", "", "") +} // Key id (fingerprint) func Id(e *openpgp.Entity) string { diff --git a/pkg/server/server.go b/pkg/server/server.go index 2a04bb8..ab41250 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -5,6 +5,7 @@ package server import ( "bytes" "crypto/openpgp" + "crypto/rand" "epoint/document" "epoint/key" "epoint/store" @@ -61,13 +62,29 @@ func popwork(ws *worklist) *work { return w } -func storekey() (err error) { +func setserverkey(e *openpgp.Entity) (err error) { + serverkey = e + + // TODO: maybe Serialize should do this internally + for _, ident := range e.Identities { + err = ident.SelfSignature.SignUserId(rand.Reader, ident.UserId.Id, e.PrimaryKey, e.PrivateKey) + if err != nil { + return + } + } + for _, subkey := range e.Subkeys { + err = subkey.Sig.SignKey(rand.Reader, subkey.PublicKey, e.PrivateKey) + if err != nil { + return + } + } + b := new(bytes.Buffer) - err = serverkey.Serialize(b) + err = e.Serialize(b) if err != nil { return } - err = db.Set("key", key.Id(serverkey), b.Bytes()) + err = db.Set("key", key.Id(e), b.Bytes()) if err != nil { return } @@ -586,8 +603,7 @@ func Init(rootdir string, sk *openpgp.Entity) (err error) { if err != nil { return } - serverkey = sk - err = storekey() + err = setserverkey(sk) if err != nil { return } -- 2.20.1