package aestests import ( "crypto/aes" "crypto/cipher" "crypto/rand" "log" "testing" ) func must(err error) { if err != nil { panic(err) } } func TestAES(t *testing.T) { key := make([]byte, 32) rand.Read(key) block, err := aes.NewCipher(key) must(err) aesgcm, err := cipher.NewGCM(block) must(err) log.Print(aesgcm.NonceSize()) log.Print(aesgcm.Overhead()) } func BenchmarkSeal(b *testing.B) { key := make([]byte, 32) rand.Read(key) block, err := aes.NewCipher(key) must(err) cryptor, err := cipher.NewGCM(block) must(err) nonce := make([]byte, 12) rand.Read(nonce) data := make([]byte, 1400) rand.Read(data) out := make([]byte, 1500) b.ResetTimer() for i := 0; i < b.N; i++ { out = cryptor.Seal(out[:0], nonce, data, nil) } } func BenchmarkOpen(b *testing.B) { key := make([]byte, 32) rand.Read(key) block, err := aes.NewCipher(key) must(err) cryptor, err := cipher.NewGCM(block) must(err) nonce := make([]byte, 12) rand.Read(nonce) data := make([]byte, 1400) rand.Read(data) sealed := make([]byte, 1500) sealed = cryptor.Seal(sealed[:0], nonce, data, nil) dec := make([]byte, 1500) b.ResetTimer() for i := 0; i < b.N; i++ { dec, err = cryptor.Open(dec[:0], nonce, sealed, nil) } }