]> Cypherpunks.ru repositories - pygost.git/blob - www.texi
Link to cypherpunks.ru/gost webpage
[pygost.git] / www.texi
1 \input texinfo
2 @documentencoding UTF-8
3 @settitle PyGOST
4
5 @copying
6 Copyright @copyright{} 2015-2016 @email{stargrave@@stargrave.org, Sergey Matveev}
7 @end copying
8
9 @node Top
10 @top PyGOST
11
12 PyGOST is pure Python 2.7/3.x 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 34.10-2001 Diffie-Hellman function
40     (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
41 @item 28147-89 and CryptoPro key wrapping
42     (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
43 @item 28147-89 CryptoPro key meshing for CFB mode
44     (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357})
45 @item @url{https://tools.ietf.org/html/rfc4491.html, RFC 4491}
46     (using GOST algorithms with X.509) compatibility helpers
47 @item GOST R 34.12-2015 128-bit block cipher Кузнечик (Kuznechik)
48     (@url{https://tools.ietf.org/html/rfc7801.html, RFC 7801})
49 @item GOST R 34.13-2015 padding methods
50 @item PEP247-compatible hash/MAC functions
51 @end itemize
52
53 Example X.509 compatible 34.10-2012 keypair generation, signing and
54 verifying its signature:
55
56 @verbatim
57 >>> from pygost import x509
58 >>> prv, pub = x509.keypair_gen(urandom(64), mode=2012)
59 >>> data = b'some data'
60 >>> signature = x509.sign(prv, data, mode=2012)
61 >>> x509.verify(pub, data, signature, mode=2012)
62 True
63 @end verbatim
64
65 Please send questions, bug reports and patches to
66 @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost}
67 mailing list. Announcements also go to this mailing list.
68
69 @insertcopying
70
71 @node Download
72 @unnumbered Download
73
74 No additional dependencies except Python 2.7/3.x interpreter are required.
75
76 Preferable way is to download tarball with the signature:
77
78 @verbatim
79 % wget http://www.cypherpunks.ru/pygost/pygost-2.3.tar.xz
80 % wget http://www.cypherpunks.ru/pygost/pygost-2.3.tar.xz.sig
81 % gpg --verify pygost-2.3.tar.xz.sig pygost-2.3.tar.xz
82 % xz -d < pygost-2.3.tar.xz | tar xf -
83 % cd pygost-2.3
84 % python setup.py install
85 @end verbatim
86
87 @multitable {XXXXX} {XXXX KiB} {link sign} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
88 @headitem Version @tab Size @tab Tarball @tab SHA256 checksum @tab Streebog-256 checksum
89
90 @item 2.4 @tab 37 KiB
91 @tab @url{pygost-2.4.tar.xz, link} @url{pygost-2.4.tar.xz.sig, sign}
92 @tab @code{94D14E99 3CF63973 6C8E78D0 5EBD0838 09A47624 C05A9878 11136301 C0A07264}
93 @tab @code{b107b5ba043a2e4c30d9348e222b92218b8dff9d672964ffd04259c5261bc5a7}
94
95 @item 2.3 @tab 37 KiB
96 @tab @url{pygost-2.3.tar.xz, link} @url{pygost-2.3.tar.xz.sig, sign}
97 @tab @code{FF2C7E78 F3677B45 EB472DC6 1837C72C 0BD72387 AB0A9DC7 AD88AD11 59589732}
98 @tab @code{42cfd0cdf357997a909a9114ca14391b4c5e8b62e298675f899b80a8a26d690f}
99
100 @end multitable
101
102 But also you can use PIP (@strong{no} authentication is performed!):
103
104 @verbatim
105 % pip install pygost==2.3
106 @end verbatim
107
108 You @strong{have to} verify downloaded tarballs integrity and
109 authenticity to be sure that you retrieved trusted and untampered
110 software. @url{https://www.gnupg.org/, The GNU Privacy Guard} is used
111 for that purpose.
112
113 For the very first time it it necessary to get signing public key and
114 import it. It is provided below, but you should check alternative
115 resources.
116
117 @verbatim
118 pub   rsa2048/0xE6FD1269CD0C009E 2016-09-13
119       F55A 7619 3A0C 323A A031  0E6B E6FD 1269 CD0C 009E
120 uid   PyGOST releases <pygost at cypherpunks dot ru>
121 @end verbatim
122
123 @itemize
124
125 @item @url{https://lists.cypherpunks.ru/mailman/listinfo/gost, gost} maillist
126
127 @item
128 @verbatim
129 % gpg --keyserver hkp://keys.gnupg.net/ --recv-keys 0xE6FD1269CD0C009E
130 % gpg --auto-key-locate dane --locate-keys pygost at cypherpunks dot ru
131 % gpg --auto-key-locate wkd --locate-keys pygost at cypherpunks dot ru
132 % gpg --auto-key-locate pka --locate-keys pygost at cypherpunks dot ru
133 @end verbatim
134
135 @item
136 @verbatiminclude PUBKEY.asc
137
138 @end itemize
139
140 You can obtain development source code by cloning
141 @url{http://git-scm.com/, Git}
142 @url{https://git.cypherpunks.ru/cgit.cgi/pygost.git/, repository}.
143
144 @bye