update code to latest go
[epoint] / pkg / server / server.go
index 2a04bb8..ab41250 100644 (file)
@@ -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
        }