Loading scared/__init__.py +1 −2 Original line number Diff line number Diff line Loading @@ -21,11 +21,10 @@ from .analysis import ( # noqa:F401 BaseAttack, CPAAttack, DPAAttack, ANOVAAttack, NICVAttack, SNRAttack, BasePartitionedAttack, MIAAttack, _Attack, BaseReverse, CPAReverse, DPAReverse, ANOVAReverse, NICVReverse, SNRReverse, BasePartitionedReverse, MIAReverse, _Reverse, TemplateAttack, TemplateDPAAttack TemplateAttack, TemplateDPAAttack ) from .preprocesses import preprocess, Preprocess, PreprocessError # noqa:F401 from . import preprocesses # noqa: F401 Loading scared/analysis/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -8,4 +8,4 @@ from ._analysis import ( # noqa: F401 MIAAttack, MIAReverse ) from .template import TemplateAttack, TemplateDPAAttack, BaseTemplateAttack # noqa: F401 from .base import BaseAttack, BasePartitionedAttack, BasePartitionedReverse, BaseReverse, _Attack, _Reverse # noqa: F401 from .base import BaseAttack, BasePartitionedAttack, BasePartitionedReverse, BaseReverse # noqa: F401 scared/analysis/base.py +0 −34 Original line number Diff line number Diff line Loading @@ -250,40 +250,6 @@ class BaseReverse(_BaseAnalysis): pass class _MetaAnalysis: def __new__(cls, distinguisher, *args, **kwargs): klass = type.__new__(type, f'{distinguisher.__class__.__name__}Analysis', (cls._base_klass, type(distinguisher).__bases__[1]), {}) obj = klass(*args, **kwargs) init_args = inspect.getfullargspec(type(distinguisher)).args values = inspect.getmembers(distinguisher) for arg in init_args[1:]: val = list(filter(lambda t: t[0] == arg, values))[0] if val: setattr(obj, arg, val[1]) return obj class _Attack(_MetaAnalysis): """Returns an analysis object created from a standalone distinguisher. It has been implemented for backward compatibility with previous eshard libraries and is not intented as a public API. """ _base_klass = BaseAttack class _Reverse(_MetaAnalysis): """Returns an analysis object created from a standalone distinguisher. It has been implemented for backward compatibility with previous eshard libraries and is not intented as a public API. """ _base_klass = BaseReverse class BasePartitionedReverse(BaseReverse): def __init__(self, partitions=None, *args, **kwargs): distinguishers.partitioned._set_partitions(self, partitions) Loading tests/test_attacks_analysis.py +0 −23 Original line number Diff line number Diff line Loading @@ -518,26 +518,3 @@ def test_mia_bin_edges_init(sf): a = scared.MIAAttack(bin_edges=np.arange(258), selection_function=sf, model=scared.HammingWeight(), discriminant=scared.abssum) assert np.array_equal(a.bin_edges, np.arange(258)) assert isinstance(str(a), str) def test_analysis_created_with_standalone_distinguisher(sf, container): d = scared.CPADistinguisher() analysis = scared._Attack(distinguisher=d, selection_function=sf, discriminant=scared.maxabs, model=scared.Monobit(4), convergence_step=150) analysis.run(container) assert (256, 16, 2) == analysis.convergence_traces.shape assert (256, 16) == analysis.results.shape[0:2] assert (256, 16) == analysis.scores.shape assert np.array_equal(analysis.scores, analysis.convergence_traces[:, :, -1]) assert isinstance(str(d), str) d = scared.ANOVADistinguisher(precision='float64', partitions=np.arange(2)) analysis = scared._Attack(distinguisher=d, selection_function=sf, discriminant=scared.maxabs, model=scared.Monobit(4), convergence_step=150) analysis.run(container) assert analysis.precision == 'float64' assert np.array_equal(analysis.partitions, np.arange(2)) assert (256, 16, 2) == analysis.convergence_traces.shape assert (256, 16) == analysis.results.shape[0:2] assert (256, 16) == analysis.scores.shape assert np.array_equal(analysis.scores, analysis.convergence_traces[:, :, -1]) assert isinstance(str(d), str) tests/test_reverses_analysis.py +0 −17 Original line number Diff line number Diff line Loading @@ -260,20 +260,3 @@ def test_mia_bin_edges_init(sf): a = scared.MIAReverse(bin_edges=np.arange(258), selection_function=sf, model=scared.HammingWeight()) assert np.array_equal(a.bin_edges, np.arange(258)) assert isinstance(str(a), str) def test_analysis_created_with_standalone_distinguisher(sf, container): d = scared.CPADistinguisher() analysis = scared._Reverse(distinguisher=d, selection_function=sf, model=scared.Monobit(4)) analysis.run(container) assert (16,) == analysis.results.shape[0:1] assert isinstance(str(d), str) d = scared.ANOVADistinguisher(precision='float64', partitions=np.arange(2)) analysis = scared._Reverse(distinguisher=d, selection_function=sf, model=scared.Monobit(4)) analysis.run(container) assert analysis.precision == 'float64' assert np.array_equal(analysis.partitions, np.arange(2)) assert (16,) == analysis.results.shape[0:1] assert isinstance(str(d), str) Loading
scared/__init__.py +1 −2 Original line number Diff line number Diff line Loading @@ -21,11 +21,10 @@ from .analysis import ( # noqa:F401 BaseAttack, CPAAttack, DPAAttack, ANOVAAttack, NICVAttack, SNRAttack, BasePartitionedAttack, MIAAttack, _Attack, BaseReverse, CPAReverse, DPAReverse, ANOVAReverse, NICVReverse, SNRReverse, BasePartitionedReverse, MIAReverse, _Reverse, TemplateAttack, TemplateDPAAttack TemplateAttack, TemplateDPAAttack ) from .preprocesses import preprocess, Preprocess, PreprocessError # noqa:F401 from . import preprocesses # noqa: F401 Loading
scared/analysis/__init__.py +1 −1 Original line number Diff line number Diff line Loading @@ -8,4 +8,4 @@ from ._analysis import ( # noqa: F401 MIAAttack, MIAReverse ) from .template import TemplateAttack, TemplateDPAAttack, BaseTemplateAttack # noqa: F401 from .base import BaseAttack, BasePartitionedAttack, BasePartitionedReverse, BaseReverse, _Attack, _Reverse # noqa: F401 from .base import BaseAttack, BasePartitionedAttack, BasePartitionedReverse, BaseReverse # noqa: F401
scared/analysis/base.py +0 −34 Original line number Diff line number Diff line Loading @@ -250,40 +250,6 @@ class BaseReverse(_BaseAnalysis): pass class _MetaAnalysis: def __new__(cls, distinguisher, *args, **kwargs): klass = type.__new__(type, f'{distinguisher.__class__.__name__}Analysis', (cls._base_klass, type(distinguisher).__bases__[1]), {}) obj = klass(*args, **kwargs) init_args = inspect.getfullargspec(type(distinguisher)).args values = inspect.getmembers(distinguisher) for arg in init_args[1:]: val = list(filter(lambda t: t[0] == arg, values))[0] if val: setattr(obj, arg, val[1]) return obj class _Attack(_MetaAnalysis): """Returns an analysis object created from a standalone distinguisher. It has been implemented for backward compatibility with previous eshard libraries and is not intented as a public API. """ _base_klass = BaseAttack class _Reverse(_MetaAnalysis): """Returns an analysis object created from a standalone distinguisher. It has been implemented for backward compatibility with previous eshard libraries and is not intented as a public API. """ _base_klass = BaseReverse class BasePartitionedReverse(BaseReverse): def __init__(self, partitions=None, *args, **kwargs): distinguishers.partitioned._set_partitions(self, partitions) Loading
tests/test_attacks_analysis.py +0 −23 Original line number Diff line number Diff line Loading @@ -518,26 +518,3 @@ def test_mia_bin_edges_init(sf): a = scared.MIAAttack(bin_edges=np.arange(258), selection_function=sf, model=scared.HammingWeight(), discriminant=scared.abssum) assert np.array_equal(a.bin_edges, np.arange(258)) assert isinstance(str(a), str) def test_analysis_created_with_standalone_distinguisher(sf, container): d = scared.CPADistinguisher() analysis = scared._Attack(distinguisher=d, selection_function=sf, discriminant=scared.maxabs, model=scared.Monobit(4), convergence_step=150) analysis.run(container) assert (256, 16, 2) == analysis.convergence_traces.shape assert (256, 16) == analysis.results.shape[0:2] assert (256, 16) == analysis.scores.shape assert np.array_equal(analysis.scores, analysis.convergence_traces[:, :, -1]) assert isinstance(str(d), str) d = scared.ANOVADistinguisher(precision='float64', partitions=np.arange(2)) analysis = scared._Attack(distinguisher=d, selection_function=sf, discriminant=scared.maxabs, model=scared.Monobit(4), convergence_step=150) analysis.run(container) assert analysis.precision == 'float64' assert np.array_equal(analysis.partitions, np.arange(2)) assert (256, 16, 2) == analysis.convergence_traces.shape assert (256, 16) == analysis.results.shape[0:2] assert (256, 16) == analysis.scores.shape assert np.array_equal(analysis.scores, analysis.convergence_traces[:, :, -1]) assert isinstance(str(d), str)
tests/test_reverses_analysis.py +0 −17 Original line number Diff line number Diff line Loading @@ -260,20 +260,3 @@ def test_mia_bin_edges_init(sf): a = scared.MIAReverse(bin_edges=np.arange(258), selection_function=sf, model=scared.HammingWeight()) assert np.array_equal(a.bin_edges, np.arange(258)) assert isinstance(str(a), str) def test_analysis_created_with_standalone_distinguisher(sf, container): d = scared.CPADistinguisher() analysis = scared._Reverse(distinguisher=d, selection_function=sf, model=scared.Monobit(4)) analysis.run(container) assert (16,) == analysis.results.shape[0:1] assert isinstance(str(d), str) d = scared.ANOVADistinguisher(precision='float64', partitions=np.arange(2)) analysis = scared._Reverse(distinguisher=d, selection_function=sf, model=scared.Monobit(4)) analysis.run(container) assert analysis.precision == 'float64' assert np.array_equal(analysis.partitions, np.arange(2)) assert (16,) == analysis.results.shape[0:1] assert isinstance(str(d), str)