]> Cypherpunks.ru repositories - gogost.git/blobdiff - src/cypherpunks.ru/gogost/gost3410/2001_test.go
Split long lines
[gogost.git] / src / cypherpunks.ru / gogost / gost3410 / 2001_test.go
index 21553b4eca70dff952a065a5e00d042b26f27088..8bccc62d71e0307d727b6227699b0fd0c82aa036 100644 (file)
@@ -1,5 +1,5 @@
 // GoGOST -- Pure Go GOST cryptographic functions library
-// Copyright (C) 2015-2016 Sergey Matveev <stargrave@stargrave.org>
+// Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -19,7 +19,6 @@ package gost3410
 import (
        "bytes"
        "crypto/rand"
-       "encoding/hex"
        "testing"
        "testing/quick"
 )
@@ -64,7 +63,7 @@ func TestRFCVectors(t *testing.T) {
        if err != nil {
                t.FailNow()
        }
-       prv, err := NewPrivateKey(c, DigestSize2001, priv)
+       prv, err := NewPrivateKey(c, Mode2001, priv)
        if err != nil {
                t.FailNow()
        }
@@ -97,7 +96,7 @@ func TestRandom2001(t *testing.T) {
        f := func(data [31]byte, digest [32]byte) bool {
                prv, err := NewPrivateKey(
                        c,
-                       DigestSize2001,
+                       Mode2001,
                        append([]byte{0xde}, data[:]...),
                )
                if err != nil {
@@ -108,7 +107,7 @@ func TestRandom2001(t *testing.T) {
                        return false
                }
                pubRaw := pub.Raw()
-               pub, err = NewPublicKey(c, DigestSize2001, pubRaw)
+               pub, err = NewPublicKey(c, Mode2001, pubRaw)
                if err != nil {
                        return false
                }
@@ -129,7 +128,7 @@ func TestRandom2001(t *testing.T) {
 
 func BenchmarkSign2001(b *testing.B) {
        c, _ := NewCurveFromParams(CurveParamsGostR34102001Test)
-       prv, err := GenPrivateKey(c, DigestSize2001, rand.Reader)
+       prv, err := GenPrivateKey(c, Mode2001, rand.Reader)
        if err != nil {
                b.FailNow()
        }
@@ -143,7 +142,7 @@ func BenchmarkSign2001(b *testing.B) {
 
 func BenchmarkVerify2001(b *testing.B) {
        c, _ := NewCurveFromParams(CurveParamsGostR34102001Test)
-       prv, err := GenPrivateKey(c, DigestSize2001, rand.Reader)
+       prv, err := GenPrivateKey(c, Mode2001, rand.Reader)
        if err != nil {
                b.FailNow()
        }
@@ -163,44 +162,28 @@ func BenchmarkVerify2001(b *testing.B) {
        }
 }
 
-func TestVKO(t *testing.T) {
+func TestPrvEqualsTo1(t *testing.T) {
        c, _ := NewCurveFromParams(CurveParamsGostR34102001Test)
-       ukm, _ := hex.DecodeString("33a252f825be7251")
-       prvRaw1, _ := hex.DecodeString("1df129e43dab345b68f6a852f4162dc69f36b2f84717d08755cc5c44150bf928")
-       prvRaw2, _ := hex.DecodeString("5b9356c6474f913f1e83885ea0edd5df1a43fd9d799d219093241157ac9ed473")
-       kek, _ := hex.DecodeString("ee4618a0dbb10cb31777b4b86a53d9e7ef6cb3e400101410f0c0f2af46c494a6")
-       prv1, _ := NewPrivateKey(c, DigestSize2001, prvRaw1)
-       prv2, _ := NewPrivateKey(c, DigestSize2001, prvRaw2)
-       pub1, _ := prv1.PublicKey()
-       pub2, _ := prv2.PublicKey()
-       kek1, _ := prv1.KEK(pub2, ukm)
-       kek2, _ := prv2.KEK(pub1, ukm)
-       if bytes.Compare(kek1, kek2) != 0 {
+       prv, err := NewPrivateKey(c, Mode2001, []byte{0x01})
+       if err != nil {
                t.FailNow()
        }
-       if bytes.Compare(kek1, kek) != 0 {
+       pub, err := prv.PublicKey()
+       if err != nil {
                t.FailNow()
        }
-}
-
-func TestRandomVKO(t *testing.T) {
-       c, _ := NewCurveFromParams(CurveParamsGostR34102001Test)
-       f := func(prvRaw1 [32]byte, prvRaw2 [32]byte, ukm [8]byte) bool {
-               prv1, err := NewPrivateKey(c, DigestSize2001, prvRaw1[:])
-               if err != nil {
-                       return false
-               }
-               prv2, err := NewPrivateKey(c, DigestSize2001, prvRaw2[:])
-               if err != nil {
-                       return false
-               }
-               pub1, _ := prv1.PublicKey()
-               pub2, _ := prv2.PublicKey()
-               kek1, _ := prv1.KEK(pub2, ukm[:])
-               kek2, _ := prv2.KEK(pub1, ukm[:])
-               return bytes.Compare(kek1, kek2) == 0
+       digest := []byte{
+               0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+               0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+               0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+               0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
        }
-       if err := quick.Check(f, nil); err != nil {
-               t.Error(err)
+       sign, err := prv.SignDigest(digest, rand.Reader)
+       if err != nil {
+               t.FailNow()
+       }
+       valid, err := pub.VerifyDigest(digest, sign)
+       if err != nil || !valid {
+               t.FailNow()
        }
 }