@settitle PyGOST
@copying
-Copyright @copyright{} 2015-2019 @email{stargrave@@stargrave.org, Sergey Matveev}
+Copyright @copyright{} 2015-2020 @email{stargrave@@stargrave.org, Sergey Matveev}
@end copying
@node Top
It is
@url{https://www.gnu.org/philosophy/pragmatic.html, copylefted}
@url{https://www.gnu.org/philosophy/free-sw.html, free software}:
-licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3+}.
-You can read about GOST algorithms @url{http://gost.cypherpunks.ru/, more}.
+licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3}.
+You can read about GOST algorithms @url{http://www.gost.cypherpunks.ru/, more}.
Currently supported algorithms are:
(@url{https://tools.ietf.org/html/rfc7091.html, RFC 7091})
public key signature function
@item various 34.10 curve parameters included
+@item Coordinates conversion from twisted Edwards to Weierstrass
+ form and vice versa
@item VKO GOST R 34.10-2001 key agreement function
(@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
@item VKO GOST R 34.10-2012 key agreement function
@item GOST R 34.12-2015 64-bit block cipher Магма (Magma)
@item GOST R 34.13-2015 padding methods and block cipher modes of operation
(ECB, CTR, OFB, CBC, CFB, MAC)
+@item MGM AEAD mode for 64 and 128 bit ciphers (Р 1323565.1.026–2019)
+@item CTR-ACPKM, OMAC-ACPKM-Master modes of operation (Р 1323565.1.017-2018)
+@item KExp15/KImp15 key export/import functions (Р 1323565.1.017-2018)
+@item KDF_GOSTR3411_2012_256, KDF_TREE_GOSTR3411_2012_256 (Р 50.1.113-2016)
+@item KEG export key generation function (Р 1323565.1.020-2018)
@item PEP247-compatible hash/MAC functions
@end itemize
Example 34.10-2012 keypair generation, signing and verifying:
-@verbatim
->>> from pygost.gost3410 import CURVE_PARAMS
->>> from pygost.gost3410 import GOST3410Curve
->>> curve = GOST3410Curve(*CURVE_PARAMS["id-tc26-gost-3410-12-512-paramSetA"])
+@example
+>>> from pygost.gost3410 import CURVES
+>>> curve = CURVES["id-tc26-gost-3410-12-512-paramSetA"]
>>> from os import urandom
>>> prv_raw = urandom(32)
>>> from pygost.gost3410 import prv_unmarshal
>>> print "Public key is:", hexenc(pub_marshal(pub))
>>> from pygost import gost34112012256
>>> data_for_signing = b"some data"
->>> dgst = gost34112012256.new(data_for_signing).digest()
+>>> dgst = gost34112012256.new(data_for_signing).digest()[::-1]
>>> from pygost.gost3410 import sign
->>> signature = sign(curve, prv, dgst, mode=2012)
+>>> signature = sign(curve, prv, dgst)
>>> from pygost.gost3410 import verify
->>> verify(curve, pub, dgst, signature, mode=2012)
+>>> verify(curve, pub, dgst, signature)
True
-@end verbatim
+@end example
Please send questions, bug reports and patches to
@url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost}
@insertcopying
+@include faq.texi
@include news.texi
-@include download.texi
+@include install.texi
@bye