diff options
| author | J08nY | 2024-01-26 18:29:04 +0100 |
|---|---|---|
| committer | J08nY | 2024-01-26 18:29:04 +0100 |
| commit | 4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc (patch) | |
| tree | 3215dbe35af367737b8ff44599f821af3fefd66f /pyecsca/ec/formula/code.py | |
| parent | 63da9293c39817cd7fe746cbd31e42f13f831091 (diff) | |
| download | pyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.tar.gz pyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.tar.zst pyecsca-4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc.zip | |
Move CodeFormulas.
Diffstat (limited to 'pyecsca/ec/formula/code.py')
| -rw-r--r-- | pyecsca/ec/formula/code.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pyecsca/ec/formula/code.py b/pyecsca/ec/formula/code.py new file mode 100644 index 0000000..9d36d94 --- /dev/null +++ b/pyecsca/ec/formula/code.py @@ -0,0 +1,71 @@ +"""Provides a concrete class of a formula that has a constructor.""" + +from .base import ( + Formula, + AdditionFormula, + DoublingFormula, + LadderFormula, + TriplingFormula, + NegationFormula, + ScalingFormula, + DifferentialAdditionFormula, +) + + +class CodeFormula(Formula): + def __init__(self, name, code, coordinate_model, parameters, assumptions): + self.name = name + self.coordinate_model = coordinate_model + self.meta = {} + self.parameters = parameters + self.assumptions = assumptions + self.code = code + self.unified = False + + def __hash__(self): + return hash( + ( + self.name, + self.coordinate_model, + tuple(self.code), + tuple(self.parameters), + tuple(self.assumptions), + ) + ) + + def __eq__(self, other): + if not isinstance(other, CodeFormula): + return False + return ( + self.name == other.name + and self.coordinate_model == other.coordinate_model + and self.code == other.code + ) + + +class CodeAdditionFormula(AdditionFormula, CodeFormula): + pass + + +class CodeDoublingFormula(DoublingFormula, CodeFormula): + pass + + +class CodeLadderFormula(LadderFormula, CodeFormula): + pass + + +class CodeTriplingFormula(TriplingFormula, CodeFormula): + pass + + +class CodeNegationFormula(NegationFormula, CodeFormula): + pass + + +class CodeScalingFormula(ScalingFormula, CodeFormula): + pass + + +class CodeDifferentialAdditionFormula(DifferentialAdditionFormula, CodeFormula): + pass |
