X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410_vko.py;h=ba489d6acb7bb3e1e64818d9b954487e4c516d38;hb=21a30721c31912c296e1faced73e2fd0db191be9;hp=caf3b5bd2585d8e1dae25511045a19fc1f4c72ca;hpb=8ed245158dd501fd5f4a161eeb5007e6d0f8050b;p=pygost.git diff --git a/pygost/gost3410_vko.py b/pygost/gost3410_vko.py index caf3b5b..ba489d6 100644 --- a/pygost/gost3410_vko.py +++ b/pygost/gost3410_vko.py @@ -1,6 +1,6 @@ # coding: utf-8 # PyGOST -- Pure Python GOST cryptographic functions library -# Copyright (C) 2015-2016 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 @@ -14,7 +14,7 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -"""Diffie-Hellman functions, VKO GOST R 34.10-2001/2012 +"""Key agreement functions, VKO GOST R 34.10-2001/2012 """ from pygost.gost3410 import pub_marshal @@ -40,7 +40,7 @@ def kek(curve, prv, pub, ukm, mode): def kek_34102001(curve, prv, pub, ukm): - """ Make Diffie-Hellman computation (34.10-2001, 34.11-94) + """ Key agreement (34.10-2001, 34.11-94) :param GOST3410Curve curve: curve to use :param long prv: private key @@ -60,8 +60,8 @@ def kek_34102001(curve, prv, pub, ukm): ).digest() -def kek_34102012256(curve, prv, pub, ukm=1): - """ Make Diffie-Hellman computation (34.10-2012, 34.11-2012 256 bit) +def kek_34102012256(curve, prv, pub, ukm=1, mode=2012): + """ Key agreement (34.10-2012, 34.11-2012 256 bit) :param GOST3410Curve curve: curve to use :param long prv: private key @@ -70,12 +70,15 @@ def kek_34102012256(curve, prv, pub, ukm=1): :param long ukm: user keying material, VKO-factor :returns: Key Encryption Key (shared key) :rtype: bytes, 32 bytes + + Shared Key Encryption Key computation is based on + :rfc:`7836` VKO GOST R 34.10-2012. """ - return GOST34112012256(kek(curve, prv, pub, ukm, mode=2012)).digest() + return GOST34112012256(kek(curve, prv, pub, ukm, mode=mode)).digest() def kek_34102012512(curve, prv, pub, ukm=1): - """ Make Diffie-Hellman computation (34.10-2012, 34.11-2012 512 bit) + """ Key agreement (34.10-2012, 34.11-2012 512 bit) :param GOST3410Curve curve: curve to use :param long prv: private key @@ -84,5 +87,8 @@ def kek_34102012512(curve, prv, pub, ukm=1): :param long ukm: user keying material, VKO-factor :returns: Key Encryption Key (shared key) :rtype: bytes, 32 bytes + + Shared Key Encryption Key computation is based on + :rfc:`7836` VKO GOST R 34.10-2012. """ return GOST34112012512(kek(curve, prv, pub, ukm, mode=2012)).digest()