v2 / vlib / crypto / ed25519 / internal / edwards25519 / table_test.v
121 lines · 95 sloc · 2.59 KB · 3ac4155f0cbfcabddc83c7ac7ff0250a3e6df4a9
Raw
1module edwards25519
2
3fn test_proj_lookup_table() {
4 mut table := ProjLookupTable{}
5 b := new_generator_point()
6 table.from_p3(b)
7
8 mut tmp1 := ProjectiveCached{}
9 mut tmp2 := ProjectiveCached{}
10 mut tmp3 := ProjectiveCached{}
11
12 table.select_into(mut tmp1, 6)
13 table.select_into(mut tmp2, -2)
14 table.select_into(mut tmp3, -4)
15
16 // Expect T1 + T2 + T3 = identity
17 mut acc_p1 := ProjectiveP1{}
18 mut acc_p3 := new_identity_point()
19
20 acc_p1.add(acc_p3, tmp1)
21 acc_p3.from_p1(acc_p1)
22 acc_p1.add(acc_p3, tmp2)
23 acc_p3.from_p1(acc_p1)
24 acc_p1.add(acc_p3, tmp3)
25 acc_p3.from_p1(acc_p1)
26
27 assert acc_p3.equal(id_point) == 1
28}
29
30fn test_affine_lookup_table() {
31 mut table := AffineLookupTable{}
32 b := new_generator_point()
33 table.from_p3(b)
34
35 mut tmp1 := AffineCached{}
36 mut tmp2 := AffineCached{}
37 mut tmp3 := AffineCached{}
38
39 table.select_into(mut tmp1, 3)
40 table.select_into(mut tmp2, -7)
41 table.select_into(mut tmp3, 4)
42 // Expect T1 + T2 + T3 = identity
43
44 mut acc_p1 := ProjectiveP1{}
45 mut acc_p3 := new_identity_point()
46
47 acc_p1.add_affine(acc_p3, tmp1)
48 acc_p3.from_p1(acc_p1)
49 acc_p1.add_affine(acc_p3, tmp2)
50 acc_p3.from_p1(acc_p1)
51 acc_p1.add_affine(acc_p3, tmp3)
52 acc_p3.from_p1(acc_p1)
53
54 assert acc_p3.equal(id_point) == 1
55}
56
57fn test_naf_lookup_table5() {
58 mut table := NafLookupTable5{}
59 b := new_generator_point()
60 table.from_p3(b)
61
62 mut tmp1 := ProjectiveCached{}
63 mut tmp2 := ProjectiveCached{}
64 mut tmp3 := ProjectiveCached{}
65 mut tmp4 := ProjectiveCached{}
66
67 table.select_into(mut tmp1, 9)
68 table.select_into(mut tmp2, 11)
69 table.select_into(mut tmp3, 7)
70 table.select_into(mut tmp4, 13)
71 // Expect T1 + T2 = T3 + T4
72
73 mut acc_p1 := ProjectiveP1{}
74 mut lhs := new_identity_point()
75 mut rhs := new_identity_point()
76
77 acc_p1.add(lhs, tmp1)
78 lhs.from_p1(acc_p1)
79 acc_p1.add(lhs, tmp2)
80 lhs.from_p1(acc_p1)
81
82 acc_p1.add(rhs, tmp3)
83 rhs.from_p1(acc_p1)
84 acc_p1.add(rhs, tmp4)
85 rhs.from_p1(acc_p1)
86
87 assert lhs.equal(rhs) == 1
88}
89
90fn test_naf_lookup_table8() {
91 mut table := NafLookupTable8{}
92 b := new_generator_point()
93 table.from_p3(b)
94
95 mut tmp1 := AffineCached{}
96 mut tmp2 := AffineCached{}
97 mut tmp3 := AffineCached{}
98 mut tmp4 := AffineCached{}
99
100 table.select_into(mut tmp1, 49)
101 table.select_into(mut tmp2, 11)
102 table.select_into(mut tmp3, 35)
103 table.select_into(mut tmp4, 25)
104 // Expect T1 + T2 = T3 + T4
105
106 mut acc_p1 := ProjectiveP1{}
107 mut lhs := new_identity_point()
108 mut rhs := new_identity_point()
109
110 acc_p1.add_affine(lhs, tmp1)
111 lhs.from_p1(acc_p1)
112 acc_p1.add_affine(lhs, tmp2)
113 lhs.from_p1(acc_p1)
114
115 acc_p1.add_affine(rhs, tmp3)
116 rhs.from_p1(acc_p1)
117 acc_p1.add_affine(rhs, tmp4)
118 rhs.from_p1(acc_p1)
119
120 assert lhs.equal(rhs) == 1
121}
122