"crypto/openpgp"
"crypto/openpgp/armor"
"crypto/openpgp/packet"
+ "crypto/sha1"
"encoding/hex"
"fmt"
"reflect"
Date int64
Difference int64
Draft string
+ Beneficiary string
AuthorizedBy string
Notes *string // optional
LastDebitSerial int64 // 0 if none
References []string
}
+// sha1 sum of the (cleaned) document as uppercase hex string
+func Id(d []byte) string {
+ h := sha1.New()
+ h.Write(d)
+ return fmt.Sprintf("%040X", h.Sum())
+}
+
// parse an epoint document without checking the signature and format details
func Parse(s []byte) (iv interface{}, c *Signed, err error) {
c, err = ParseSigned(s)
}
// verify an epoint document, return the cleaned version as well
-func Verify(c *Signed, key *openpgp.Entity) (cleaned []byte, err error) {
+func Verify(c *Signed, key openpgp.KeyRing) (cleaned []byte, err error) {
err = CleanSigned(c)
if err != nil {
return
}
// verify signature of body with given key
-func VerifyCleaned(c *Signed, key *openpgp.Entity) (err error) {
- kr := openpgp.EntityList{key}
+func VerifyCleaned(c *Signed, key openpgp.KeyRing) (err error) {
msg := bytes.NewBuffer(c.Body)
sig := bytes.NewBuffer(c.Signature)
- _, err = openpgp.CheckArmoredDetachedSignature(kr, msg, sig)
+ _, err = openpgp.CheckArmoredDetachedSignature(key, msg, sig)
return
}