From efdb1f2aa56aac82df14d0393467cf77f682802f Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 14 Feb 2025 10:35:22 +0300 Subject: [PATCH] Modern rand.Read never fails --- README | 6 +++--- cmd/cer-selfsigned-example/main.go | 9 ++------ gost28147/wrap_test.go | 13 +++--------- gost3412128/cipher_test.go | 4 ++-- mgm/mode_test.go | 33 ++++++++---------------------- www.texi | 6 +++--- 6 files changed, 21 insertions(+), 50 deletions(-) diff --git a/README b/README index 227f3a4..000d7b7 100644 --- a/README +++ b/README @@ -44,11 +44,11 @@ Example 34.10-2012-256 keypair generation, signing and verifying: func main() { data := []byte("data to be signed") hasher := gost34112012256.New() - _, err := hasher.Write(data) + hasher.Write(data) dgst := hasher.Sum(nil) curve := gost3410.CurveIdtc26gost341012256paramSetB() - prvRaw := make([]byte, int(32)) - _, err = io.ReadFull(rand.Reader, prvRaw) + prvRaw := make([]byte, curve.PointSize()) + rand.Read(prvRaw) prv, err := gost3410.NewPrivateKey(curve, prvRaw) pub, err := prv.PublicKey() pubRaw := pub.Raw() diff --git a/cmd/cer-selfsigned-example/main.go b/cmd/cer-selfsigned-example/main.go index 461c922..5e19ad6 100644 --- a/cmd/cer-selfsigned-example/main.go +++ b/cmd/cer-selfsigned-example/main.go @@ -24,7 +24,6 @@ import ( "crypto/x509/pkix" "encoding/pem" "flag" - "io" "log" "math/big" "os" @@ -120,9 +119,7 @@ func main() { var prv any if *reuseKey == "" { prvRaw := make([]byte, curve.PointSize()) - if _, err = io.ReadFull(rand.Reader, prvRaw); err != nil { - log.Fatal(err) - } + rand.Read(prvRaw) prv, err = gost3410.NewPrivateKey(curve, prvRaw) if err != nil { log.Fatal(err) @@ -161,9 +158,7 @@ func main() { sn := big.NewInt(0) if *serial == -1 { data := make([]byte, 16, gost34112012256.Size) - if _, err = io.ReadFull(rand.Reader, data); err != nil { - log.Fatal(err) - } + rand.Read(data) hasher := gost34112012256.New() if _, err = hasher.Write(data); err != nil { log.Fatal(err) diff --git a/gost28147/wrap_test.go b/gost28147/wrap_test.go index 2d144cd..abdb045 100644 --- a/gost28147/wrap_test.go +++ b/gost28147/wrap_test.go @@ -3,7 +3,6 @@ package gost28147 import ( "bytes" "crypto/rand" - "io" "testing" ) @@ -12,15 +11,9 @@ func TestWrapSymmetric(t *testing.T) { cek := make([]byte, KeySize) ukm := make([]byte, 8) for range 1000 { - if _, err := io.ReadFull(rand.Reader, kek); err != nil { - t.Fatal(err) - } - if _, err := io.ReadFull(rand.Reader, cek); err != nil { - t.Fatal(err) - } - if _, err := io.ReadFull(rand.Reader, ukm); err != nil { - t.Fatal(err) - } + rand.Read(kek) + rand.Read(cek) + rand.Read(ukm) data := WrapGost(ukm, kek, cek) got := UnwrapGost(kek, data) if !bytes.Equal(got, cek) { diff --git a/gost3412128/cipher_test.go b/gost3412128/cipher_test.go index 589198b..c0d1f8f 100644 --- a/gost3412128/cipher_test.go +++ b/gost3412128/cipher_test.go @@ -48,7 +48,7 @@ func TestCipherInterface(t *testing.T) { func TestRandom(t *testing.T) { data := make([]byte, BlockSize) f := func(key [KeySize]byte, pt [BlockSize]byte) bool { - io.ReadFull(rand.Reader, key[:]) + rand.Read(key[:]) c := NewCipher(key[:]) c.Encrypt(data, pt[:]) c.Decrypt(data, data) @@ -61,7 +61,7 @@ func TestRandom(t *testing.T) { func BenchmarkEncrypt(b *testing.B) { key := make([]byte, KeySize) - io.ReadFull(rand.Reader, key) + rand.Read(key) c := NewCipher(key) blk := make([]byte, BlockSize) for b.Loop() { diff --git a/mgm/mode_test.go b/mgm/mode_test.go index d1f65f7..c498c95 100644 --- a/mgm/mode_test.go +++ b/mgm/mode_test.go @@ -19,7 +19,6 @@ import ( "bytes" "crypto/cipher" "crypto/rand" - "io" "testing" "testing/quick" @@ -123,13 +122,9 @@ func TestSymmetric(t *testing.T) { } key128 := new([gost3412128.KeySize]byte) - if _, err := rand.Read(key128[:]); err != nil { - panic(err) - } + rand.Read(key128[:]) nonce := make([]byte, gost3412128.BlockSize) - if _, err := rand.Read(key128[1:]); err != nil { - panic(err) - } + rand.Read(key128[1:]) sym( gost3412128.BlockSize, gost3412128.NewCipher(key128[:]), @@ -147,18 +142,12 @@ func TestSymmetric(t *testing.T) { func BenchmarkMGM64(b *testing.B) { key := make([]byte, gost341264.KeySize) - if _, err := io.ReadFull(rand.Reader, key); err != nil { - panic(err) - } + rand.Read(key) nonce := make([]byte, gost341264.BlockSize) - if _, err := io.ReadFull(rand.Reader, nonce); err != nil { - panic(err) - } + rand.Read(nonce) nonce[0] &= 0x7F pt := make([]byte, 1280+3) - if _, err := io.ReadFull(rand.Reader, pt); err != nil { - panic(err) - } + rand.Read(pt) c := gost341264.NewCipher(key) aead, err := NewMGM(c, gost341264.BlockSize) if err != nil { @@ -172,18 +161,12 @@ func BenchmarkMGM64(b *testing.B) { func BenchmarkMGM128(b *testing.B) { key := make([]byte, gost3412128.KeySize) - if _, err := io.ReadFull(rand.Reader, key); err != nil { - panic(err) - } + rand.Read(key) nonce := make([]byte, gost3412128.BlockSize) - if _, err := io.ReadFull(rand.Reader, nonce); err != nil { - panic(err) - } + rand.Read(nonce) nonce[0] &= 0x7F pt := make([]byte, 1280+3) - if _, err := io.ReadFull(rand.Reader, pt); err != nil { - panic(err) - } + rand.Read(pt) c := gost3412128.NewCipher(key) aead, err := NewMGM(c, gost3412128.BlockSize) if err != nil { diff --git a/www.texi b/www.texi index 36bf59a..c9733b1 100644 --- a/www.texi +++ b/www.texi @@ -72,11 +72,11 @@ import ( func main() { data := []byte("data to be signed") hasher := gost34112012256.New() - _, err := hasher.Write(data) + hasher.Write(data) dgst := hasher.Sum(nil) curve := gost3410.CurveIdtc26gost341012256paramSetB() - prvRaw := make([]byte, 32) - _, err = io.ReadFull(rand.Reader, prvRaw) + prvRaw := make([]byte, curve.PointSize()) + rand.Read(prvRaw) prv, err := gost3410.NewPrivateKey(curve, prvRaw) pub, err := prv.PublicKey() pubRaw := pub.Raw() -- 2.48.1