insert key into store only if it does not exist
[epoint] / cmd / epoint-client / epoint-client.go
index fb95488..8ffc615 100644 (file)
@@ -1,6 +1,7 @@
 package main
 
 import (
+       "bytes"
        "crypto/openpgp"
        "crypto/openpgp/armor"
        "crypto/rand"
@@ -115,11 +116,43 @@ func s(d []byte, cmd, server string) (err error) {
        if err != nil {
                return
        }
-       fmt.Printf("%v", resp)
+       if resp.StatusCode != 200 {
+               log.Printf("request failed: %s\n", resp.Status)
+       }
+       _, err = io.Copy(os.Stdout, resp.Body)
+       if err != nil {
+               return
+       }
+       err = resp.Body.Close()
        return
 }
 
 func v(d []byte) (err error) {
+       // handle armored pubkey
+       if bytes.Index(d, []byte(openpgp.PublicKeyType)) >= 0 {
+               es, err1 := openpgp.ReadArmoredKeyRing(bytes.NewBuffer(d))
+               if err1 != nil {
+                       err = err1
+                       return
+               }
+               for _, e := range es {
+                       isIssuer, issuer, denom, err1 := key.Check(e)
+                       if err1 != nil {
+                               if err != nil {
+                                       log.Println(err)
+                               }
+                               err = err1
+                               continue
+                       }
+                       if isIssuer {
+                               fmt.Println("Issuer key")
+                       } else {
+                               fmt.Println("Holder key")
+                       }
+                       fmt.Printf("Issuer: %s\nDenomination: %s\nId: %s\n", issuer, denom, key.Id(e))
+               }
+               return
+       }
        _, s, err := document.Parse(d)
        if err != nil {
                return