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