import (
"bytes"
"crypto/openpgp"
+ "crypto/rand"
"epoint/document"
"epoint/key"
"epoint/store"
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
}
if err != nil {
return
}
- serverkey = sk
- err = storekey()
+ err = setserverkey(sk)
if err != nil {
return
}