From cad492f2718fbdc1c2f24876add693726494f0cc Mon Sep 17 00:00:00 2001 From: J08nY Date: Fri, 29 Sep 2023 22:15:06 +0200 Subject: Add wNAF scalarmult, more options implemented for other scalarmults. --- pyecsca/codegen/builder.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'pyecsca/codegen/builder.py') diff --git a/pyecsca/codegen/builder.py b/pyecsca/codegen/builder.py index 2cd572b..d0ec648 100644 --- a/pyecsca/codegen/builder.py +++ b/pyecsca/codegen/builder.py @@ -13,7 +13,7 @@ from pyecsca.ec.configuration import (Multiplication, Squaring, Reduction, HashT from pyecsca.ec.coordinates import CoordinateModel from pyecsca.ec.formula import Formula, AdditionFormula from pyecsca.ec.model import CurveModel -from pyecsca.ec.mult import ScalarMultiplier +from pyecsca.ec.mult import ScalarMultiplier, AccumulationOrder, ProcessingDirection from .render import render from .common import Platform, DeviceConfiguration, MULTIPLIERS, wrap_enum, get_model, get_coords @@ -40,7 +40,7 @@ def get_multiplier(ctx: click.Context, param, value: Optional[str]) -> Optional[ if value is None: return None res = re.match( - "(?P[a-zA-Z\-]+)\((?P([a-zA-Z_]+ *= *[a-zA-Z0-9]+, ?)*?([a-zA-Z_]+ *= *[a-zA-Z0-9]+)*)\)", + "(?P[a-zA-Z\-]+)\((?P([a-zA-Z_]+ *= *[a-zA-Z0-9.]+, ?)*?([a-zA-Z_]+ *= *[a-zA-Z0-9.]+)*)\)", value) if not res: raise click.BadParameter("Couldn't parse multiplier spec: {}.".format(value)) @@ -61,7 +61,10 @@ def get_multiplier(ctx: click.Context, param, value: Optional[str]) -> Optional[ raise click.BadParameter( "Multiplier {} requires formulas: {}, got {}.".format(mult_class.__name__, mult_class.requires, classes)) - kwargs = eval("dict(" + args + ")") + globs = dict(globals()) + globs["AccumulationOrder"] = AccumulationOrder + globs["ProcessingDirection"] = ProcessingDirection + kwargs = eval("dict(" + args + ")", globs) required = set( filter(lambda formula: any(isinstance(formula, cls) for cls in mult_class.requires), formulas)) -- cgit v1.3.1