11 func testSignAndVerify(t *testing.T, priv *openpgp.Entity) {
12 msg := []byte("testing")
13 w := new(bytes.Buffer)
14 err := openpgp.DetachSign(w, priv, bytes.NewBuffer(msg))
16 t.Errorf("error signing: %s", err)
20 _, err = openpgp.CheckDetachedSignature(openpgp.EntityList{priv}, bytes.NewBuffer(msg), w)
22 t.Errorf("Verify failed: %s", err)
26 func TestKey(t *testing.T) {
27 key, err := RandomDsaKey()
29 t.Errorf("gen dsa key failed: %s", err)
32 priv, err := New(key, time.Now(), "a", "b", "c")
34 t.Errorf("New failed: %s", err)
36 testSignAndVerify(t, priv)
42 t.Errorf("SelfSign failed: %s", err)
44 d, err := Format(priv)
46 t.Errorf("Format failed: %s", err)
50 t.Errorf("Parse failed: %s", err)
54 func TestId(t *testing.T) {
55 idwant := "E51F405B809FA2DEA760603F9D33F730611CBCD9"
56 key, err := Issuer([]byte("rand"), "")
58 t.Errorf("Issuer failed: %s", err)
63 t.Errorf("Id failed: expected %s, got %s", idwant, id)
67 func TestIssuerHolder(t *testing.T) {
68 denomination := "1/100 EUR"
69 priv, err := Issuer([]byte("issuer-rand"), denomination)
71 t.Errorf("Issuer failed: %s", err)
73 testSignAndVerify(t, priv)
75 wpriv := new(bytes.Buffer)
76 err = priv.SerializePrivate(wpriv)
78 t.Errorf("priv key serialization failed: %s", err)
81 wpub := new(bytes.Buffer)
82 err = priv.Serialize(wpub)
84 t.Errorf("pub key serialization failed: %s", err)
87 es, err := openpgp.ReadKeyRing(wpub)
89 t.Errorf("pub key parsing failed: %s", err)
92 isIssuer, issuer, denom, err := Check(es[0])
94 t.Errorf("Check failed: %s", err)
98 t.Errorf("expected issuer key got: %v", es[0].Identities)
100 issuerfpr := fmt.Sprintf("%X", priv.PrimaryKey.Fingerprint)
101 if issuer != issuerfpr {
102 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
104 if denom != denomination {
105 t.Errorf("expected denomination %q got %q", denomination, denom)
108 priv, err = Holder([]byte("holder-rand"), issuerfpr, denomination)
110 t.Errorf("Holder failed: %s", err)
112 testSignAndVerify(t, priv)
114 wpriv = new(bytes.Buffer)
115 err = priv.SerializePrivate(wpriv)
117 t.Errorf("priv key serialization failed: %s", err)
120 wpub = new(bytes.Buffer)
121 err = priv.Serialize(wpub)
123 t.Errorf("pub key serialization failed: %s", err)
126 es, err = openpgp.ReadKeyRing(wpub)
128 t.Errorf("pub key parsing failed: %s", err)
131 isIssuer, issuer, denom, err = Check(es[0])
133 t.Errorf("Check failed: %s", err)
137 t.Errorf("expected non-issuer key got: %v", es[0].Identities)
139 if issuer != issuerfpr {
140 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
142 if denom != denomination {
143 t.Errorf("expected denomination %q got %q", denomination, denom)