add elg benchmarks

This commit is contained in:
Jeff Becker
2016-07-19 09:36:46 -04:00
parent f1018eb8cc
commit 1f05c5f6b6
2 changed files with 68 additions and 1 deletions

View File

@ -4,10 +4,74 @@ import (
"bytes"
"crypto/rand"
"golang.org/x/crypto/openpgp/elgamal"
log "github.com/sirupsen/logrus"
"io"
"testing"
)
func BenchmarkElgGenerate(b *testing.B) {
k := new(elgamal.PrivateKey)
for n := 0 ; n < b.N ; n ++ {
err := ElgamalGenerate(k, rand.Reader)
if err != nil {
panic(err.Error())
}
}
}
func BenchmarkElgDecrypt(b *testing.B) {
prv := new(elgamal.PrivateKey)
err := ElgamalGenerate(prv, rand.Reader)
if err != nil {
panic(err.Error())
}
pub := createElgamalPublicKey(prv.Y.Bytes())
enc, err := createElgamalEncryption(pub, rand.Reader)
if err != nil {
panic(err.Error())
}
d := make([]byte, 222)
_, _ = io.ReadFull(rand.Reader, d)
c, err := enc.Encrypt(d)
fails := 0
dec := &elgDecrypter{
k: prv,
}
for n := 0 ; n < b.N ; n ++ {
p, err := dec.Decrypt(c)
if err != nil {
fails ++
} else if ! bytes.Equal(p, d) {
fails ++
}
}
log.Infof("%d fails %d rounds", fails, b.N)
}
func BenchmarkElgEncrypt(b *testing.B) {
prv := new(elgamal.PrivateKey)
err := ElgamalGenerate(prv, rand.Reader)
if err != nil {
panic(err.Error())
}
pub := createElgamalPublicKey(prv.Y.Bytes())
enc, err := createElgamalEncryption(pub, rand.Reader)
if err != nil {
panic(err.Error())
}
d := make([]byte, 222)
_, err = io.ReadFull(rand.Reader, d)
fails := 0
for n := 0 ; n < b.N ; n ++ {
_, err := enc.Encrypt(d)
if err != nil {
fails ++
}
}
log.Infof("%d fails %d rounds", fails, b.N)
}
func TestElg(t *testing.T) {
k := new(elgamal.PrivateKey)
err := ElgamalGenerate(k, rand.Reader)