summaryrefslogtreecommitdiff
path: root/benchmark/openssl_test.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2015-09-06 11:54:50 +0200
committerJakob Unterwurzacher2015-09-06 11:54:50 +0200
commit0a35d0970e86efbc5ed494395de7b448d3e337d0 (patch)
tree2c1fbfa766ad1546d45ad3b1b93a11fd6d0665a9 /benchmark/openssl_test.go
parent5f4c9240ca1092b47553fe34b9cc1b7836222b6a (diff)
Add openssl_benchmark.bash script
Diffstat (limited to 'benchmark/openssl_test.go')
-rw-r--r--benchmark/openssl_test.go140
1 files changed, 0 insertions, 140 deletions
diff --git a/benchmark/openssl_test.go b/benchmark/openssl_test.go
deleted file mode 100644
index f0b7bc5..0000000
--- a/benchmark/openssl_test.go
+++ /dev/null
@@ -1,140 +0,0 @@
-package benchmark
-
-// Benchmark go built-int GCM against spacemonkey openssl bindings
-//
-// Run benchmark:
-// go test -bench=.
-
-import (
- "bytes"
- "testing"
- "github.com/spacemonkeygo/openssl"
- "crypto/aes"
- "crypto/cipher"
-)
-
-func BenchmarkAESGCMSeal4K(b *testing.B) {
- buf := make([]byte, 1024*4)
- b.SetBytes(int64(len(buf)))
-
- var key [16]byte
- var nonce [12]byte
- aes, _ := aes.NewCipher(key[:])
- aesgcm, _ := cipher.NewGCM(aes)
- var out []byte
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- out = aesgcm.Seal(out[:0], nonce[:], buf, nil)
- }
-}
-
-func BenchmarkAESGCMOpen4K(b *testing.B) {
- buf := make([]byte, 1024*4)
- b.SetBytes(int64(len(buf)))
-
- var key [16]byte
- var nonce [12]byte
- aes, _ := aes.NewCipher(key[:])
- aesgcm, _ := cipher.NewGCM(aes)
- var out []byte
- out = aesgcm.Seal(out[:0], nonce[:], buf, nil)
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- _, err := aesgcm.Open(buf[:0], nonce[:], out, nil)
- if err != nil {
- b.Errorf("Open: %v", err)
- }
- }
-}
-
-func BenchmarkOpensslGCMenc4K(b *testing.B) {
- buf := make([]byte, 1024*4)
- b.SetBytes(int64(len(buf)))
-
- var key [16]byte
- var nonce [12]byte
-
- var ciphertext bytes.Buffer
- var part []byte
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- ciphertext.Reset()
- ectx, err := openssl.NewGCMEncryptionCipherCtx(128, nil, key[:], nonce[:])
- if err != nil {
- b.FailNow()
- }
- part, err = ectx.EncryptUpdate(buf)
- if err != nil {
- b.FailNow()
- }
- ciphertext.Write(part)
- part, err = ectx.EncryptFinal()
- if err != nil {
- b.FailNow()
- }
- ciphertext.Write(part)
- part, err = ectx.GetTag()
- if err != nil {
- b.FailNow()
- }
- ciphertext.Write(part)
- }
-}
-
-func BenchmarkOpensslGCMdec4K(b *testing.B) {
- buf := makeOpensslCiphertext()
- b.SetBytes(int64(1024*4))
-
- tag := buf[4096:]
- buf = buf[0:4096]
-
- var key [16]byte
- var nonce [12]byte
-
- var plaintext bytes.Buffer
- var part []byte
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- plaintext.Reset()
- dctx, err := openssl.NewGCMDecryptionCipherCtx(128, nil, key[:], nonce[:])
- if err != nil {
- b.FailNow()
- }
- part, err = dctx.DecryptUpdate(buf)
- if err != nil {
- b.FailNow()
- }
- plaintext.Write(part)
- err = dctx.SetTag(tag)
- if err != nil {
- b.FailNow()
- }
- part, err = dctx.DecryptFinal()
- if err != nil {
- b.FailNow()
- }
- plaintext.Write(part)
- }
-}
-
-func makeOpensslCiphertext() []byte {
- buf := make([]byte, 1024*4)
- var key [16]byte
- var nonce [12]byte
- var ciphertext bytes.Buffer
- var part []byte
-
- ectx, _ := openssl.NewGCMEncryptionCipherCtx(128, nil, key[:], nonce[:])
- part, _ = ectx.EncryptUpdate(buf)
- ciphertext.Write(part)
- part, _ = ectx.EncryptFinal()
- ciphertext.Write(part)
- part, _ = ectx.GetTag()
- ciphertext.Write(part)
-
- return ciphertext.Bytes()
-}