aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2019-03-12 16:43:35 +0100
committerJ08nY2019-03-21 11:00:14 +0100
commita9b7c026b0714bfa0aacf504e6b9dde65fccc2aa (patch)
treed32461cfbf5f275508779f5a4966c24cf020d21a
parent7fa186f42d17942192f8b23be8a2fb1b731b0641 (diff)
downloadpyecsca-a9b7c026b0714bfa0aacf504e6b9dde65fccc2aa.tar.gz
pyecsca-a9b7c026b0714bfa0aacf504e6b9dde65fccc2aa.tar.zst
pyecsca-a9b7c026b0714bfa0aacf504e6b9dde65fccc2aa.zip
-rw-r--r--README.md1
-rw-r--r--pyecsca/ec/context.py2
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g4
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-24
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2.op34
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g.op34
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-24
-rw-r--r--pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2.op34
-rw-r--r--pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g4
-rw-r--r--pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g.op34
-rw-r--r--pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g4
-rw-r--r--pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g.op34
-rw-r--r--pyecsca/ec/formula.py4
-rw-r--r--pyecsca/ec/model.py5
14 files changed, 28 insertions, 24 deletions
diff --git a/README.md b/README.md
index a7db675..bde63fd 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@
- [fastdtw](https://github.com/slaypni/fastdtw)
*pyecsca* contains data from the [Explicit-Formulas Database](https://www.hyperelliptic.org/EFD/index.html) by Daniel J. Bernstein and Tanja Lange.
+The data was partially changed, to make working with it easier.
It also supports working with [Riscure](https://www.riscure.com) Inspector trace sets, which are of a proprietary format.
diff --git a/pyecsca/ec/context.py b/pyecsca/ec/context.py
index 7fafadc..0bb86d8 100644
--- a/pyecsca/ec/context.py
+++ b/pyecsca/ec/context.py
@@ -30,7 +30,7 @@ class Context(object):
locals[op.result] = op_result
result = []
for i in range(formula.num_outputs):
- ind = str(i + 3)
+ ind = str(i + formula.output_index)
resulting = {variable: locals[variable + ind]
for variable in formula.coordinate_model.variables
if variable + ind in locals}
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g
index 0b5f17a..6ab2f30 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g
@@ -3,5 +3,5 @@ parameter s
assume s = (1+r)/(1-r)
compute V = s(r Z2^2-Y2^2)(r Z3^2-Y3^2)
compute W = (r Z2^2+Y2^2)(r Z3^2+Y3^2)
-compute Y5 = r Z1(W-V)
-compute Z5 = Y1(W+V)
+compute Y4 = r Z1(W-V)
+compute Z4 = Y1(W+V)
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2 b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2
index b611b34..d7bb994 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2
@@ -7,5 +7,5 @@ compute YY3 = Y3^2
compute ZZ3 = r Z3^2
compute V = s(ZZ2-YY2)(ZZ3-YY3)
compute W = (ZZ2+YY2)(ZZ3+YY3)
-compute Y5 = (r Z1)(W-V)
-compute Z5 = Y1(W+V)
+compute Y4 = (r Z1)(W-V)
+compute Z4 = Y1(W+V)
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2.op3 b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2.op3
index 3433bd8..0686bc1 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2.op3
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g-2.op3
@@ -13,6 +13,6 @@ t6 = ZZ3+YY3
W = t5*t6
t7 = r*Z1
t8 = W-V
-Y5 = t7*t8
+Y4 = t7*t8
t9 = W+V
-Z5 = Y1*t9
+Z4 = Y1*t9
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g.op3 b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g.op3
index b7a2ed7..584ce61 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g.op3
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/dadd-2006-g.op3
@@ -19,6 +19,6 @@ t16 = t13+t12
W = t15*t16
t17 = W-V
t18 = Z1*t17
-Y5 = r*t18
+Y4 = r*t18
t19 = W+V
-Z5 = Y1*t19
+Z4 = Y1*t19
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2 b/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2
index 53d3fd7..2ddd828 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2
@@ -8,5 +8,5 @@ compute YY3 = Y3^2
compute ZZ3 = r Z3^2
compute V = s(ZZ2-YY2)(ZZ3-YY3)
compute W = (ZZ2+YY2)(ZZ3+YY3)
-compute Y5 = r(W-V)
-compute Z5 = Y1(W+V)
+compute Y4 = r(W-V)
+compute Z4 = Y1(W+V)
diff --git a/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2.op3 b/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2.op3
index 1a10347..c888d1f 100644
--- a/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2.op3
+++ b/pyecsca/ec/efd/edwards/yz/diffadd/mdadd-2006-g-2.op3
@@ -12,6 +12,6 @@ t5 = ZZ2+YY2
t6 = ZZ3+YY3
W = t5*t6
t7 = W-V
-Y5 = r*t7
+Y4 = r*t7
t8 = W+V
-Z5 = Y1*t8
+Z4 = Y1*t8
diff --git a/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g b/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g
index 1353955..ab03316 100644
--- a/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g
+++ b/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g
@@ -3,5 +3,5 @@ parameter s
assume s = (1+r)/(1-r)
compute V = s(Z2-Y2)(Z3-Y3)
compute W = (Z2+Y2)(Z3+Y3)
-compute Y5 = Z1(W-V)^2
-compute Z5 = Y1(W+V)^2
+compute Y4 = Z1(W-V)^2
+compute Z4 = Y1(W+V)^2
diff --git a/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g.op3 b/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g.op3
index 9194932..40d57b8 100644
--- a/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g.op3
+++ b/pyecsca/ec/efd/edwards/yzsquared/diffadd/dadd-2006-g.op3
@@ -7,7 +7,7 @@ t4 = Z3+Y3
W = t3*t4
t5 = W-V
t6 = t5^2
-Y5 = Z1*t6
+Y4 = Z1*t6
t7 = W+V
t8 = t7^2
-Z5 = Y1*t8
+Z4 = Y1*t8
diff --git a/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g b/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g
index f6fc535..2c6e1ac 100644
--- a/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g
+++ b/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g
@@ -4,5 +4,5 @@ parameter s
assume s = (1+r)/(1-r)
compute V = s(Z2-Y2)(Z3-Y3)
compute W = (Z2+Y2)(Z3+Y3)
-compute Y5 = (W-V)^2
-compute Z5 = Y1(W+V)^2
+compute Y4 = (W-V)^2
+compute Z4 = Y1(W+V)^2
diff --git a/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g.op3 b/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g.op3
index 530c50f..8e82aa3 100644
--- a/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g.op3
+++ b/pyecsca/ec/efd/edwards/yzsquared/diffadd/mdadd-2006-g.op3
@@ -6,7 +6,7 @@ t3 = Z2+Y2
t4 = Z3+Y3
W = t3*t4
t5 = W-V
-Y5 = t5^2
+Y4 = t5^2
t6 = W+V
t7 = t6^2
-Z5 = Y1*t7
+Z4 = Y1*t7
diff --git a/pyecsca/ec/formula.py b/pyecsca/ec/formula.py
index c4aa77b..e6d8d9f 100644
--- a/pyecsca/ec/formula.py
+++ b/pyecsca/ec/formula.py
@@ -19,6 +19,10 @@ class Formula(object):
def __repr__(self):
return f"{self.__class__.__name__}({self.name} for {self.coordinate_model})"
+ @property
+ def output_index(cls):
+ return max(cls.num_inputs + 1, 3)
+
class EFDFormula(Formula):
diff --git a/pyecsca/ec/model.py b/pyecsca/ec/model.py
index cc474f5..397b0ee 100644
--- a/pyecsca/ec/model.py
+++ b/pyecsca/ec/model.py
@@ -29,11 +29,10 @@ class EFDCurveModel(CurveModel):
_loaded: bool = False
def __init__(self, efd_name: str):
- self._efd_name = efd_name
if self._loaded:
return
- else:
- self.__class__._loaded = True
+ self._efd_name = efd_name
+ self.__class__._loaded = True
self.__class__.coordinates = {}
self.__class__.parameter_names = []
self.__class__.coordinate_names = []