VERSION | 2 +- cmd/streebog256/main.go | 4 +++- cmd/streebog512/main.go | 4 +++- gost3410/vko2001.go | 4 +++- gost3410/vko2012.go | 8 ++++++-- gost34112012256/kdf.go | 24 ++++++++++++++++++------ install.texi | 2 +- news.texi | 4 ++++ prfplus/gost.go | 4 +++- diff --git a/VERSION b/VERSION index 89035672d7aef304f3b141b9a0627f749d50ddb0acfdc9dd84f2de6aeeabf4ec..fee4582f77aca97abcf501894498f5dbd35aa8a7e54fcd4e8f11b78debfe3cc5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.2.2 +4.2.3 diff --git a/cmd/streebog256/main.go b/cmd/streebog256/main.go index 5fc2c972f06413be4904c2da53a4a4cdff6366dd27966ae021e48d507d3a6209..e4eb52c6798b3747dfe58fc851c755d712da19dd1ae74aab705949512bbd9519 100644 --- a/cmd/streebog256/main.go +++ b/cmd/streebog256/main.go @@ -38,6 +38,8 @@ fmt.Println(gogost.Version) return } h := gost34112012256.New() - io.Copy(h, os.Stdin) + if _, err := io.Copy(h, os.Stdin); err != nil { + panic(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil))) } diff --git a/cmd/streebog512/main.go b/cmd/streebog512/main.go index 4d1a319baacc8a431444de2bd9a792718f2a7eec1dd4fff6fcb4ef0d75e9e864..4cf048f35da31b07a11dda77c9fa3816170c1166bb31d4eeb2bf514d80a23f2a 100644 --- a/cmd/streebog512/main.go +++ b/cmd/streebog512/main.go @@ -38,6 +38,8 @@ fmt.Println(gogost.Version) return } h := gost34112012512.New() - io.Copy(h, os.Stdin) + if _, err := io.Copy(h, os.Stdin); err != nil { + panic(err) + } fmt.Println(hex.EncodeToString(h.Sum(nil))) } diff --git a/gost3410/vko2001.go b/gost3410/vko2001.go index 6cf72d9e67032ac8c36738e7c47fe1e9cc53c83785fb7595ad571bc66aa98770..5ffe784e341a5b50246457b01dc6929900cb10d35457fcb0f9fe17f64269f226 100644 --- a/gost3410/vko2001.go +++ b/gost3410/vko2001.go @@ -34,6 +34,8 @@ if err != nil { return nil, err } h := gost341194.New(&gost28147.SboxIdGostR341194CryptoProParamSet) - h.Write(key) + if _, err = h.Write(key); err != nil { + return nil, err + } return h.Sum(key[:0]), nil } diff --git a/gost3410/vko2012.go b/gost3410/vko2012.go index bfd0b9c1f93c8e2421e4f242551a730a1b37d29afd8f0298fac2a64b35be9655..d78e5a59d8f5d84f0cac7181f42bcfdbb335c4e8abfad4c5b8e0a8f36b6f1a16 100644 --- a/gost3410/vko2012.go +++ b/gost3410/vko2012.go @@ -30,7 +30,9 @@ if err != nil { return nil, err } h := gost34112012256.New() - h.Write(key) + if _, err = h.Write(key); err != nil { + return nil, err + } return h.Sum(key[:0]), nil } @@ -42,6 +44,8 @@ if err != nil { return nil, err } h := gost34112012512.New() - h.Write(key) + if _, err = h.Write(key); err != nil { + return nil, err + } return h.Sum(key[:0]), nil } diff --git a/gost34112012256/kdf.go b/gost34112012256/kdf.go index baa15e3629b48d286e972cf198aa0425abcaa82d25eec1c297b47b5b1a15be50..5ffbc27cd80ad19c207504c6e4f9dc145d512ab7f7e00d60172109f42817c380 100644 --- a/gost34112012256/kdf.go +++ b/gost34112012256/kdf.go @@ -29,12 +29,24 @@ return &KDF{hmac.New(New, key)} } func (kdf *KDF) Derive(dst, label, seed []byte) (r []byte) { - kdf.h.Write([]byte{0x01}) - kdf.h.Write(label) - kdf.h.Write([]byte{0x00}) - kdf.h.Write(seed) - kdf.h.Write([]byte{0x01}) - kdf.h.Write([]byte{0x00}) + if _, err := kdf.h.Write([]byte{0x01}); err != nil { + panic(err) + } + if _, err := kdf.h.Write(label); err != nil { + panic(err) + } + if _, err := kdf.h.Write([]byte{0x00}); err != nil { + panic(err) + } + if _, err := kdf.h.Write(seed); err != nil { + panic(err) + } + if _, err := kdf.h.Write([]byte{0x01}); err != nil { + panic(err) + } + if _, err := kdf.h.Write([]byte{0x00}); err != nil { + panic(err) + } r = kdf.h.Sum(dst) kdf.h.Reset() return r diff --git a/install.texi b/install.texi index ea88b485fbdcbe0d4b643ce2a25129e59389a69e8edb9587b419d9c07313d19b..bf2e088d980e989dd3d65385b25d660a752c8a901e9f39eb1a6daaf362e13b86 100644 --- a/install.texi +++ b/install.texi @@ -1,7 +1,7 @@ @node Download @unnumbered Download -@set VERSION 4.2.2 +@set VERSION 4.2.3 Preferable way is to download tarball with the signature from website and, for example, run tests with benchmarks: diff --git a/news.texi b/news.texi index 67c5fba7032990fea0a74d0fb72c5a83e483455dd9210281f2421f8bf8158179..7e4b13cbe684ae2c8415719dcfbb2ad84b885014dc1bdf4080aeabec968e90f7 100644 --- a/news.texi +++ b/news.texi @@ -3,6 +3,10 @@ @unnumbered News @table @strong +@anchor{Release 4.2.3} +@item 4.2.3 + Panic on all possible hash @code{Write} errors. + @anchor{Release 4.2.2} @item 4.2.2 More 34.10-2012 test vectors. diff --git a/prfplus/gost.go b/prfplus/gost.go index e6d51dbd46da5b56c3422a03fdd6341cbafc57bf2a9940ab4ede6e2452f7eb99..e671f494d82c4b9fe4f26315c66c9bfef39844a408faf5c4d8916f3399ea688b 100644 --- a/prfplus/gost.go +++ b/prfplus/gost.go @@ -39,7 +39,9 @@ return prf.h.Size() } func (prf PRFIPsecPRFPlusGOSTR34112012) Derive(salt []byte) []byte { - prf.h.Write(salt) + if _, err := prf.h.Write(salt); err != nil { + panic(err) + } sum := prf.h.Sum(nil) prf.h.Reset() return sum