diff options
| author | J08nY | 2018-12-15 16:43:44 +0100 |
|---|---|---|
| committer | J08nY | 2019-03-21 11:00:14 +0100 |
| commit | bec2c56a86ce1d0b2285aaed50726fbdba42d620 (patch) | |
| tree | 65e4266481ed851a0f41367ecc8ba399de8f4240 /test/ec/test_mult.py | |
| parent | ba8212dbc9cee4c098838534c096486ad5bf759a (diff) | |
| download | pyecsca-bec2c56a86ce1d0b2285aaed50726fbdba42d620.tar.gz pyecsca-bec2c56a86ce1d0b2285aaed50726fbdba42d620.tar.zst pyecsca-bec2c56a86ce1d0b2285aaed50726fbdba42d620.zip | |
Diffstat (limited to 'test/ec/test_mult.py')
| -rw-r--r-- | test/ec/test_mult.py | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/test/ec/test_mult.py b/test/ec/test_mult.py index ec26335..38c7367 100644 --- a/test/ec/test_mult.py +++ b/test/ec/test_mult.py @@ -2,8 +2,8 @@ from unittest import TestCase from pyecsca.ec.curve import EllipticCurve from pyecsca.ec.mod import Mod -from pyecsca.ec.model import ShortWeierstrassModel -from pyecsca.ec.mult import LTRMultiplier, RTLMultiplier +from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel +from pyecsca.ec.mult import LTRMultiplier, RTLMultiplier, LadderMultiplier from pyecsca.ec.point import Point @@ -12,24 +12,47 @@ class ScalarMultiplierTests(TestCase): def setUp(self): self.p = 0xfffffffdffffffffffffffffffffffff self.coords = ShortWeierstrassModel.coordinates["projective"] + self.base = Point(self.coords, X=Mod(0x161ff7528b899b2d0c28607ca52c5b86, self.p), + Y=Mod(0xcf5ac8395bafeb13c02da292dded7a83, self.p), + Z=Mod(1, self.p)) self.secp128r1 = EllipticCurve(ShortWeierstrassModel, self.coords, dict(a=0xfffffffdfffffffffffffffffffffffc, b=0xe87579c11079f43dd824993c2cee5ed3), Point(self.coords, X=Mod(0, self.p), Y=Mod(1, self.p), Z=Mod(0, self.p))) - self.base = Point(self.coords, X=Mod(0x161ff7528b899b2d0c28607ca52c5b86, self.p), - Y=Mod(0xcf5ac8395bafeb13c02da292dded7a83, self.p), - Z=Mod(1, self.p)) + + self.coords25519 = MontgomeryModel.coordinates["xz"] + self.p25519 = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed + self.base25519 = Point(self.coords25519, X=Mod(9, self.p25519), + Z=Mod(1, self.p25519)) + self.curve25519 = EllipticCurve(MontgomeryModel, self.coords25519, + dict(a=486662, b=1), + Point(self.coords25519, + X=Mod(0, self.p25519), Z=Mod(1, self.p25519))) def test_rtl_simple(self): mult = RTLMultiplier(self.secp128r1, self.coords.formulas["add-1998-cmo"], self.coords.formulas["dbl-1998-cmo"], self.coords.formulas["z"]) - mult.multiply(10, self.base) + res = mult.multiply(10, self.base) + other = mult.multiply(5, self.base) + other = mult.multiply(2, other) + self.assertEqual(res, other) def test_ltr_simple(self): mult = LTRMultiplier(self.secp128r1, self.coords.formulas["add-1998-cmo"], self.coords.formulas["dbl-1998-cmo"], self.coords.formulas["z"]) - mult.multiply(10, self.base) + res = mult.multiply(10, self.base) + other = mult.multiply(5, self.base) + other = mult.multiply(2, other) + self.assertEqual(res, other) + + def test_ladder_simple(self): + mult = LadderMultiplier(self.curve25519, self.coords25519.formulas["ladd-1987-m"], + self.coords25519.formulas["scale"]) + res = mult.multiply(15, self.base25519) + other = mult.multiply(3, self.base25519) + other = mult.multiply(5, other) + self.assertEqual(res, other) def test_basic_multipliers(self): ltr = LTRMultiplier(self.secp128r1, self.coords.formulas["add-1998-cmo"], |
