document: verify signature
[epoint] / pkg / server / server.go
index 5d9af8e..9822a64 100644 (file)
@@ -24,7 +24,7 @@ func StoreSk(sk *openpgp.Entity) (err error) {
        if err != nil {
                return
        }
-       return db.Set("key", fmt.Sprintf("%X", sk.PrimaryKey.Fingerprint), b.Bytes())
+       return db.Set("key", key.Id(sk), b.Bytes())
 }
 
 func GetKeys(fpr string) (es openpgp.EntityList, err error) {
@@ -52,22 +52,27 @@ func AddKeys(d []byte) (err error) {
        }
        for _, e := range entities {
                // TODO: various checks..
-               isIssuer, issuer, denom, err1 := key.CheckEntity(e)
+               // TODO: collect errors instead of aborting addkeys
+               isIssuer, issuer, denom, err1 := key.Check(e)
                err = err1
                if err != nil {
-                       // TODO..
-                       continue
+                       return
                }
                if !isIssuer {
-                       es, err := GetKeys(issuer)
+                       es, err1 := GetKeys(issuer)
+                       err = err1
+                       if err != nil {
+                               return
+                       }
+                       ok, _, den, err1 := key.Check(es[0])
+                       err = err1
                        if err != nil {
-                               // TODO..
-                               continue
+                               // internal error
+                               return
                        }
-                       ok, _, den, err := key.CheckEntity(es[0])
-                       if !ok || err != nil || den != denom {
-                               // TODO..
-                               continue
+                       if !ok || den != denom {
+                               err = fmt.Errorf("Issuer key check failed")
+                               return
                        }
                }
                b := new(bytes.Buffer)
@@ -75,8 +80,8 @@ func AddKeys(d []byte) (err error) {
                if err != nil {
                        return
                }
-               fpr := fmt.Sprintf("%X", e.PrimaryKey.Fingerprint)
-               err = db.Set("key", fpr, b.Bytes())
+               fpr := key.Id(e)
+               err = db.Insert("key", fpr, b.Bytes())
                if err != nil {
                        return
                }
@@ -146,7 +151,7 @@ func ParseDraft(d []byte) (draft *document.Draft, draftid string, err error) {
        if err != nil {
                return
        }
-       _, issuer, denom, err := key.CheckEntity(kr[0])
+       _, issuer, denom, err := key.Check(kr[0])
        if err != nil {
                return
        }
@@ -159,7 +164,7 @@ func ParseDraft(d []byte) (draft *document.Draft, draftid string, err error) {
                // internal error: pubkey cannot be parsed
                return
        }
-       _, issuer2, denom2, err := key.CheckEntity(kr[0])
+       _, issuer2, denom2, err := key.Check(kr[0])
        if err != nil {
                return
        }
@@ -259,7 +264,7 @@ func NewDebitCert(draftid string, draft *document.Draft) (*document.DebitCert, e
                }
                cert.LastDebitSerial = oldcert.LastDebitSerial
                cert.LastCreditSerial = oldcert.LastCreditSerial
-               if _,ok := iv.(*document.DebitCert); ok {
+               if _, ok := iv.(*document.DebitCert); ok {
                        cert.LastDebitSerial = oldcert.Serial
                } else {
                        cert.LastCreditSerial = oldcert.Serial
@@ -315,7 +320,7 @@ func NewCreditCert(draftid string, draft *document.Draft, dcertid string, dcert
                }
                cert.LastDebitSerial = oldcert.LastDebitSerial
                cert.LastCreditSerial = oldcert.LastCreditSerial
-               if _,ok := iv.(*document.DebitCert); ok {
+               if _, ok := iv.(*document.DebitCert); ok {
                        cert.LastDebitSerial = oldcert.Serial
                } else {
                        cert.LastCreditSerial = oldcert.Serial