\input texinfo @documentencoding UTF-8 @settitle GoGOST @copying Copyright @copyright{} 2015-2018 @email{stargrave@@stargrave.org, Sergey Matveev} @end copying @node Top @top GoGOST Pure Go GOST cryptographic functions library. GOST is GOvernment STandard of Russian Federation (and Soviet Union). 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}. Site is also available as @url{http://a5zmymxbjreuvbftgzmu64vcw2ssa3s44c2dn2jryxee6utn34qa.b32.i2p/, I2P service}. Currently supported algorithms are: @itemize @item GOST 28147-89 (@url{https://tools.ietf.org/html/rfc5830.html, RFC 5830}) block cipher with ECB, CNT (CTR), CFB, MAC, CBC (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}) modes of operation @item various 28147-89-related S-boxes included @item GOST R 34.11-94 hash function (@url{https://tools.ietf.org/html/rfc5831.html, RFC 5831}) @item GOST R 34.11-2012 Стрибог (Streebog) hash function (@url{https://tools.ietf.org/html/rfc6986.html, RFC 6986}) @item GOST R 34.10-2001 (@url{https://tools.ietf.org/html/rfc5832.html, RFC 5832}) public key signature function @item GOST R 34.10-2012 (@url{https://tools.ietf.org/html/rfc7091.html, RFC 7091}) public key signature function @item various 34.10 curve parameters included @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 (@url{https://tools.ietf.org/html/rfc7836.html, RFC 7836}) @item GOST R 34.12-2015 128-bit block cipher Кузнечик (Kuznechik) (@url{https://tools.ietf.org/html/rfc7801.html, RFC 7801}) @item GOST R 34.13-2015 padding methods @end itemize Please send questions, bug reports and patches to @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} mailing list. Announcements also go to this mailing list. @insertcopying @node News @unnumbered News @table @strong @item 2.0 @itemize @item 34.11-2012 is split on two different modules: @code{gost34112012256} and @code{gost34112012512} @item 34.11-94's digest is reversed. Now it is compatible with TC26's HMAC and PBKDF2 test vectors @item @code{gogost-streebog} is split to @code{streebog256} and @code{streebog512} correspondingly by analogy with sha* utilities @item added VKO 34.10-2012 support with corresponding test vectors @item @code{gost3410.DigestSizeX} is renamed to @code{gost3410.ModeX} because it is not related to digest size, but parameters and key sizes @item KEK functions take @code{big.Int} UKM value. Use @code{NewUKM} to unmarshal raw binary UKM @end itemize @item 1.1 @itemize @item gogost-streebog is able to use either 256 or 512 bits digest size @item 34.13-2015 padding methods @item 28147-89 CBC mode of operation @end itemize @end table @node Download @unnumbered Download Preferable way is to download tarball with the signature from website and, for example, run tests with benchmarks: @verbatim % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz.sig % gpg --verify gogost-1.1.tar.xz.sig gogost-1.1.tar.xz % xz -d < gogost-1.1.tar.xz | tar xf - % make -C gogost-1.1 all bench % echo hello world | ./gogost-1.1/streebog256 f72018189a5cfb803dbe1f2149cf554c40093d8e7f81c21e08ac5bcd09d9934d @end verbatim And then you can include its source code in your project for example like this: @verbatim % mkdir -p myproj/src % export GOPATH=$PWD/myproj % cd myproj/src % cat > main.go < @end verbatim @itemize @item @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} maillist @item @verbatim % gpg --keyserver hkp://keys.gnupg.net/ --recv-keys 0x82343436696FC85A % gpg --auto-key-locate dane --locate-keys gogost at cypherpunks dot ru % gpg --auto-key-locate wkd --locate-keys gogost at cypherpunks dot ru % gpg --auto-key-locate pka --locate-keys gogost at cypherpunks dot ru @end verbatim @item @verbatiminclude PUBKEY.asc @end itemize You can obtain development source code by cloning @url{http://git-scm.com/, Git} @url{https://git.cypherpunks.ru/cgit.cgi/gogost.git/}. @bye