Files
go-i2p/lib/crypto/dsa_test.go

90 lines
1.5 KiB
Go
Raw Normal View History

2016-01-28 10:16:26 -05:00
package crypto
import (
2016-07-19 09:36:46 -04:00
"crypto/rand"
log "github.com/sirupsen/logrus"
2016-07-19 09:36:46 -04:00
"io"
2016-01-29 07:22:31 -05:00
"testing"
2016-01-28 10:16:26 -05:00
)
func TestDSA(t *testing.T) {
var sk DSAPrivateKey
var pk DSAPublicKey
var err error
sk, err = sk.Generate()
2016-01-29 07:22:31 -05:00
if err == nil {
2016-01-29 08:38:00 -05:00
zeros := 0
for b, _ := range sk {
if b == 0 {
2016-01-29 08:38:00 -05:00
zeros++
}
}
if zeros == len(sk) {
t.Logf("key generation yielded all zeros")
t.Fail()
}
pk, err = sk.Public()
2016-07-19 09:36:46 -04:00
data := make([]byte, 512)
io.ReadFull(rand.Reader, data)
if err == nil {
var sig []byte
var signer Signer
signer, err = sk.NewSigner()
if err == nil {
sig, err = signer.Sign(data)
if err == nil {
t.Logf("sig=%q", sig)
var verify Verifier
verify, err = pk.NewVerifier()
if err == nil {
err = verify.Verify(data, sig)
}
}
}
}
2016-01-29 07:22:31 -05:00
}
if err != nil {
t.Logf("failed: %s", err.Error())
2016-01-29 07:22:31 -05:00
t.Fail()
}
2016-01-28 10:16:26 -05:00
}
func BenchmarkDSAGenerate(b *testing.B) {
var sk DSAPrivateKey
2016-07-10 09:20:21 -04:00
for n := 0; n < b.N; n++ {
_, err := sk.Generate()
if err != nil {
panic(err.Error())
}
}
}
func BenchmarkDSASignVerify(b *testing.B) {
var sk DSAPrivateKey
var pk DSAPublicKey
var err error
sk, err = sk.Generate()
if err != nil {
panic(err.Error())
}
pk, err = sk.Public()
if err != nil {
panic(err.Error())
}
s, _ := sk.NewSigner()
v, _ := pk.NewVerifier()
data := make([]byte, 1024)
fail := 0
2016-07-10 09:20:21 -04:00
for n := 0; n < b.N; n++ {
sig, err := s.Sign(data)
if err != nil {
panic(err.Error())
}
err = v.Verify(data, sig)
if err != nil {
2016-07-10 09:20:21 -04:00
fail++
}
}
log.Infof("%d fails %d signs", fail, b.N)
}