diff options
| author | J08nY | 2025-03-12 19:01:43 +0100 |
|---|---|---|
| committer | J08nY | 2025-03-12 19:01:43 +0100 |
| commit | 345d5883e5e75ed02282107127a8e65b67435247 (patch) | |
| tree | d8a0e02575283412d19a46dba426a90f88e4e584 | |
| parent | e4c50355c50934e508d9b6d4a957be17d12d8b25 (diff) | |
| download | pyecsca-345d5883e5e75ed02282107127a8e65b67435247.tar.gz pyecsca-345d5883e5e75ed02282107127a8e65b67435247.tar.zst pyecsca-345d5883e5e75ed02282107127a8e65b67435247.zip | |
39 files changed, 91 insertions, 84 deletions
diff --git a/pyecsca/ec/mult/fake.py b/pyecsca/ec/mult/fake.py index 5d5ad64..f89d622 100644 --- a/pyecsca/ec/mult/fake.py +++ b/pyecsca/ec/mult/fake.py @@ -33,5 +33,5 @@ def fake_mult(mult_class: Type[ScalarMultiplier], mult_factory: Callable, params for subclass in formula.__subclasses__(): if issubclass(subclass, FakeFormula): formulas.append(subclass(params.curve.coordinate_model)) - mult = mult_factory(*formulas) + mult = mult_factory(*formulas, short_circuit=False) return mult diff --git a/pyecsca/sca/re/rpa.py b/pyecsca/sca/re/rpa.py index 66b4d1e..e7796cf 100644 --- a/pyecsca/sca/re/rpa.py +++ b/pyecsca/sca/re/rpa.py @@ -91,7 +91,7 @@ class MultipleContext(Context): self.base = action.point self.neutral = action.params.curve.neutral self.points = {self.base: 1, self.neutral: 0} - self.parents = {self.base: []} + self.parents = {self.base: [], self.neutral: []} self.formulas = {self.base: "", self.neutral: ""} self.precomp = {} diff --git a/test/ec/bench_divpoly.py b/test/ec/bench_divpoly.py index 0df7d59..0bf7617 100755 --- a/test/ec/bench_divpoly.py +++ b/test/ec/bench_divpoly.py @@ -1,11 +1,11 @@ #!/usr/bin/env python import sys +from datetime import datetime import click from pyecsca.ec.divpoly import mult_by_n from pyecsca.ec.params import get_params -from datetime import datetime @click.command() diff --git a/test/ec/perf_formula.py b/test/ec/perf_formula.py index 1092ab5..e55ec9c 100755 --- a/test/ec/perf_formula.py +++ b/test/ec/perf_formula.py @@ -1,8 +1,8 @@ #!/usr/bin/env python import click -from pyecsca.ec.mod.gmp import has_gmp from pyecsca.ec.mod.flint import has_flint +from pyecsca.ec.mod.gmp import has_gmp from pyecsca.ec.params import get_params from pyecsca.misc.cfg import TemporaryConfig from test.utils import Profiler diff --git a/test/ec/perf_mod.py b/test/ec/perf_mod.py index 7783f09..4bd1e1e 100755 --- a/test/ec/perf_mod.py +++ b/test/ec/perf_mod.py @@ -2,8 +2,8 @@ import click from pyecsca.ec.mod.base import Mod, mod as make_mod -from pyecsca.ec.mod.gmp import has_gmp from pyecsca.ec.mod.flint import has_flint +from pyecsca.ec.mod.gmp import has_gmp from pyecsca.misc.cfg import TemporaryConfig from test.utils import Profiler diff --git a/test/ec/perf_mult.py b/test/ec/perf_mult.py index 402aa26..e26bbe6 100755 --- a/test/ec/perf_mult.py +++ b/test/ec/perf_mult.py @@ -5,8 +5,8 @@ import click from pyecsca.ec.context import local, DefaultContext from pyecsca.ec.formula import AdditionFormula, DoublingFormula -from pyecsca.ec.mod.gmp import has_gmp from pyecsca.ec.mod.flint import has_flint +from pyecsca.ec.mod.gmp import has_gmp from pyecsca.ec.mult import LTRMultiplier from pyecsca.ec.params import get_params from pyecsca.misc.cfg import TemporaryConfig diff --git a/test/ec/test_countermeasures.py b/test/ec/test_countermeasures.py index 3f78f74..0559d26 100644 --- a/test/ec/test_countermeasures.py +++ b/test/ec/test_countermeasures.py @@ -1,12 +1,12 @@ import pytest -from pyecsca.ec.mult import LTRMultiplier from pyecsca.ec.countermeasures import ( GroupScalarRandomization, AdditiveSplitting, MultiplicativeSplitting, EuclideanSplitting, ) +from pyecsca.ec.mult import LTRMultiplier @pytest.fixture(params=["add-1998-cmo-2", "add-2015-rcb"]) diff --git a/test/ec/test_curve.py b/test/ec/test_curve.py index 42bbcf6..fd3625f 100644 --- a/test/ec/test_curve.py +++ b/test/ec/test_curve.py @@ -1,10 +1,11 @@ from binascii import unhexlify + import pytest from pyecsca.ec.coordinates import AffineCoordinateModel from pyecsca.ec.curve import EllipticCurve from pyecsca.ec.error import UnsatisfiedAssumptionError -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.model import MontgomeryModel from pyecsca.ec.point import Point, InfinityPoint diff --git a/test/ec/test_divpoly.py b/test/ec/test_divpoly.py index 76b5f29..fc76b9a 100644 --- a/test/ec/test_divpoly.py +++ b/test/ec/test_divpoly.py @@ -2,9 +2,9 @@ import json import pytest from importlib_resources import files +from sympy import FF import test.data.divpoly -from sympy import FF from pyecsca.ec.divpoly import a_invariants, b_invariants, divpoly0, divpoly, mult_by_n diff --git a/test/ec/test_formula.py b/test/ec/test_formula.py index 137f243..a06203a 100644 --- a/test/ec/test_formula.py +++ b/test/ec/test_formula.py @@ -1,12 +1,25 @@ +import multiprocessing as mp import pickle from operator import itemgetter from typing import Tuple -import multiprocessing as mp import pytest -from sympy import FF, symbols from importlib_resources import files, as_file +from sympy import FF, symbols + import pyecsca.ec +from pyecsca.ec.error import UnsatisfiedAssumptionError +from pyecsca.ec.formula import ( + AdditionFormula, + DoublingFormula, + LadderFormula, + CodeFormula, +) +from pyecsca.ec.formula.efd import ( + AdditionEFDFormula, + DoublingEFDFormula, + LadderEFDFormula, +) from pyecsca.ec.formula.expand import expand_formula_set, expand_formula_set_parallel from pyecsca.ec.formula.fliparoo import generate_fliparood_formulas from pyecsca.ec.formula.graph import rename_ivs @@ -22,23 +35,11 @@ from pyecsca.ec.formula.partitions import ( generate_partitioned_formulas, ) from pyecsca.ec.formula.switch_sign import generate_switched_formulas -from pyecsca.ec.mod import SymbolicMod, Mod, mod -from pyecsca.misc.cfg import TemporaryConfig -from pyecsca.ec.error import UnsatisfiedAssumptionError +from pyecsca.ec.mod import SymbolicMod, mod +from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel, TwistedEdwardsModel from pyecsca.ec.params import get_params, DomainParameters from pyecsca.ec.point import Point -from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel, TwistedEdwardsModel -from pyecsca.ec.formula.efd import ( - AdditionEFDFormula, - DoublingEFDFormula, - LadderEFDFormula, -) -from pyecsca.ec.formula import ( - AdditionFormula, - DoublingFormula, - LadderFormula, - CodeFormula, -) +from pyecsca.misc.cfg import TemporaryConfig @pytest.fixture() diff --git a/test/ec/test_key_agreement.py b/test/ec/test_key_agreement.py index aa09051..5f1512c 100644 --- a/test/ec/test_key_agreement.py +++ b/test/ec/test_key_agreement.py @@ -1,9 +1,10 @@ +import json from copy import copy import pytest -import json from importlib_resources import files +import test.data.ec from pyecsca.ec.coordinates import AffineCoordinateModel from pyecsca.ec.key_agreement import ( ECDH_NONE, @@ -15,13 +16,12 @@ from pyecsca.ec.key_agreement import ( X25519, X448, ) -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.mult import ( LTRMultiplier, LadderMultiplier, DifferentialLadderMultiplier, ) -import test.data.ec from pyecsca.ec.params import get_params from pyecsca.ec.point import Point diff --git a/test/ec/test_mod.py b/test/ec/test_mod.py index 630a1ff..07f5bdf 100644 --- a/test/ec/test_mod.py +++ b/test/ec/test_mod.py @@ -3,9 +3,14 @@ import warnings import pytest from sympy import FF, symbols +from pyecsca.ec.error import ( + NonInvertibleError, + NonResidueError, + NonInvertibleWarning, + NonResidueWarning, +) from pyecsca.ec.mod import ( mod, - Mod, gcd, extgcd, Undefined, @@ -15,12 +20,6 @@ from pyecsca.ec.mod import ( jacobi, ) from pyecsca.ec.mod.gmp import has_gmp -from pyecsca.ec.error import ( - NonInvertibleError, - NonResidueError, - NonInvertibleWarning, - NonResidueWarning, -) from pyecsca.misc.cfg import getconfig, TemporaryConfig diff --git a/test/ec/test_mult.py b/test/ec/test_mult.py index a7719dc..721badc 100644 --- a/test/ec/test_mult.py +++ b/test/ec/test_mult.py @@ -3,8 +3,7 @@ from typing import Sequence, List import pytest -from pyecsca.ec.context import local, DefaultContext -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.mult import ( DoubleAndAddMultiplier, LTRMultiplier, diff --git a/test/ec/test_op.py b/test/ec/test_op.py index 8d6996b..e82742c 100644 --- a/test/ec/test_op.py +++ b/test/ec/test_op.py @@ -3,7 +3,7 @@ from ast import parse import pytest from pyecsca.ec.formula import OpResult -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.op import CodeOp, OpType diff --git a/test/ec/test_params.py b/test/ec/test_params.py index 891a7ca..b020f9b 100644 --- a/test/ec/test_params.py +++ b/test/ec/test_params.py @@ -1,19 +1,18 @@ import pickle -from importlib_resources import files, as_file - import pytest +from importlib_resources import files, as_file import test.data.ec -from pyecsca.ec.mod import Mod, mod -from pyecsca.ec.point import Point, InfinityPoint -from pyecsca.misc.cfg import TemporaryConfig from pyecsca.ec.coordinates import AffineCoordinateModel +from pyecsca.ec.curve import EllipticCurve from pyecsca.ec.error import UnsatisfiedAssumptionError +from pyecsca.ec.mod import mod +from pyecsca.ec.model import ShortWeierstrassModel from pyecsca.ec.params import get_params, load_params, load_category, get_category, DomainParameters, \ load_params_ectester, load_params_ecgen -from pyecsca.ec.model import ShortWeierstrassModel -from pyecsca.ec.curve import EllipticCurve +from pyecsca.ec.point import Point, InfinityPoint +from pyecsca.misc.cfg import TemporaryConfig def test_eq(secp128r1, curve25519): diff --git a/test/ec/test_pickle.py b/test/ec/test_pickle.py index 3400158..5af3625 100644 --- a/test/ec/test_pickle.py +++ b/test/ec/test_pickle.py @@ -1,5 +1,4 @@ import pickle -import pickletools from multiprocessing import get_context from multiprocessing.context import BaseContext diff --git a/test/ec/test_point.py b/test/ec/test_point.py index 52c2a71..6dfced5 100644 --- a/test/ec/test_point.py +++ b/test/ec/test_point.py @@ -1,11 +1,13 @@ import pickle from contextlib import nullcontext as does_not_raise + +import pytest + from pyecsca.ec.coordinates import AffineCoordinateModel -from pyecsca.ec.params import get_params from pyecsca.ec.mod import mod from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel +from pyecsca.ec.params import get_params from pyecsca.ec.point import Point, InfinityPoint -import pytest @pytest.fixture() diff --git a/test/ec/test_regress.py b/test/ec/test_regress.py index cbfb08b..f20491d 100644 --- a/test/ec/test_regress.py +++ b/test/ec/test_regress.py @@ -9,8 +9,8 @@ from pyecsca.ec.error import UnsatisfiedAssumptionError from pyecsca.ec.formula import AdditionFormula, DoublingFormula, ScalingFormula from pyecsca.ec.mod import Mod, SymbolicMod, mod from pyecsca.ec.model import MontgomeryModel, EdwardsModel -from pyecsca.ec.params import get_params from pyecsca.ec.mult import LTRMultiplier +from pyecsca.ec.params import get_params from pyecsca.ec.point import Point, InfinityPoint diff --git a/test/ec/test_signature.py b/test/ec/test_signature.py index df00aa6..a61876b 100644 --- a/test/ec/test_signature.py +++ b/test/ec/test_signature.py @@ -2,9 +2,10 @@ import json import pytest from importlib_resources import files + import test.data.ec from pyecsca.ec.coordinates import AffineCoordinateModel -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.mult import LTRMultiplier from pyecsca.ec.params import get_params from pyecsca.ec.point import Point diff --git a/test/ec/utils.py b/test/ec/utils.py index 1f32033..03c8700 100644 --- a/test/ec/utils.py +++ b/test/ec/utils.py @@ -1,5 +1,5 @@ -from itertools import product from functools import reduce +from itertools import product def cartesian(*items): diff --git a/test/sca/conftest.py b/test/sca/conftest.py index a7a21d6..4d312a3 100644 --- a/test/sca/conftest.py +++ b/test/sca/conftest.py @@ -1,10 +1,9 @@ from typing import Dict +import matplotlib.pyplot as plt import pytest from importlib_resources import files, as_file -import matplotlib.pyplot as plt - from pyecsca.sca import Trace cases: Dict[str, int] = {} diff --git a/test/sca/perf_combine.py b/test/sca/perf_combine.py index 8ac274c..07b201e 100644 --- a/test/sca/perf_combine.py +++ b/test/sca/perf_combine.py @@ -1,8 +1,7 @@ #!/usr/bin/env python import click - from importlib_resources import files, as_file -from test.utils import Profiler + import test.data.sca from pyecsca.sca import ( InspectorTraceSet, @@ -13,6 +12,7 @@ from pyecsca.sca import ( subtract, conditional_average, ) +from test.utils import Profiler @click.command() diff --git a/test/sca/perf_stacked_combine.py b/test/sca/perf_stacked_combine.py index 024370e..cf0b3ad 100644 --- a/test/sca/perf_stacked_combine.py +++ b/test/sca/perf_stacked_combine.py @@ -1,13 +1,13 @@ from __future__ import annotations +import json +import sys from argparse import Namespace, FileType, ArgumentParser from contextlib import contextmanager, nullcontext -from itertools import product -from pathlib import Path from copy import copy from csv import DictWriter -import json -import sys +from itertools import product +from pathlib import Path from typing import (Any, Callable, Dict, List, Optional, TextIO, Tuple, Union, cast) from warnings import warn diff --git a/test/sca/perf_zvp.py b/test/sca/perf_zvp.py index 34090df..eb390e8 100644 --- a/test/sca/perf_zvp.py +++ b/test/sca/perf_zvp.py @@ -1,12 +1,12 @@ #!/usr/bin/env python import click -from pyecsca.ec.mod.gmp import has_gmp +from pyecsca.ec.formula.unroll import unroll_formula from pyecsca.ec.mod.flint import has_flint +from pyecsca.ec.mod.gmp import has_gmp +from pyecsca.ec.params import get_params from pyecsca.misc.cfg import TemporaryConfig from pyecsca.sca.re.zvp import zvp_points, map_to_affine -from pyecsca.ec.formula.unroll import unroll_formula -from pyecsca.ec.params import get_params from test.utils import Profiler diff --git a/test/sca/test_align.py b/test/sca/test_align.py index ad45d86..e354e37 100644 --- a/test/sca/test_align.py +++ b/test/sca/test_align.py @@ -1,6 +1,8 @@ import numpy as np import pytest from importlib_resources import files, as_file + +import test.data.sca from pyecsca.sca import ( align_correlation, align_peaks, @@ -10,7 +12,6 @@ from pyecsca.sca import ( Trace, InspectorTraceSet, ) -import test.data.sca def test_align(): diff --git a/test/sca/test_attacks.py b/test/sca/test_attacks.py index b147dfe..84396ec 100644 --- a/test/sca/test_attacks.py +++ b/test/sca/test_attacks.py @@ -1,11 +1,12 @@ -import pytest import random +import pytest + from pyecsca.ec.mult import LTRMultiplier -from pyecsca.sca.attack.DPA import DPA from pyecsca.sca.attack.CPA import CPA -from pyecsca.sca.target import LeakageTarget +from pyecsca.sca.attack.DPA import DPA from pyecsca.sca.attack.leakage_model import HammingWeight, NormalNoice +from pyecsca.sca.target import LeakageTarget @pytest.fixture() diff --git a/test/sca/test_combine.py b/test/sca/test_combine.py index 5c4285b..7c5e316 100644 --- a/test/sca/test_combine.py +++ b/test/sca/test_combine.py @@ -1,4 +1,5 @@ from collections import namedtuple + import numpy as np import pytest diff --git a/test/sca/test_leakage_models.py b/test/sca/test_leakage_models.py index 08a3b07..b40da32 100644 --- a/test/sca/test_leakage_models.py +++ b/test/sca/test_leakage_models.py @@ -1,10 +1,11 @@ +import pytest + from pyecsca.ec.context import local, DefaultContext from pyecsca.ec.formula import FormulaAction, OpResult -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod from pyecsca.ec.mult import LTRMultiplier from pyecsca.ec.op import OpType from pyecsca.sca.attack.leakage_model import Identity, Bit, Slice, HammingWeight, HammingDistance, BitLength -import pytest def test_identity(): diff --git a/test/sca/test_plot.py b/test/sca/test_plot.py index 78e1098..6ec201c 100644 --- a/test/sca/test_plot.py +++ b/test/sca/test_plot.py @@ -1,6 +1,6 @@ -import numpy as np import holoviews as hv import matplotlib as mpl +import numpy as np import pytest from pyecsca.sca.trace import Trace diff --git a/test/sca/test_rpa.py b/test/sca/test_rpa.py index 8d843a4..7027a7d 100644 --- a/test/sca/test_rpa.py +++ b/test/sca/test_rpa.py @@ -1,12 +1,12 @@ from functools import partial +from math import isqrt import pytest -from math import isqrt from pyecsca.ec.context import local -from pyecsca.ec.model import ShortWeierstrassModel from pyecsca.ec.curve import EllipticCurve -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.mod import mod +from pyecsca.ec.model import ShortWeierstrassModel from pyecsca.ec.mult import ( LTRMultiplier, RTLMultiplier, diff --git a/test/sca/test_sampling.py b/test/sca/test_sampling.py index 062e726..f7791e0 100644 --- a/test/sca/test_sampling.py +++ b/test/sca/test_sampling.py @@ -1,4 +1,5 @@ import numpy as np + from pyecsca.sca import ( Trace, downsample_average, diff --git a/test/sca/test_stacked_combine.py b/test/sca/test_stacked_combine.py index 5ef355c..9e35967 100644 --- a/test/sca/test_stacked_combine.py +++ b/test/sca/test_stacked_combine.py @@ -1,7 +1,7 @@ +import numpy as np import pytest from numba import cuda -import numpy as np from pyecsca.sca import StackedTraces, GPUTraceManager, CombinedTrace, CPUTraceManager TPB = 128 diff --git a/test/sca/test_stacked_traces.py b/test/sca/test_stacked_traces.py index c0984cb..d7dcb4a 100644 --- a/test/sca/test_stacked_traces.py +++ b/test/sca/test_stacked_traces.py @@ -1,12 +1,12 @@ -import pytest import numpy as np +import pytest + from pyecsca.sca import ( Trace, StackedTraces, TraceSet, ) - TRACE_COUNT = 2 ** 10 TRACE_LEN = 2 ** 15 diff --git a/test/sca/test_target.py b/test/sca/test_target.py index a5a58e4..8ead8e7 100644 --- a/test/sca/test_target.py +++ b/test/sca/test_target.py @@ -13,6 +13,7 @@ from pyecsca.ec.mod import Mod from pyecsca.ec.mult import LTRMultiplier from pyecsca.ec.params import get_params from pyecsca.ec.signature import SignatureResult, ECDSA_SHA1 +from pyecsca.sca.attack import HammingWeight from pyecsca.sca.target import ( BinaryTarget, SimpleSerialTarget, @@ -20,7 +21,6 @@ from pyecsca.sca.target import ( has_pyscard, LeakageTarget, ) -from pyecsca.sca.attack import HammingWeight from pyecsca.sca.target.ectester import ( KeyAgreementEnum, SignatureEnum, diff --git a/test/sca/test_test.py b/test/sca/test_test.py index 6925eb0..7e239ac 100644 --- a/test/sca/test_test.py +++ b/test/sca/test_test.py @@ -1,4 +1,5 @@ from collections import namedtuple + import numpy as np import pytest diff --git a/test/sca/test_trace.py b/test/sca/test_trace.py index bea68f2..203c87f 100644 --- a/test/sca/test_trace.py +++ b/test/sca/test_trace.py @@ -1,4 +1,5 @@ import numpy as np + from pyecsca.sca import Trace diff --git a/test/sca/test_traceset.py b/test/sca/test_traceset.py index 5a3ed52..60e74be 100644 --- a/test/sca/test_traceset.py +++ b/test/sca/test_traceset.py @@ -2,11 +2,10 @@ import os.path import shutil import tempfile +import numpy as np import pytest from importlib_resources import files, as_file -import numpy as np - import test.data.sca from pyecsca.sca import ( TraceSet, diff --git a/test/sca/test_tree.py b/test/sca/test_tree.py index f3e87cd..58537f5 100644 --- a/test/sca/test_tree.py +++ b/test/sca/test_tree.py @@ -2,9 +2,10 @@ import random from collections import OrderedDict from copy import deepcopy -from pyecsca.sca.re.tree import Tree, Map import pandas as pd +from pyecsca.sca.re.tree import Tree, Map + def test_map(): cfgs = {"a", "b"} diff --git a/test/sca/test_zvp.py b/test/sca/test_zvp.py index f266e55..6a5f2e9 100644 --- a/test/sca/test_zvp.py +++ b/test/sca/test_zvp.py @@ -1,7 +1,10 @@ import pytest +from sympy import symbols, Poly, sympify, FF +from pyecsca.ec.context import local, DefaultContext from pyecsca.ec.coordinates import AffineCoordinateModel -from pyecsca.ec.mod import Mod, mod +from pyecsca.ec.formula.unroll import unroll_formula +from pyecsca.ec.mod import mod from pyecsca.ec.mult import LTRMultiplier, AccumulationOrder from pyecsca.ec.point import Point from pyecsca.sca.re.zvp import ( @@ -17,9 +20,6 @@ from pyecsca.sca.re.zvp import ( solve_easy_dcp, solve_hard_dcp, ) -from pyecsca.ec.formula.unroll import unroll_formula -from pyecsca.ec.context import local, DefaultContext -from sympy import symbols, Poly, sympify, FF @pytest.fixture(params=["add-2007-bl", "add-2015-rcb", "dbl-2007-bl"]) |
