X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgogost%2Fgost28147%2Fcfb_test.go;h=cd30d86f8e42db1ee3a66ed8569054e1c0673226;hb=1f35967fa918c1653dfa787818ce4f3559283ff5;hp=95ee1d57554d70f43e091a21cfac15a7b358e305;hpb=0c90f3181c01f68c4f2c986b02cda16dba85521b;p=gogost.git diff --git a/src/cypherpunks.ru/gogost/gost28147/cfb_test.go b/src/cypherpunks.ru/gogost/gost28147/cfb_test.go index 95ee1d5..cd30d86 100644 --- a/src/cypherpunks.ru/gogost/gost28147/cfb_test.go +++ b/src/cypherpunks.ru/gogost/gost28147/cfb_test.go @@ -1,5 +1,5 @@ // GoGOST -- Pure Go GOST cryptographic functions library -// Copyright (C) 2015-2016 Sergey Matveev +// Copyright (C) 2015-2019 Sergey Matveev // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,19 +19,18 @@ package gost28147 import ( "bytes" "crypto/cipher" - "crypto/rand" "testing" "testing/quick" ) func TestCFBCryptomanager(t *testing.T) { - key := [KeySize]byte{ + key := []byte{ 0x75, 0x71, 0x31, 0x34, 0xB6, 0x0F, 0xEC, 0x45, 0xA6, 0x07, 0xBB, 0x83, 0xAA, 0x37, 0x46, 0xAF, 0x4F, 0xF9, 0x9D, 0xA6, 0xD1, 0xB5, 0x3B, 0x5B, 0x1B, 0x40, 0x2A, 0x1B, 0xAA, 0x03, 0x0D, 0x1B, } - sbox := &GostR3411_94_TestParamSet + sbox := &SboxIdGostR341194TestParamSet pt := []byte{ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0x80, 0x00, 0x00, @@ -41,34 +40,30 @@ func TestCFBCryptomanager(t *testing.T) { 0xAD, 0x36, 0x16, 0x94, 0x0E, 0x16, 0x42, 0x42, } c := NewCipher(key, sbox) - iv := [8]byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08} + iv := []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08} tmp := make([]byte, 16) fe := c.NewCFBEncrypter(iv) fe.XORKeyStream(tmp, pt) if bytes.Compare(tmp, ct) != 0 { - t.Fail() + t.Fatal("encryption failed") } fd := c.NewCFBDecrypter(iv) fd.XORKeyStream(tmp, ct) if bytes.Compare(tmp, pt) != 0 { - t.Fail() + t.Fatal("decryption failed") } } func TestCFBRandom(t *testing.T) { - var key [KeySize]byte - rand.Read(key[:]) - c := NewCipher(key, SboxDefault) - f := func(ivRaw []byte, pt []byte) bool { - if len(pt) == 0 || len(ivRaw) < 8 { + f := func(key [KeySize]byte, iv [BlockSize]byte, pt []byte) bool { + if len(pt) == 0 { return true } - var iv [8]byte - copy(iv[:], ivRaw[:8]) + c := NewCipher(key[:], SboxDefault) ct := make([]byte, len(pt)) - fe := c.NewCFBEncrypter(iv) + fe := c.NewCFBEncrypter(iv[:]) fe.XORKeyStream(ct, pt) - fd := c.NewCFBDecrypter(iv) + fd := c.NewCFBDecrypter(iv[:]) pt2 := make([]byte, len(ct)) fd.XORKeyStream(pt2, ct) return bytes.Compare(pt2, pt) == 0 @@ -81,7 +76,7 @@ func TestCFBRandom(t *testing.T) { func TestCFBInterface(t *testing.T) { var key [32]byte var iv [8]byte - c := NewCipher(key, SboxDefault) - var _ cipher.Stream = c.NewCFBEncrypter(iv) - var _ cipher.Stream = c.NewCFBDecrypter(iv) + c := NewCipher(key[:], SboxDefault) + var _ cipher.Stream = c.NewCFBEncrypter(iv[:]) + var _ cipher.Stream = c.NewCFBDecrypter(iv[:]) }