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)
40 func TestId(t *testing.T) {
41 idwant := "E51F405B809FA2DEA760603F9D33F730611CBCD9"
42 key, err := Issuer([]byte("rand"), "")
44 t.Errorf("Issuer failed: %s", err)
49 t.Errorf("Id failed: expected %s, got %s", idwant, id)
53 func TestIssuerHolder(t *testing.T) {
54 denomination := "1/100 EUR"
55 priv, err := Issuer([]byte("issuer-rand"), denomination)
57 t.Errorf("Issuer failed: %s", err)
59 testSignAndVerify(t, priv)
61 wpriv := new(bytes.Buffer)
62 err = priv.SerializePrivate(wpriv)
64 t.Errorf("priv key serialization failed: %s", err)
67 wpub := new(bytes.Buffer)
68 err = priv.Serialize(wpub)
70 t.Errorf("pub key serialization failed: %s", err)
73 es, err := openpgp.ReadKeyRing(wpub)
75 t.Errorf("pub key parsing failed: %s", err)
78 isIssuer, issuer, denom, err := Check(es[0])
80 t.Errorf("Check failed: %s", err)
84 t.Errorf("expected issuer key got: %v", es[0].Identities)
86 issuerfpr := fmt.Sprintf("%X", priv.PrimaryKey.Fingerprint)
87 if issuer != issuerfpr {
88 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
90 if denom != denomination {
91 t.Errorf("expected denomination %q got %q", denomination, denom)
94 priv, err = Holder([]byte("holder-rand"), issuerfpr, denomination)
96 t.Errorf("Holder failed: %s", err)
98 testSignAndVerify(t, priv)
100 wpriv = new(bytes.Buffer)
101 err = priv.SerializePrivate(wpriv)
103 t.Errorf("priv key serialization failed: %s", err)
106 wpub = new(bytes.Buffer)
107 err = priv.Serialize(wpub)
109 t.Errorf("pub key serialization failed: %s", err)
112 es, err = openpgp.ReadKeyRing(wpub)
114 t.Errorf("pub key parsing failed: %s", err)
117 isIssuer, issuer, denom, err = Check(es[0])
119 t.Errorf("Check failed: %s", err)
123 t.Errorf("expected non-issuer key got: %v", es[0].Identities)
125 if issuer != issuerfpr {
126 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
128 if denom != denomination {
129 t.Errorf("expected denomination %q got %q", denomination, denom)