X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgogost%2Fgost3410%2Fvko.go;h=bb10f9430b98bbf818c24e2bbb912bafb8fffa6e;hb=91562b3cf4aad503c493aa7b69abfbb07b46e63a;hp=7473915c004492b9a40af732018517b75b1361b5;hpb=014be6ab0719643d1e2996a360ab0619124b7e0e;p=gogost.git diff --git a/src/cypherpunks.ru/gogost/gost3410/vko.go b/src/cypherpunks.ru/gogost/gost3410/vko.go index 7473915..bb10f94 100644 --- a/src/cypherpunks.ru/gogost/gost3410/vko.go +++ b/src/cypherpunks.ru/gogost/gost3410/vko.go @@ -1,10 +1,9 @@ // GoGOST -- Pure Go GOST cryptographic functions library -// Copyright (C) 2015-2017 Sergey Matveev +// Copyright (C) 2015-2019 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 -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// the Free Software Foundation, version 3 of the License. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -21,14 +20,16 @@ import ( ) func (prv *PrivateKey) KEK(pub *PublicKey, ukm *big.Int) ([]byte, error) { - keyX, keyY, err := prv.c.Exp(prv.key, pub.x, pub.y) + keyX, keyY, err := prv.C.Exp(prv.Key, pub.X, pub.Y) if err != nil { return nil, err } - keyX, keyY, err = prv.c.Exp(ukm, keyX, keyY) - if err != nil { - return nil, err + if ukm.Cmp(bigInt1) != 0 { + keyX, keyY, err = prv.C.Exp(ukm, keyX, keyY) + if err != nil { + return nil, err + } } - pk := PublicKey{prv.c, prv.mode, keyX, keyY} + pk := PublicKey{prv.C, prv.Mode, keyX, keyY} return pk.Raw(), nil }