diff --git a/cmac/cmac_test.go b/cmac/cmac_test.go index b598488..6829c42 100644 --- a/cmac/cmac_test.go +++ b/cmac/cmac_test.go @@ -1,14 +1,20 @@ -package cmac +package cmac_test import ( "bytes" "crypto/aes" + "crypto/cipher" + "hash" "testing" + "github.com/RyuaNerin/go-krypto/cmac" "github.com/RyuaNerin/go-krypto/internal" + "github.com/RyuaNerin/go-krypto/lea" + + . "github.com/RyuaNerin/testingutil" ) -func TestCMAC_SEED(t *testing.T) { +func TestCMAC_AES256(t *testing.T) { K := internal.HB(`00112233445566778899aabbccddeeff`) M := internal.HB(`000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f`) T := [][]byte{ @@ -52,7 +58,7 @@ func TestCMAC_SEED(t *testing.T) { panic(err) } - h := New(b) + h := cmac.New(b) var dst []byte for length := 1; length < len(M); length++ { @@ -81,3 +87,49 @@ func TestCMAC_SEED(t *testing.T) { } } } + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +var ( + aes128, _ = aes.NewCipher(make([]byte, 16)) + aes192, _ = aes.NewCipher(make([]byte, 24)) + aes256, _ = aes.NewCipher(make([]byte, 32)) + + lea128, _ = lea.NewCipher(make([]byte, 16)) + lea192, _ = lea.NewCipher(make([]byte, 24)) + lea256, _ = lea.NewCipher(make([]byte, 32)) +) + +func newHash(b cipher.Block) hash.Hash { + return cmac.New(b) +} + +func Benchmark_Hash_8(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 8, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 8, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 8, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 8, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 8, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 8, false) }) +} + +func Benchmark_Hash_1K(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 1024, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 1024, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 1024, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 1024, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 1024, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 1024, false) }) +} + +func Benchmark_Hash_8K(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 8192, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 8192, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 8192, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 8192, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 8192, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 8192, false) }) +} diff --git a/gmac/gmac_test.go b/gmac/gmac_test.go index 6c7dd4a..fa14cca 100644 --- a/gmac/gmac_test.go +++ b/gmac/gmac_test.go @@ -1,11 +1,15 @@ -package gmac +package gmac_test import ( "bytes" "crypto/aes" + "crypto/cipher" + "hash" "testing" + "github.com/RyuaNerin/go-krypto/gmac" "github.com/RyuaNerin/go-krypto/internal" + "github.com/RyuaNerin/go-krypto/lea" . "github.com/RyuaNerin/testingutil" ) @@ -16,7 +20,7 @@ func Test_GMAC_ShortWrite(t *testing.T) { t.Fatal(err) } - h, err := NewGMAC(c, nil) + h, err := gmac.NewGMAC(c, nil) if err != nil { t.Fatal(err) } @@ -31,7 +35,7 @@ func Test_GMAC(t *testing.T) { $ ./test.exe Key: 00000000000000000000000000000000 - IV: 00000000000000000000000000000000 + IV: 00000000000000000000000000000000 Message: Yoda said, do or do not. There is no try. GMAC: E7EE2C63B4DC328EED4A86B3FB3490AF */ @@ -46,7 +50,7 @@ func Test_GMAC(t *testing.T) { t.Fatal(err) } - h, err := NewGMAC(c, iv) + h, err := gmac.NewGMAC(c, iv) if err != nil { t.Fatal(err) } @@ -66,3 +70,50 @@ func Test_GMAC(t *testing.T) { return } } + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +var ( + aes128, _ = aes.NewCipher(make([]byte, 16)) + aes192, _ = aes.NewCipher(make([]byte, 24)) + aes256, _ = aes.NewCipher(make([]byte, 32)) + + lea128, _ = lea.NewCipher(make([]byte, 16)) + lea192, _ = lea.NewCipher(make([]byte, 24)) + lea256, _ = lea.NewCipher(make([]byte, 32)) +) + +func newHash(b cipher.Block) hash.Hash { + h, _ := gmac.NewGMAC(b, make([]byte, 16)) + return h +} + +func Benchmark_Hash_8(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 8, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 8, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 8, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 8, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 8, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 8, false) }) +} + +func Benchmark_Hash_1K(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 1024, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 1024, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 1024, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 1024, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 1024, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 1024, false) }) +} + +func Benchmark_Hash_8K(b *testing.B) { + b.Run("AES-128", func(b *testing.B) { HB(b, newHash(aes128), 8192, false) }) + b.Run("AES-192", func(b *testing.B) { HB(b, newHash(aes192), 8192, false) }) + b.Run("AES-256", func(b *testing.B) { HB(b, newHash(aes256), 8192, false) }) + + b.Run("LEA-128", func(b *testing.B) { HB(b, newHash(lea128), 8192, false) }) + b.Run("LEA-192", func(b *testing.B) { HB(b, newHash(lea192), 8192, false) }) + b.Run("LEA-256", func(b *testing.B) { HB(b, newHash(lea256), 8192, false) }) +} diff --git a/has160/has160_test.go b/has160/has160_test.go index 11e4d71..253b747 100644 --- a/has160/has160_test.go +++ b/has160/has160_test.go @@ -44,6 +44,11 @@ func TestHAS160(t *testing.T) { //////////////////////////////////////////////////////////////////////////////////////////////////// +const ( + almost1K = 1024 - 5 + almost8K = 8*1024 - 5 +) + func Benchmark_Hash_8(b *testing.B) { HB(b, New(), 8, false) } -func Benchmark_Hash_1K(b *testing.B) { HB(b, New(), 1024, false) } -func Benchmark_Hash_8K(b *testing.B) { HB(b, New(), 8192, false) } +func Benchmark_Hash_1K(b *testing.B) { HB(b, New(), almost1K, false) } +func Benchmark_Hash_8K(b *testing.B) { HB(b, New(), almost8K, false) }