+// Parse armored or binary openpgp public or private key
+func Parse(d []byte) (e *openpgp.Entity, err error) {
+ elist, err := openpgp.ReadArmoredKeyRing(bytes.NewBuffer(d))
+ if err != nil {
+ elist1, err1 := openpgp.ReadKeyRing(bytes.NewBuffer(d))
+ if err1 != nil {
+ return
+ }
+ err = nil
+ elist = elist1
+ }
+ if len(elist) != 1 {
+ err = fmt.Errorf("Parse: expected exactly one key")
+ return
+ }
+ e = elist[0]
+ return
+}
+