diff options
Diffstat (limited to 'test/ec/test_formula.py')
| -rw-r--r-- | test/ec/test_formula.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/ec/test_formula.py b/test/ec/test_formula.py new file mode 100644 index 0000000..cedbe1f --- /dev/null +++ b/test/ec/test_formula.py @@ -0,0 +1,35 @@ +from unittest import TestCase + +from pyecsca.ec.curves import get_params +from pyecsca.ec.key_generation import KeyGeneration +from pyecsca.ec.mult import LTRMultiplier + + +class FormulaTests(TestCase): + + def setUp(self): + self.secp128r1 = get_params("secg", "secp128r1", "projective") + self.add = self.secp128r1.curve.coordinate_model.formulas["add-2007-bl"] + + def test_wrong_call(self): + with self.assertRaises(ValueError): + self.add() + with self.assertRaises(ValueError): + self.add(self.secp128r1.generator.to_affine(), self.secp128r1.generator.to_affine()) + + def test_indices(self): + self.assertEqual(self.add.input_index, 1) + self.assertEqual(self.add.output_index, 3) + + def test_inputs_outputs(self): + self.assertEqual(self.add.inputs, {"X1", "Y1", "Z1", "X2", "Y2", "Z2"}) + self.assertEqual(self.add.outputs, {"X3", "Y3", "Z3"}) + + def test_num_ops(self): + self.assertEqual(self.add.num_operations, 33) + self.assertEqual(self.add.num_multiplications, 17) + self.assertEqual(self.add.num_divisions, 0) + self.assertEqual(self.add.num_inversions, 0) + self.assertEqual(self.add.num_powers, 0) + self.assertEqual(self.add.num_squarings, 6) + self.assertEqual(self.add.num_addsubs, 10)
\ No newline at end of file |
