aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/sca
diff options
context:
space:
mode:
authorJ08nY2025-06-19 15:20:50 +0200
committerJ08nY2025-06-19 15:20:50 +0200
commite355d741135d22a8fcfe620d6961e71aa6c38b31 (patch)
treebaeb5a82ca6a23c5cc32fd0ed23f42defaa2ddb3 /pyecsca/sca
parent248a3aefa3616b11bcb4d9b613328d69b2d8e076 (diff)
downloadpyecsca-e355d741135d22a8fcfe620d6961e71aa6c38b31.tar.gz
pyecsca-e355d741135d22a8fcfe620d6961e71aa6c38b31.tar.zst
pyecsca-e355d741135d22a8fcfe620d6961e71aa6c38b31.zip
More speed for MultipleContext.
Diffstat (limited to 'pyecsca/sca')
-rw-r--r--pyecsca/sca/re/rpa.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/pyecsca/sca/re/rpa.py b/pyecsca/sca/re/rpa.py
index dbfb844..adef84d 100644
--- a/pyecsca/sca/re/rpa.py
+++ b/pyecsca/sca/re/rpa.py
@@ -112,37 +112,38 @@ class MultipleContext(Context):
self.precomp.update(action.result)
if isinstance(action, FormulaAction) and self.inside:
action = cast(FormulaAction, action)
- if isinstance(action.formula, DoublingFormula):
+ shortname = action.formula.shortname
+ if shortname == "dbl":
inp = action.input_points[0]
out = action.output_points[0]
self.points[out] = 2 * self.points[inp]
self.parents[out] = [inp]
self.formulas[out] = action.formula.shortname
- elif isinstance(action.formula, TriplingFormula):
+ elif shortname == "tpl":
inp = action.input_points[0]
out = action.output_points[0]
self.points[out] = 3 * self.points[inp]
self.parents[out] = [inp]
self.formulas[out] = action.formula.shortname
- elif isinstance(action.formula, AdditionFormula):
+ elif shortname == "add":
one, other = action.input_points
out = action.output_points[0]
self.points[out] = self.points[one] + self.points[other]
self.parents[out] = [one, other]
self.formulas[out] = action.formula.shortname
- elif isinstance(action.formula, NegationFormula):
+ elif shortname == "neg":
inp = action.input_points[0]
out = action.output_points[0]
self.points[out] = -self.points[inp]
self.parents[out] = [inp]
self.formulas[out] = action.formula.shortname
- elif isinstance(action.formula, DifferentialAdditionFormula):
+ elif shortname == "dadd":
_, one, other = action.input_points
out = action.output_points[0]
self.points[out] = self.points[one] + self.points[other]
self.parents[out] = [one, other]
self.formulas[out] = action.formula.shortname
- elif isinstance(action.formula, LadderFormula):
+ elif shortname == "ladd":
_, one, other = action.input_points
dbl, add = action.output_points
self.points[add] = self.points[one] + self.points[other]
@@ -151,7 +152,7 @@ class MultipleContext(Context):
self.points[dbl] = 2 * self.points[one]
self.parents[dbl] = [one]
self.formulas[dbl] = action.formula.shortname
- elif isinstance(action.formula, ScalingFormula):
+ elif shortname == "scl":
inp = action.input_points[0]
out = action.output_points[0]
self.points[out] = self.points[inp]