aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJ08nY2023-02-22 17:32:07 +0100
committerJ08nY2023-02-22 17:32:07 +0100
commit445eaa41f22ed82502ca813e98a92c2b078c9a79 (patch)
tree1ae8992a410f9689ea4d7822485e1a8ccbe4f1af /test
parent4bcdef57631b4f5783391ce817eb119fea1b8c55 (diff)
downloadpyecsca-445eaa41f22ed82502ca813e98a92c2b078c9a79.tar.gz
pyecsca-445eaa41f22ed82502ca813e98a92c2b078c9a79.tar.zst
pyecsca-445eaa41f22ed82502ca813e98a92c2b078c9a79.zip
Add test for custom domain parameter generation.
Diffstat (limited to 'test')
-rw-r--r--test/ec/test_params.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/test/ec/test_params.py b/test/ec/test_params.py
index b2a57b6..833272d 100644
--- a/test/ec/test_params.py
+++ b/test/ec/test_params.py
@@ -2,10 +2,14 @@ from unittest import TestCase
from parameterized import parameterized
+from pyecsca.ec.mod import Mod
+from pyecsca.ec.point import Point, InfinityPoint
from pyecsca.misc.cfg import TemporaryConfig
from pyecsca.ec.coordinates import AffineCoordinateModel
from pyecsca.ec.error import UnsatisfiedAssumptionError
-from pyecsca.ec.params import get_params, load_params, load_category, get_category
+from pyecsca.ec.params import get_params, load_params, load_category, get_category, DomainParameters
+from pyecsca.ec.model import ShortWeierstrassModel
+from pyecsca.ec.curve import EllipticCurve
class DomainParameterTests(TestCase):
@@ -98,3 +102,21 @@ class DomainParameterTests(TestCase):
def test_affine(self):
aff = get_params("secg", "secp128r1", "affine")
self.assertIsInstance(aff.curve.coordinate_model, AffineCoordinateModel)
+
+ def test_custom_params(self):
+ model = ShortWeierstrassModel()
+ coords = model.coordinates["projective"]
+ p = 0xd7d1247f
+ a = Mod(0xa4a44016, p)
+ b = Mod(0x73f76716, p)
+ n = 0xd7d2a475
+ h = 1
+ gx, gy, gz = Mod(0x54eed6d7, p), Mod(0x6f1e55ac, p), Mod(1, p)
+ generator = Point(coords, X=gx, Y=gy, Z=gz)
+ neutral = InfinityPoint(coords)
+
+ curve = EllipticCurve(model, coords, p, neutral, {"a": a, "b": b})
+ params = DomainParameters(curve, generator, n, h)
+ self.assertIsNotNone(params)
+ res = params.curve.affine_double(generator.to_affine())
+ self.assertIsNotNone(res)