]> Cypherpunks.ru repositories - gogost.git/blob - gost28147/wrap_test.go
28147-89 and CryptoPro key wrapping support
[gogost.git] / gost28147 / wrap_test.go
1 package gost28147
2
3 import (
4         "bytes"
5         "crypto/rand"
6         "io"
7         "testing"
8 )
9
10 func TestWrapSymmetric(t *testing.T) {
11         kek := make([]byte, KeySize)
12         cek := make([]byte, KeySize)
13         ukm := make([]byte, 8)
14         for i := 0; i < 1000; i++ {
15                 if _, err := io.ReadFull(rand.Reader, kek); err != nil {
16                         t.Fatal(err)
17                 }
18                 if _, err := io.ReadFull(rand.Reader, cek); err != nil {
19                         t.Fatal(err)
20                 }
21                 if _, err := io.ReadFull(rand.Reader, ukm); err != nil {
22                         t.Fatal(err)
23                 }
24                 data := WrapGost(ukm, kek, cek)
25                 got := UnwrapGost(kek, data)
26                 if !bytes.Equal(got, cek) {
27                         t.FailNow()
28                 }
29         }
30 }