github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/sm4/cipher_asm_fuzzy_test.go (about)

     1  //go:build amd64 || arm64
     2  // +build amd64 arm64
     3  
     4  package sm4
     5  
     6  import (
     7  	"crypto/rand"
     8  	"io"
     9  	"reflect"
    10  	"testing"
    11  	"time"
    12  )
    13  
    14  func TestExpandKey(t *testing.T) {
    15  	key := make([]byte, 16)
    16  
    17  	encRes1 := make([]uint32, 32)
    18  	decRes1 := make([]uint32, 32)
    19  	encRes2 := make([]uint32, 32)
    20  	decRes2 := make([]uint32, 32)
    21  	var timeout *time.Timer
    22  
    23  	if testing.Short() {
    24  		timeout = time.NewTimer(10 * time.Millisecond)
    25  	} else {
    26  		timeout = time.NewTimer(2 * time.Second)
    27  	}
    28  
    29  	for {
    30  		select {
    31  		case <-timeout.C:
    32  			return
    33  		default:
    34  		}
    35  		_, err := io.ReadFull(rand.Reader, key)
    36  		if err != nil {
    37  			t.Fatal(err)
    38  		}
    39  		expandKeyGo(key, encRes1, decRes1)
    40  		expandKey(key, encRes2, decRes2)
    41  		if !reflect.DeepEqual(encRes1, encRes2) {
    42  			t.Errorf("expected=%v, result=%v\n", encRes1, encRes2)
    43  		}
    44  		if !reflect.DeepEqual(decRes1, decRes2) {
    45  			t.Errorf("expected=%v, result=%v\n", encRes1, encRes2)
    46  		}
    47  	}
    48  }