]> Cypherpunks.ru repositories - gogost.git/blob - news.texi
28147-89 and CryptoPro key wrapping support
[gogost.git] / news.texi
1 @node News
2 @unnumbered News
3
4 @table @strong
5
6 @anchor{Release 5.14.0}
7 @item 5.14.0
8 28147-89 and CryptoPro key wrapping support
9 (@url{https://tools.ietf.org/html/rfc4357.html, RFC 4357}).
10
11 @anchor{Release 5.13.0}
12 @item 5.13.0
13     @itemize
14     @item
15         @code{gost3410.NewPublicKeyLE}, @code{gost3410.PublicKey.RawLE},
16         @code{gost3410.NewPublicKeyBE}, @code{gost3410.PublicKey.RawBE},
17         @code{gost3410.NewPrivateKeyLE}, @code{gost3410.PrivateKey.RawLE},
18         @code{gost3410.NewPrivateKeyBE}, @code{gost3410.PrivateKey.RawBE},
19         functions appeared, to simplify dealing with different endianness
20         keys serialisation
21     @item
22         @code{gost3410.PublicKeyReverseDigest} and
23         @code{gost3410.PublicKeyReverseDigestAndSignature} wrappers appeared
24     @end itemize
25
26 @anchor{Release 5.12.0}
27 @item 5.12.0
28 Updated dependencies.
29
30 @anchor{Release 5.11.0}
31 @item 5.11.0
32 You can check if public key is on curve with
33 @code{gost3410.Curve.Contains} method now.
34
35 @anchor{Release 5.10.0}
36 @item 5.10.0
37     @itemize
38     @item @code{mgm.MGM.Open} returns @code{mgm.InvalidTag} for failed authentication
39     @item Example @file{cmd/cer-dane-hash} and
40         @file{cmd/cer-selfsigned-example} utilities appeared
41     @end itemize
42
43 @anchor{Release 5.9.1}
44 @item 5.9.1
45 Updated and cleaned up @file{go.sum}.
46
47 @anchor{Release 5.9.0}
48 @item 5.9.0
49 @code{gost3410} is more thread-safe.
50
51 @anchor{Release 5.8.0}
52 @item 5.8.0
53 Faster Kuznechik and ~3x faster Kuznechik-MGM.
54
55 @anchor{Release 5.7.0}
56 @item 5.7.0
57 Go 1.17 requires @code{gost3410.PublicKey} to have @code{Equal} method.
58
59 @anchor{Release 5.6.0}
60 @item 5.6.0
61     @itemize
62     @item Add @code{gost3410.CurveIdtc26gost341012512paramSetTest} curve
63     @item More curve aliases:
64 @verbatim
65 CurveIdGostR34102001CryptoProAParamSet -> CurveIdtc26gost341012256paramSetB
66 CurveIdGostR34102001CryptoProBParamSet -> CurveIdtc26gost341012256paramSetC
67 CurveIdGostR34102001CryptoProCParamSet -> CurveIdtc26gost341012256paramSetD
68 CurveIdGostR34102001CryptoProXchAParamSet -> CurveIdGostR34102001CryptoProAParamSet
69 CurveIdGostR34102001CryptoProXchBParamSet -> CurveIdGostR34102001CryptoProCParamSet
70 CurveIdtc26gost34102012256paramSetA -> CurveIdtc26gost341012256paramSetA
71 CurveIdtc26gost34102012256paramSetB -> CurveIdtc26gost341012256paramSetB
72 CurveIdtc26gost34102012256paramSetC -> CurveIdtc26gost341012256paramSetC
73 CurveIdtc26gost34102012256paramSetD -> CurveIdtc26gost341012256paramSetD
74 CurveIdtc26gost34102012512paramSetTest -> CurveIdtc26gost341012512paramSetTest
75 CurveIdtc26gost34102012512paramSetA -> CurveIdtc26gost341012512paramSetA
76 CurveIdtc26gost34102012512paramSetB -> CurveIdtc26gost341012512paramSetB
77 CurveIdtc26gost34102012512paramSetC -> CurveIdtc26gost341012512paramSetC
78 @end verbatim
79     @end itemize
80
81 @anchor{Release 5.5.0}
82 @item 5.5.0
83     @code{gost3410.PrivateKey} is in @code{gost3410.Curve.Q} now. That
84     makes them more friendly with some implementations.
85
86 @anchor{Release 5.4.0}
87 @item 5.4.0
88     Even slightly less allocations in Streebog.
89
90 @anchor{Release 5.3.0}
91 @item 5.3.0
92     ~16x speedup of Streebog, ~15x speedup of Kuznechik.
93
94 @anchor{Release 5.2.0}
95 @item 5.2.0
96     MGM does not panic when short (tagless) message is verified.
97
98 @anchor{Release 5.1.1}
99 @item 5.1.1
100     Tarball uses vendoring, instead of @env{GOPATH} overriding.
101     As minimal Go version is 1.12 for a long time, it supports modules.
102
103 @anchor{Release 5.1.0}
104 @item 5.1.0
105     @code{gost3410/KEK*} functions do not alter @code{ukm} argument.
106     It is safe to reuse now.
107
108 @anchor{Release 5.0.0}
109 @item 5.0.0
110     Backward incompatible remove of excess misleading @code{gost3410.Mode}
111     from all related functions. Point/key sizes are determined by
112     looking at curve's parameters size.
113
114 @anchor{Release 4.3.0}
115 @item 4.3.0
116     @strong{Fixed} nasty bug with Edwards curves using in 34.10-VKO
117     functions: curve's cofactor has not been used.
118
119 @anchor{Release 4.2.4}
120 @item 4.2.4
121     @code{gost3410.PrivateKeyReverseDigest} reversed digests and
122     @code{PrivateKeyReverseDigestAndSignature} with also reversed signatures
123     signers appeared for convenience.
124
125 @anchor{Release 4.2.3}
126 @item 4.2.3
127     Panic on all possible hash @code{Write} errors.
128
129 @anchor{Release 4.2.2}
130 @item 4.2.2
131     More 34.10-2012 test vectors.
132
133 @anchor{Release 4.2.1}
134 @item 4.2.1
135     Dummy release. More nicer tarballs.
136
137 @anchor{Release 4.2.0}
138 @item 4.2.0
139     @itemize
140     @item @code{PRF_IPSEC_PRFPLUS_GOSTR3411_2012_@{256,512@}} implementation
141     @item Generic @code{prf+} function (taken from IKEv2
142         (@url{https://tools.ietf.org/html/rfc5831.html, RFC 7296}))
143     @end itemize
144
145 @anchor{Release 4.1.0}
146 @item 4.1.0
147     @itemize
148     @item @code{ESPTREE}/@code{IKETREE} implementation
149     @item @code{CurveIdtc26gost34102012256paramSetB},
150         @code{CurveIdtc26gost34102012256paramSetC},
151         @code{CurveIdtc26gost34102012256paramSetD} curve aliases
152     @item Forbid any later GNU GPL version autousage
153         (project's licence now is GNU GPLv3 only)
154     @item Project now is @command{go get}-able and uses
155         @code{go.cypherpunks.ru} namespace:
156         @command{go get go.cypherpunks.ru/gogost},
157         @command{go get go.cypherpunks.ru/gogost/cmd/streebog@{256,512@}}
158     @end itemize
159
160 @anchor{Release 4.0}
161 @item 4.0
162     @itemize
163     @item Backward incompatible change: all keys passing to encryption
164         functions are slices now, not the fixed arrays. That heavily
165         simplifies the library usage
166     @item Fix bug with overwriting IVs memory in @code{gost28147.CFB*crypter}
167     @item @code{TLSTREE}, used in TLS 1.[23], implementation
168     @item @code{gost3410.KEK2012*} can be used with any curves, not only 512-bit ones
169     @item @code{gost3410.PrivateKey} satisfies @code{crypto.Signer} interface
170     @item @code{gost34112012*} hashes satisfy @code{encoding.Binary(Un)Marshaler}
171     @item Streebog256 HKDF test vectors
172     @end itemize
173
174 @anchor{Release 3.0}
175 @item 3.0
176     @itemize
177     @item Multilinear Galois Mode (MGM) block cipher mode for
178       64 and 128 bit ciphers
179     @item @code{KDF_GOSTR3411_2012_256} KDF
180     @item 34.12-2015 64-bit block cipher Магма (Magma)
181     @item Additional EAC 28147-89 Sbox
182     @item 34.10-2012 TC26 twisted Edwards curve related parameters
183     @item Coordinates conversion from twisted Edwards to Weierstrass
184       form and vice versa
185     @item Fixed @code{gost3410.PrivateKey}'s length validation
186     @item Backward incompatible change: @code{gost3410.NewCurve} takes
187       @code{big.Int}, instead of encoded integers
188     @item Backward incompatible Sbox and curves parameters renaming, to
189       comply with OIDs identifying them:
190 @verbatim
191 Gost2814789_TestParamSet       -> SboxIdGost2814789TestParamSet
192 Gost28147_CryptoProParamSetA   -> SboxIdGost2814789CryptoProAParamSet
193 Gost28147_CryptoProParamSetB   -> SboxIdGost2814789CryptoProBParamSet
194 Gost28147_CryptoProParamSetC   -> SboxIdGost2814789CryptoProCParamSet
195 Gost28147_CryptoProParamSetD   -> SboxIdGost2814789CryptoProDParamSet
196 GostR3411_94_TestParamSet      -> SboxIdGostR341194TestParamSet
197 Gost28147_tc26_ParamZ          -> SboxIdtc26gost28147paramZ
198 GostR3411_94_CryptoProParamSet -> SboxIdGostR341194CryptoProParamSet
199 EACParamSet                    -> SboxEACParamSet
200
201 CurveParamsGostR34102001cc            -> CurveGostR34102001ParamSetcc
202 CurveParamsGostR34102001Test          -> CurveIdGostR34102001TestParamSet
203 CurveParamsGostR34102001CryptoProA    -> CurveIdGostR34102001CryptoProAParamSet
204 CurveParamsGostR34102001CryptoProB    -> CurveIdGostR34102001CryptoProBParamSet
205 CurveParamsGostR34102001CryptoProC    -> CurveIdGostR34102001CryptoProCParamSet
206 CurveParamsGostR34102001CryptoProXchA -> CurveIdGostR34102001CryptoProXchAParamSet
207 CurveParamsGostR34102001CryptoProXchB -> CurveIdGostR34102001CryptoProXchBParamSet
208 CurveParamsGostR34102012TC26ParamSetA -> CurveIdtc26gost341012512paramSetA
209 CurveParamsGostR34102012TC26ParamSetB -> CurveIdtc26gost341012512paramSetB
210 @end verbatim
211     @item Various additional test vectors
212     @item go modules friendliness
213     @end itemize
214
215 @anchor{Release 2.0}
216 @item 2.0
217     @itemize
218     @item 34.11-2012 is split on two different modules:
219         @code{gost34112012256} and @code{gost34112012512}
220     @item 34.11-94's digest is reversed. Now it is compatible with TC26's
221       HMAC and PBKDF2 test vectors
222     @item @code{gogost-streebog} is split to @code{streebog256} and
223         @code{streebog512} correspondingly by analogy with sha* utilities
224     @item added VKO 34.10-2012 support with corresponding test vectors
225     @item @code{gost3410.DigestSizeX} is renamed to
226         @code{gost3410.ModeX} because it is not related to digest size,
227         but parameters and key sizes
228     @item KEK functions take @code{big.Int} UKM value. Use @code{NewUKM}
229         to unmarshal raw binary UKM
230     @end itemize
231
232 @anchor{Release 1.1}
233 @item 1.1
234     @itemize
235     @item gogost-streebog is able to use either 256 or 512 bits digest size
236     @item 34.13-2015 padding methods
237     @item 28147-89 CBC mode of operation
238     @end itemize
239
240 @end table