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