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) {
29 t.Errorf("gen dsa key failed: %s", err)
32 priv, err := NewEntity(key, time.Seconds(), "a", "b", "c")
34 t.Errorf("new entity failed: %s", err)
36 testSignAndVerify(t, priv)
40 func TestGenIssuer(t *testing.T) {
41 denomination := "1/100 EUR"
42 priv, err := NewIssuerEntity([]byte("issuer-rand"), denomination)
44 t.Errorf("new entity failed: %s", err)
46 testSignAndVerify(t, priv)
48 wpriv := new(bytes.Buffer)
49 err = priv.SerializePrivate(wpriv)
51 t.Errorf("priv key serialization failed: %s", err)
54 wpub := new(bytes.Buffer)
55 err = priv.Serialize(wpub)
57 t.Errorf("pub key serialization failed: %s", err)
60 es, err := openpgp.ReadKeyRing(wpub)
62 t.Errorf("pub key parsing failed: %s", err)
65 isIssuer, issuer, denom, err := CheckEntity(es[0])
67 t.Errorf("pub key parsing failed: %s", err)
71 t.Errorf("expected issuer key got: %v", es[0].Identities)
73 issuerfpr := fmt.Sprintf("%X", priv.PrimaryKey.Fingerprint)
74 if issuer != issuerfpr {
75 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
77 if denom != denomination {
78 t.Errorf("expected denomination %q got %q", denomination, denom)
81 priv, err = NewHolderEntity([]byte("holder-rand"), issuerfpr, denomination)
83 t.Errorf("new entity failed: %s", err)
85 testSignAndVerify(t, priv)
87 wpriv = new(bytes.Buffer)
88 err = priv.SerializePrivate(wpriv)
90 t.Errorf("priv key serialization failed: %s", err)
93 wpub = new(bytes.Buffer)
94 err = priv.Serialize(wpub)
96 t.Errorf("pub key serialization failed: %s", err)
99 es, err = openpgp.ReadKeyRing(wpub)
101 t.Errorf("pub key parsing failed: %s", err)
104 isIssuer, issuer, denom, err = CheckEntity(es[0])
106 t.Errorf("pub key parsing failed: %s", err)
110 t.Errorf("expected non-issuer key got: %v", es[0].Identities)
112 if issuer != issuerfpr {
113 t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
115 if denom != denomination {
116 t.Errorf("expected denomination %q got %q", denomination, denom)