]> Cypherpunks.ru repositories - gogost.git/blobdiff - gost28147/wrap_test.go
28147-89 and CryptoPro key wrapping support
[gogost.git] / gost28147 / wrap_test.go
diff --git a/gost28147/wrap_test.go b/gost28147/wrap_test.go
new file mode 100644 (file)
index 0000000..9cf066b
--- /dev/null
@@ -0,0 +1,30 @@
+package gost28147
+
+import (
+       "bytes"
+       "crypto/rand"
+       "io"
+       "testing"
+)
+
+func TestWrapSymmetric(t *testing.T) {
+       kek := make([]byte, KeySize)
+       cek := make([]byte, KeySize)
+       ukm := make([]byte, 8)
+       for i := 0; i < 1000; i++ {
+               if _, err := io.ReadFull(rand.Reader, kek); err != nil {
+                       t.Fatal(err)
+               }
+               if _, err := io.ReadFull(rand.Reader, cek); err != nil {
+                       t.Fatal(err)
+               }
+               if _, err := io.ReadFull(rand.Reader, ukm); err != nil {
+                       t.Fatal(err)
+               }
+               data := WrapGost(ukm, kek, cek)
+               got := UnwrapGost(kek, data)
+               if !bytes.Equal(got, cek) {
+                       t.FailNow()
+               }
+       }
+}