+++ /dev/null
-package dsakey
-
-import (
- "bytes"
- "crypto/openpgp"
- "fmt"
- "testing"
- "time"
-)
-
-func testSignAndVerify(t *testing.T, priv *openpgp.Entity) {
- msg := []byte("testing")
- w := new(bytes.Buffer)
- err := openpgp.DetachSign(w, priv, bytes.NewBuffer(msg))
- if err != nil {
- t.Errorf("error signing: %s", err)
- return
- }
-
- _, err = openpgp.CheckDetachedSignature(openpgp.EntityList{priv}, bytes.NewBuffer(msg), w)
- if err != nil {
- t.Errorf("Verify failed: %s", err)
- }
-}
-
-func TestKey(t *testing.T) {
- key, err := GenKey()
- if err != nil {
- t.Errorf("gen dsa key failed: %s", err)
- return
- }
- priv, err := NewEntity(key, time.Seconds(), "a", "b", "c")
- if err != nil {
- t.Errorf("new entity failed: %s", err)
- } else {
- testSignAndVerify(t, priv)
- }
-}
-
-func TestGenIssuer(t *testing.T) {
- denomination := "1/100 EUR"
- priv, err := NewIssuerEntity([]byte("issuer-rand"), denomination)
- if err != nil {
- t.Errorf("new entity failed: %s", err)
- } else {
- testSignAndVerify(t, priv)
- }
- wpriv := new(bytes.Buffer)
- err = priv.SerializePrivate(wpriv)
- if err != nil {
- t.Errorf("priv key serialization failed: %s", err)
- return
- }
- wpub := new(bytes.Buffer)
- err = priv.Serialize(wpub)
- if err != nil {
- t.Errorf("pub key serialization failed: %s", err)
- return
- }
- es, err := openpgp.ReadKeyRing(wpub)
- if err != nil {
- t.Errorf("pub key parsing failed: %s", err)
- return
- }
- isIssuer, issuer, denom, err := CheckEntity(es[0])
- if err != nil {
- t.Errorf("pub key parsing failed: %s", err)
- return
- }
- if !isIssuer {
- t.Errorf("expected issuer key got: %v", es[0].Identities)
- }
- issuerfpr := fmt.Sprintf("%X", priv.PrimaryKey.Fingerprint)
- if issuer != issuerfpr {
- t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
- }
- if denom != denomination {
- t.Errorf("expected denomination %q got %q", denomination, denom)
- }
-
- priv, err = NewHolderEntity([]byte("holder-rand"), issuerfpr, denomination)
- if err != nil {
- t.Errorf("new entity failed: %s", err)
- } else {
- testSignAndVerify(t, priv)
- }
- wpriv = new(bytes.Buffer)
- err = priv.SerializePrivate(wpriv)
- if err != nil {
- t.Errorf("priv key serialization failed: %s", err)
- return
- }
- wpub = new(bytes.Buffer)
- err = priv.Serialize(wpub)
- if err != nil {
- t.Errorf("pub key serialization failed: %s", err)
- return
- }
- es, err = openpgp.ReadKeyRing(wpub)
- if err != nil {
- t.Errorf("pub key parsing failed: %s", err)
- return
- }
- isIssuer, issuer, denom, err = CheckEntity(es[0])
- if err != nil {
- t.Errorf("pub key parsing failed: %s", err)
- return
- }
- if isIssuer {
- t.Errorf("expected non-issuer key got: %v", es[0].Identities)
- }
- if issuer != issuerfpr {
- t.Errorf("expected issuer %s got %s", issuerfpr, issuer)
- }
- if denom != denomination {
- t.Errorf("expected denomination %q got %q", denomination, denom)
- }
-}