X-Git-Url: http://www.git.cypherpunks.ru/?p=gogost.git;a=blobdiff_plain;f=mgm%2Fmode_test.go;h=984ea483f9b27b8b90e01507c3bbbd289467cadc;hp=7d1d984316915227bdc46fe957a570175572fbea;hb=7e8907d3f9c6eeec0a49e563923cb0aab0e9aeac;hpb=d023c8db1c87409d20fbfe4f2f3237922f009fe5 diff --git a/mgm/mode_test.go b/mgm/mode_test.go index 7d1d984..984ea48 100644 --- a/mgm/mode_test.go +++ b/mgm/mode_test.go @@ -19,6 +19,7 @@ import ( "bytes" "crypto/cipher" "crypto/rand" + "io" "testing" "testing/quick" @@ -145,3 +146,55 @@ func TestSymmetric(t *testing.T) { nonce[:gost341264.BlockSize], ) } + +func BenchmarkMGM64(b *testing.B) { + key := make([]byte, gost341264.KeySize) + if _, err := io.ReadFull(rand.Reader, key); err != nil { + panic(err) + } + nonce := make([]byte, gost341264.BlockSize) + if _, err := io.ReadFull(rand.Reader, nonce); err != nil { + panic(err) + } + nonce[0] &= 0x7F + pt := make([]byte, 1280+3) + if _, err := io.ReadFull(rand.Reader, pt); err != nil { + panic(err) + } + c := gost341264.NewCipher(key) + aead, err := NewMGM(c, gost341264.BlockSize) + if err != nil { + panic(err) + } + ct := make([]byte, len(pt)+aead.Overhead()) + b.ResetTimer() + for i := 0; i < b.N; i++ { + aead.Seal(ct[:0], nonce, pt, nil) + } +} + +func BenchmarkMGM128(b *testing.B) { + key := make([]byte, gost3412128.KeySize) + if _, err := io.ReadFull(rand.Reader, key); err != nil { + panic(err) + } + nonce := make([]byte, gost3412128.BlockSize) + if _, err := io.ReadFull(rand.Reader, nonce); err != nil { + panic(err) + } + nonce[0] &= 0x7F + pt := make([]byte, 1280+3) + if _, err := io.ReadFull(rand.Reader, pt); err != nil { + panic(err) + } + c := gost3412128.NewCipher(key) + aead, err := NewMGM(c, gost3412128.BlockSize) + if err != nil { + panic(err) + } + ct := make([]byte, len(pt)+aead.Overhead()) + b.ResetTimer() + for i := 0; i < b.N; i++ { + aead.Seal(ct[:0], nonce, pt, nil) + } +}