X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=dsakey%2Fdsakey_test.go;h=34df359554bdb39a67f69476212ea186b9163c2b;hb=2dba8527a9eff1f9931ccbb25df34dcb618460a7;hp=9245199c65530df1b6e43c5dccbad4ceee908567;hpb=11b42f83abc8aa8f676df2f2ec49fada8acaea5b;p=epoint diff --git a/dsakey/dsakey_test.go b/dsakey/dsakey_test.go index 9245199..34df359 100644 --- a/dsakey/dsakey_test.go +++ b/dsakey/dsakey_test.go @@ -1,11 +1,11 @@ package dsakey import ( - "crypto/openpgp" -// "fmt" "bytes" - "time" + "crypto/openpgp" + "fmt" "testing" + "time" ) func testSignAndVerify(t *testing.T, priv *openpgp.Entity) { @@ -19,7 +19,7 @@ func testSignAndVerify(t *testing.T, priv *openpgp.Entity) { _, err = openpgp.CheckDetachedSignature(openpgp.EntityList{priv}, bytes.NewBuffer(msg), w) if err != nil { - t.Errorf("Verify failed") + t.Errorf("Verify failed: %s", err) } } @@ -36,3 +36,83 @@ func TestKey(t *testing.T) { 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) + } +}