@settitle PyGOST
@copying
-Copyright @copyright{} 2015-2020 @email{stargrave@@stargrave.org, Sergey Matveev}
+Copyright @copyright{} 2015-2022 @email{stargrave@@stargrave.org, Sergey Matveev}
@end copying
@node Top
@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}.
+You can read about GOST algorithms @url{http://www.gost.cypherpunks.ru/, more}.
Currently supported algorithms are:
(@url{https://tools.ietf.org/html/rfc7801.html, RFC 7801})
@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)
+ (ECB, CTR, OFB, CBC, CFB, MAC), ISO 10126 padding
+@item MGM AEAD mode for 64 and 128 bit ciphers
+ (@url{https://tools.ietf.org/html/rfc9058.html, RFC 9058})
+@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
>>> from pygost.gost3410 import CURVES
>>> curve = CURVES["id-tc26-gost-3410-12-512-paramSetA"]
>>> from os import urandom
->>> prv_raw = urandom(32)
+>>> prv_raw = urandom(64)
>>> from pygost.gost3410 import prv_unmarshal
>>> prv = prv_unmarshal(prv_raw)
>>> from pygost.gost3410 import public_key
>>> from pygost.gost3410 import pub_marshal
>>> from pygost.utils import hexenc
>>> print "Public key is:", hexenc(pub_marshal(pub))
->>> from pygost import gost34112012256
+>>> from pygost import gost34112012512
>>> data_for_signing = b"some data"
->>> dgst = gost34112012256.new(data_for_signing).digest()[::-1]
+>>> dgst = gost34112012512.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 example
Please send questions, bug reports and patches to
-@url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost}
+@url{http://lists.cypherpunks.ru/gost.html, gost}
mailing list. Announcements also go to this mailing list.
@insertcopying
+@include faq.texi
@include news.texi
-@include download.texi
+@include install.texi
@bye