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