X-Git-Url: http://www.git.cypherpunks.ru/?p=gogost.git;a=blobdiff_plain;f=gost3410%2Fvko2001_test.go;h=80e30ad3a9c435f96719c374e81f156f51678aa8;hp=29931611d27bb9b168774263f8e80d793cdebb40;hb=f4078e53da769ade0d92e80ad9093040e7f71d58;hpb=c07494bbd559b9d00f391e28cfd070e18afe9900 diff --git a/gost3410/vko2001_test.go b/gost3410/vko2001_test.go index 2993161..80e30ad 100644 --- a/gost3410/vko2001_test.go +++ b/gost3410/vko2001_test.go @@ -1,5 +1,5 @@ // GoGOST -- Pure Go GOST cryptographic functions library -// Copyright (C) 2015-2019 Sergey Matveev +// Copyright (C) 2015-2020 Sergey Matveev // // 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 @@ -18,6 +18,7 @@ package gost3410 import ( "bytes" "encoding/hex" + "math/big" "testing" "testing/quick" ) @@ -29,8 +30,8 @@ func TestVKO2001(t *testing.T) { prvRaw1, _ := hex.DecodeString("1df129e43dab345b68f6a852f4162dc69f36b2f84717d08755cc5c44150bf928") prvRaw2, _ := hex.DecodeString("5b9356c6474f913f1e83885ea0edd5df1a43fd9d799d219093241157ac9ed473") kek, _ := hex.DecodeString("ee4618a0dbb10cb31777b4b86a53d9e7ef6cb3e400101410f0c0f2af46c494a6") - prv1, _ := NewPrivateKey(c, Mode2001, prvRaw1) - prv2, _ := NewPrivateKey(c, Mode2001, prvRaw2) + prv1, _ := NewPrivateKey(c, prvRaw1) + prv2, _ := NewPrivateKey(c, prvRaw2) pub1, _ := prv1.PublicKey() pub2, _ := prv2.PublicKey() kek1, _ := prv1.KEK2001(pub2, ukm) @@ -43,14 +44,34 @@ func TestVKO2001(t *testing.T) { } } +func TestVKOUKMAltering(t *testing.T) { + c := CurveIdtc26gost34102012256paramSetA() + ukm := big.NewInt(1) + prv, err := NewPrivateKey(c, bytes.Repeat([]byte{0x12}, 32)) + if err != nil { + panic(err) + } + pub, err := prv.PublicKey() + if err != nil { + panic(err) + } + _, err = prv.KEK(pub, ukm) + if err != nil { + panic(err) + } + if ukm.Cmp(big.NewInt(1)) != 0 { + t.FailNow() + } +} + func TestRandomVKO2001(t *testing.T) { c := CurveIdGostR34102001TestParamSet() f := func(prvRaw1 [32]byte, prvRaw2 [32]byte, ukmRaw [8]byte) bool { - prv1, err := NewPrivateKey(c, Mode2001, prvRaw1[:]) + prv1, err := NewPrivateKey(c, prvRaw1[:]) if err != nil { return false } - prv2, err := NewPrivateKey(c, Mode2001, prvRaw2[:]) + prv2, err := NewPrivateKey(c, prvRaw2[:]) if err != nil { return false }