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