122 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			V
		
	
	
| module edwards25519
 | |
| 
 | |
| fn test_proj_lookup_table() {
 | |
| 	mut table := ProjLookupTable{}
 | |
| 	b := new_generator_point()
 | |
| 	table.from_p3(b)
 | |
| 
 | |
| 	mut tmp1 := ProjectiveCached{}
 | |
| 	mut tmp2 := ProjectiveCached{}
 | |
| 	mut tmp3 := ProjectiveCached{}
 | |
| 
 | |
| 	table.select_into(mut tmp1, 6)
 | |
| 	table.select_into(mut tmp2, -2)
 | |
| 	table.select_into(mut tmp3, -4)
 | |
| 
 | |
| 	// Expect T1 + T2 + T3 = identity
 | |
| 	mut acc_p1 := ProjectiveP1{}
 | |
| 	mut acc_p3 := new_identity_point()
 | |
| 
 | |
| 	acc_p1.add(acc_p3, tmp1)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 	acc_p1.add(acc_p3, tmp2)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 	acc_p1.add(acc_p3, tmp3)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 
 | |
| 	assert acc_p3.equal(id_point) == 1
 | |
| }
 | |
| 
 | |
| fn test_affine_lookup_table() {
 | |
| 	mut table := AffineLookupTable{}
 | |
| 	b := new_generator_point()
 | |
| 	table.from_p3(b)
 | |
| 
 | |
| 	mut tmp1 := AffineCached{}
 | |
| 	mut tmp2 := AffineCached{}
 | |
| 	mut tmp3 := AffineCached{}
 | |
| 
 | |
| 	table.select_into(mut tmp1, 3)
 | |
| 	table.select_into(mut tmp2, -7)
 | |
| 	table.select_into(mut tmp3, 4)
 | |
| 	// Expect T1 + T2 + T3 = identity
 | |
| 
 | |
| 	mut acc_p1 := ProjectiveP1{}
 | |
| 	mut acc_p3 := new_identity_point()
 | |
| 
 | |
| 	acc_p1.add_affine(acc_p3, tmp1)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 	acc_p1.add_affine(acc_p3, tmp2)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 	acc_p1.add_affine(acc_p3, tmp3)
 | |
| 	acc_p3.from_p1(acc_p1)
 | |
| 
 | |
| 	assert acc_p3.equal(id_point) == 1
 | |
| }
 | |
| 
 | |
| fn test_naf_lookup_table5() {
 | |
| 	mut table := NafLookupTable5{}
 | |
| 	b := new_generator_point()
 | |
| 	table.from_p3(b)
 | |
| 
 | |
| 	mut tmp1 := ProjectiveCached{}
 | |
| 	mut tmp2 := ProjectiveCached{}
 | |
| 	mut tmp3 := ProjectiveCached{}
 | |
| 	mut tmp4 := ProjectiveCached{}
 | |
| 
 | |
| 	table.select_into(mut tmp1, 9)
 | |
| 	table.select_into(mut tmp2, 11)
 | |
| 	table.select_into(mut tmp3, 7)
 | |
| 	table.select_into(mut tmp4, 13)
 | |
| 	// Expect T1 + T2 = T3 + T4
 | |
| 
 | |
| 	mut acc_p1 := ProjectiveP1{}
 | |
| 	mut lhs := new_identity_point()
 | |
| 	mut rhs := new_identity_point()
 | |
| 
 | |
| 	acc_p1.add(lhs, tmp1)
 | |
| 	lhs.from_p1(acc_p1)
 | |
| 	acc_p1.add(lhs, tmp2)
 | |
| 	lhs.from_p1(acc_p1)
 | |
| 
 | |
| 	acc_p1.add(rhs, tmp3)
 | |
| 	rhs.from_p1(acc_p1)
 | |
| 	acc_p1.add(rhs, tmp4)
 | |
| 	rhs.from_p1(acc_p1)
 | |
| 
 | |
| 	assert lhs.equal(rhs) == 1
 | |
| }
 | |
| 
 | |
| fn test_naf_lookup_table8() {
 | |
| 	mut table := NafLookupTable8{}
 | |
| 	b := new_generator_point()
 | |
| 	table.from_p3(b)
 | |
| 
 | |
| 	mut tmp1 := AffineCached{}
 | |
| 	mut tmp2 := AffineCached{}
 | |
| 	mut tmp3 := AffineCached{}
 | |
| 	mut tmp4 := AffineCached{}
 | |
| 
 | |
| 	table.select_into(mut tmp1, 49)
 | |
| 	table.select_into(mut tmp2, 11)
 | |
| 	table.select_into(mut tmp3, 35)
 | |
| 	table.select_into(mut tmp4, 25)
 | |
| 	// Expect T1 + T2 = T3 + T4
 | |
| 
 | |
| 	mut acc_p1 := ProjectiveP1{}
 | |
| 	mut lhs := new_identity_point()
 | |
| 	mut rhs := new_identity_point()
 | |
| 
 | |
| 	acc_p1.add_affine(lhs, tmp1)
 | |
| 	lhs.from_p1(acc_p1)
 | |
| 	acc_p1.add_affine(lhs, tmp2)
 | |
| 	lhs.from_p1(acc_p1)
 | |
| 
 | |
| 	acc_p1.add_affine(rhs, tmp3)
 | |
| 	rhs.from_p1(acc_p1)
 | |
| 	acc_p1.add_affine(rhs, tmp4)
 | |
| 	rhs.from_p1(acc_p1)
 | |
| 
 | |
| 	assert lhs.equal(rhs) == 1
 | |
| }
 |