github.com/cloudflare/circl@v1.5.0/sign/mldsa/mldsa44/internal/pack_test.go (about)

     1  // Code generated from mode3/internal/pack_test.go by gen.go
     2  
     3  package internal
     4  
     5  import (
     6  	"testing"
     7  
     8  	common "github.com/cloudflare/circl/sign/internal/dilithium"
     9  )
    10  
    11  func TestPolyPackLeqEta(t *testing.T) {
    12  	var p1, p2 common.Poly
    13  	var seed [64]byte
    14  	var buf [PolyLeqEtaSize]byte
    15  
    16  	for i := uint16(0); i < 100; i++ {
    17  		// Note that DeriveUniformLeqEta sets p to the right kind of
    18  		// unnormalized vector.
    19  		PolyDeriveUniformLeqEta(&p1, &seed, i)
    20  		for j := 0; j < PolyLeqEtaSize; j++ {
    21  			if p1[j] < common.Q-Eta || p1[j] > common.Q+Eta {
    22  				t.Fatalf("DerveUniformLeqEta out of bounds")
    23  			}
    24  		}
    25  		PolyPackLeqEta(&p1, buf[:])
    26  		PolyUnpackLeqEta(&p2, buf[:])
    27  		if p1 != p2 {
    28  			t.Fatalf("%v != %v", p1, p2)
    29  		}
    30  	}
    31  }
    32  
    33  func TestPolyPackT1(t *testing.T) {
    34  	var p1, p2 common.Poly
    35  	var seed [32]byte
    36  	var buf [common.PolyT1Size]byte
    37  
    38  	for i := uint16(0); i < 100; i++ {
    39  		PolyDeriveUniform(&p1, &seed, i)
    40  		p1.Normalize()
    41  		for j := 0; j < common.N; j++ {
    42  			p1[j] &= 0x1ff
    43  		}
    44  		p1.PackT1(buf[:])
    45  		p2.UnpackT1(buf[:])
    46  		if p1 != p2 {
    47  			t.Fatalf("%v != %v", p1, p2)
    48  		}
    49  	}
    50  }
    51  
    52  func TestPolyPackT0(t *testing.T) {
    53  	var p, p0, p1, p2 common.Poly
    54  	var seed [32]byte
    55  	var buf [common.PolyT0Size]byte
    56  
    57  	for i := uint16(0); i < 100; i++ {
    58  		PolyDeriveUniform(&p, &seed, i)
    59  		p.Normalize()
    60  		p.Power2Round(&p0, &p1)
    61  
    62  		p0.PackT0(buf[:])
    63  		p2.UnpackT0(buf[:])
    64  		if p0 != p2 {
    65  			t.Fatalf("%v !=\n%v", p0, p2)
    66  		}
    67  	}
    68  }
    69  
    70  func BenchmarkUnpackLeGamma1(b *testing.B) {
    71  	var p common.Poly
    72  	var buf [PolyLeGamma1Size]byte
    73  	for i := 0; i < b.N; i++ {
    74  		PolyUnpackLeGamma1(&p, buf[:])
    75  	}
    76  }
    77  
    78  func TestPolyPackLeGamma1(t *testing.T) {
    79  	var p0, p1 common.Poly
    80  	var seed [64]byte
    81  	var buf [PolyLeGamma1Size]byte
    82  
    83  	for i := uint16(0); i < 100; i++ {
    84  		PolyDeriveUniformLeGamma1(&p0, &seed, i)
    85  		p0.Normalize()
    86  
    87  		PolyPackLeGamma1(&p0, buf[:])
    88  		PolyUnpackLeGamma1(&p1, buf[:])
    89  		if p0 != p1 {
    90  			t.Fatalf("%v != %v", p0, p1)
    91  		}
    92  	}
    93  }