]> Cypherpunks.ru repositories - gogost.git/blob - www.texi
gogost. and gost. homepages
[gogost.git] / www.texi
1 \input texinfo
2 @documentencoding UTF-8
3 @settitle GoGOST
4
5 @copying
6 Copyright @copyright{} 2015-2017 @email{stargrave@@stargrave.org, Sergey Matveev}
7 @end copying
8
9 @node Top
10 @top GoGOST
11
12 Pure Go GOST cryptographic functions library.
13 GOST is GOvernment STandard of Russian Federation (and Soviet Union).
14 It is
15 @url{https://www.gnu.org/philosophy/pragmatic.html, copylefted}
16 @url{https://www.gnu.org/philosophy/free-sw.html, free software}:
17 licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3+}.
18 You can read about GOST algorithms @url{http://gost.cypherpunks.ru/, more}.
19
20 Site is also available as @url{http://a5zmymxbjreuvbftgzmu64vcw2ssa3s44c2dn2jryxee6utn34qa.b32.i2p/, I2P service}.
21
22 Currently supported algorithms are:
23
24 @itemize
25 @item GOST 28147-89 (@url{https://tools.ietf.org/html/rfc5830.html, RFC 5830})
26     block cipher with ECB, CNT (CTR), CFB, MAC,
27     CBC (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
28     modes of operation
29 @item various 28147-89-related S-boxes included
30 @item GOST R 34.11-94 hash function
31     (@url{https://tools.ietf.org/html/rfc5831.html, RFC 5831})
32 @item GOST R 34.11-2012 Стрибог (Streebog) hash function
33     (@url{https://tools.ietf.org/html/rfc6986.html, RFC 6986})
34 @item GOST R 34.10-2001
35     (@url{https://tools.ietf.org/html/rfc5832.html, RFC 5832})
36     public key signature function
37 @item GOST R 34.10-2012
38     (@url{https://tools.ietf.org/html/rfc7091.html, RFC 7091})
39     public key signature function
40 @item various 34.10 curve parameters included
41 @item VKO GOST R 34.10-2001 key agreement function
42     (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
43 @item VKO GOST R 34.10-2012 key agreement function
44     (@url{https://tools.ietf.org/html/rfc7836.html, RFC 7836})
45 @item GOST R 34.12-2015 128-bit block cipher Кузнечик (Kuznechik)
46     (@url{https://tools.ietf.org/html/rfc7801.html, RFC 7801})
47 @item GOST R 34.13-2015 padding methods
48 @end itemize
49
50 Please send questions, bug reports and patches to
51 @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost}
52 mailing list. Announcements also go to this mailing list.
53
54 @insertcopying
55
56 @node News
57 @unnumbered News
58
59 @table @strong
60
61 @item 2.0
62     @itemize
63     @item 34.11-2012 is split on two different modules:
64         @code{gost34112012256} and @code{gost34112012512}
65     @item 34.11-94's digest is reversed. Now it is compatible with TC26's
66       HMAC and PBKDF2 test vectors
67     @item @code{gogost-streebog} is split to @code{streebog256} and
68         @code{streebog512} correspondingly by analogy with sha* utilities
69     @item added VKO 34.10-2012 support with corresponding test vectors
70     @item @code{gost3410.DigestSizeX} is renamed to
71         @code{gost3410.ModeX} because it is not related to digest size,
72         but parameters and key sizes
73     @item KEK functions take @code{big.Int} UKM value. Use @code{NewUKM}
74         to unmarshal raw binary UKM
75     @end itemize
76
77 @item 1.1
78     @itemize
79     @item gogost-streebog is able to use either 256 or 512 bits digest size
80     @item 34.13-2015 padding methods
81     @item 28147-89 CBC mode of operation
82     @end itemize
83
84 @end table
85
86 @node Download
87 @unnumbered Download
88
89 Preferable way is to download tarball with the signature from
90 website and, for example, run tests with benchmarks:
91
92 @verbatim
93 % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz
94 % wget http://gogost.cypherpunks.ru/gogost-1.1.tar.xz.sig
95 % gpg --verify gogost-1.1.tar.xz.sig gogost-1.1.tar.xz
96 % xz -d < gogost-1.1.tar.xz | tar xf -
97 % make -C gogost-1.1 all bench
98 % echo hello world | ./gogost-1.1/streebog256
99 f72018189a5cfb803dbe1f2149cf554c40093d8e7f81c21e08ac5bcd09d9934d
100 @end verbatim
101
102 And then you can include its source code in your project for example
103 like this:
104
105 @verbatim
106 % mkdir -p myproj/src
107 % export GOPATH=$PWD/myproj
108 % cd myproj/src
109 % cat > main.go <<EOF
110 package main
111
112 import (
113     "encoding/hex"
114     "fmt"
115
116     "cypherpunks.ru/gogost/gost34112012256"
117 )
118
119 func main() {
120     h := gost34112012256.New()
121     h.Write([]byte("hello world"))
122     fmt.Println(hex.EncodeToString(h.Sum(nil)))
123 }
124 EOF
125 % cp -r ../../gogost-1.1/src/cypherpunks.ru .
126 % go run main.go
127 c600fd9dd049cf8abd2f5b32e840d2cb0e41ea44de1c155dcd88dc84fe58a855
128 @end verbatim
129
130 @multitable {XXXXX} {XXXX KiB} {link sign} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
131 @headitem Version @tab Size @tab Tarball @tab SHA256 checksum @tab Streebog-256 checksum
132
133 @item 2.0 @tab 39 KiB
134 @tab @url{gogost-2.0.tar.xz, link} @url{gogost-2.0.tar.xz.sig, sign}
135 @tab @code{28E8C15C 0EC5CC2A 47A8CCDA DF9EADB5 E46970AA FB7FAAF3 AA250FFC 79CE57F7}
136 @tab @code{e2858b9c1e7834663838c44b9b9ebbd1f37e5b85ceba5698b6fb5d180e071710}
137
138 @item 1.2 @tab 34 KiB
139 @tab @url{gogost-1.2.tar.xz, link} @url{gogost-1.2.tar.xz.sig, sign}
140 @tab @code{B894D0E4 923F0361 8A33A360 65AE860F FCFAF8F5 42A82D71 EA0A0BA7 7BC99093}
141 @tab @code{fc6d3533e28d356398877674b6ee18954581c7f46832a5cf994ae243ab00ddf5}
142
143 @item 1.1 @tab 33 KiB
144 @tab @url{gogost-1.1.tar.xz, link} @url{gogost-1.1.tar.xz.sig, sign}
145 @tab @code{26D37912 6FE220C1 C0381835 DEFFDC4B BDCDC394 15D6E9C1 F8A5A302 04F9452B}
146 @tab @code{313fa58c2c030dd5acd20b524842bd2d4ec7403fcfca2a4a238ddc187c3ef0df}
147
148 @end multitable
149
150 You @strong{have to} verify downloaded tarballs integrity and
151 authenticity to be sure that you retrieved trusted and untampered
152 software. @url{https://www.gnupg.org/, The GNU Privacy Guard} is used
153 for that purpose.
154
155 For the very first time it it necessary to get signing public key and
156 import it. It is provided below, but you should check alternative
157 resources.
158
159 @verbatim
160 pub   rsa2048/0x82343436696FC85A 2016-09-13 [SC]
161       CEBD 1282 2C46 9C02 A81A  0467 8234 3436 696F C85A
162 uid   GoGOST releases <gogost at cypherpunks dot ru>
163 @end verbatim
164
165 @itemize
166
167 @item @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} maillist
168
169 @item
170 @verbatim
171 % gpg --keyserver hkp://keys.gnupg.net/ --recv-keys 0x82343436696FC85A
172 % gpg --auto-key-locate dane --locate-keys gogost at cypherpunks dot ru
173 % gpg --auto-key-locate wkd --locate-keys gogost at cypherpunks dot ru
174 % gpg --auto-key-locate pka --locate-keys gogost at cypherpunks dot ru
175 @end verbatim
176
177 @item
178 @verbatiminclude PUBKEY.asc
179
180 @end itemize
181
182 You can obtain development source code by cloning
183 @url{http://git-scm.com/, Git}
184 @url{https://git.cypherpunks.ru/cgit.cgi/gogost.git/}.
185
186 @bye