-
Notifications
You must be signed in to change notification settings - Fork 0
/
install.texi
105 lines (82 loc) · 3.12 KB
/
install.texi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
@node Download
@unnumbered Download
Preferable way is to download tarball with the signature from
website and, for example, run tests with benchmarks:
@example
$ [fetch|wget] http://www.gogost.cypherpunks.ru/gogost-@value{VERSION}.tar.xz
$ [fetch|wget] http://www.gogost.cypherpunks.ru/gogost-@value{VERSION}.tar.xz.sig
$ gpg --verify gogost-@value{VERSION}.tar.xz.sig gogost-@value{VERSION}.tar.xz
$ xz --decompress --stdout gogost-@value{VERSION}.tar.xz | tar xf -
$ cd gogost-@value{VERSION}
$ redo bench all
$ echo hello world | ./streebog256
f72018189a5cfb803dbe1f2149cf554c40093d8e7f81c21e08ac5bcd09d9934d
@end example
It uses @url{http://cr.yp.to/redo.html, redo} build system for that
examples. You can use either dozen of various implementations, or at
least minimalistic POSIX shell @command{contrib/do} (just replace
@command{redo} with @command{contrib/do} in the example above) included
in tarball.
@include download.texi
And then you can include its source code in your project for example
like this:
@example
$ mkdir -p myproj/src
$ cp -r gogost-@value{VERSION}/src/go.cypherpunks.ru myproj/src
$ export GOPATH=$PWD/myproj
$ cd myproj/src
$ cat > main.go <<EOF
package main
import (
"encoding/hex"
"fmt"
"go.cypherpunks.ru/gogost/v5/gost34112012256"
)
func main() @{
h := gost34112012256.New()
h.Write([]byte("hello world\n"))
fmt.Println(hex.EncodeToString(h.Sum(nil)))
@}
EOF
$ go run main.go
f72018189a5cfb803dbe1f2149cf554c40093d8e7f81c21e08ac5bcd09d9934d
@end example
You @strong{have to} verify downloaded tarballs integrity and
authenticity to be sure that you retrieved trusted and untampered
software. @url{https://www.gnupg.org/, GNU Privacy Guard} is used
for that purpose.
For the very first time it is necessary to get signing public key and
import it. It is provided below, but you should check alternative
resources.
@verbatim
pub rsa2048/0x82343436696FC85A 2016-09-13 [SC]
CEBD 1282 2C46 9C02 A81A 0467 8234 3436 696F C85A
uid GoGOST releases <gogost at cypherpunks dot ru>
@end verbatim
@itemize
@item @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} maillist
@item
@example
$ gpg --auto-key-locate dane --locate-keys gogost at cypherpunks dot ru
$ gpg --auto-key-locate wkd --locate-keys gogost at cypherpunks dot ru
@end example
@item
@verbatiminclude PUBKEY.asc
@end itemize
GoGOST is also @command{go get}-able. For example to use
@command{streebog256} utility:
@example
$ go get go.cypherpunks.ru/gogost/cmd/streebog256
@end example
@code{go.cypherpunks.ru} uses @url{http://www.ca.cypherpunks.ru/, ca.cypherpunks.ru}
certificate authority. If you have issues using either
@code{sum.golang.org} or @code{proxy.golang.org}, then you can disable
their usage with @env{GOPRIVATE=go.cypherpunks.ru/gogost} environment
variable.
Also you can use @code{replace} feature inside your @file{go.mod}, like:
@example
require go.cypherpunks.ru/gogost/v5 v@value{VERSION}
replace go.cypherpunks.ru/gogost/v5 => /home/stargrave/gogost-@value{VERSION}/src/go.cypherpunks.ru/gogost/v5
@end example
You can obtain development source code with
@command{git clone git://git.cypherpunks.ru/gogost.git}.