aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2023-08-29 23:28:30 +0200
committerJ08nY2023-08-29 23:28:30 +0200
commita62beef76338fa2507f716bca03415933c2e48b5 (patch)
tree9042284b904772ccb49366482f9a5984bec79167
parent7809d55dac443b09655866dd484f2e0c93ae8e9f (diff)
downloadpyecsca-a62beef76338fa2507f716bca03415933c2e48b5.tar.gz
pyecsca-a62beef76338fa2507f716bca03415933c2e48b5.tar.zst
pyecsca-a62beef76338fa2507f716bca03415933c2e48b5.zip
More docs.
-rw-r--r--pyecsca/sca/attack/__init__.py2
-rw-r--r--pyecsca/sca/attack/leakage_model.py11
-rw-r--r--pyecsca/sca/re/zvp.py2
3 files changed, 15 insertions, 0 deletions
diff --git a/pyecsca/sca/attack/__init__.py b/pyecsca/sca/attack/__init__.py
index 23e27cb..0748486 100644
--- a/pyecsca/sca/attack/__init__.py
+++ b/pyecsca/sca/attack/__init__.py
@@ -1 +1,3 @@
+"""Package for attacks."""
+
from .leakage_model import *
diff --git a/pyecsca/sca/attack/leakage_model.py b/pyecsca/sca/attack/leakage_model.py
index f9adcff..87f32f0 100644
--- a/pyecsca/sca/attack/leakage_model.py
+++ b/pyecsca/sca/attack/leakage_model.py
@@ -1,3 +1,6 @@
+"""
+Provides leakage models to simulate leakage.
+"""
import abc
import sys
from typing import Literal, ClassVar
@@ -46,15 +49,18 @@ class NormalNoice(Noise):
@public
class LeakageModel(abc.ABC):
+ """An abstract leakage model."""
num_args: ClassVar[int]
@abc.abstractmethod
def __call__(self, *args, **kwargs) -> int:
+ """Get the leakage from the arg(s)."""
raise NotImplementedError
@public
class Identity(LeakageModel):
+ """Identity leakage model, leaks the thing itself."""
num_args = 1
def __call__(self, *args, **kwargs) -> int:
@@ -63,6 +69,7 @@ class Identity(LeakageModel):
@public
class Bit(LeakageModel):
+ """Bit leakage model, leaks a selected bit."""
num_args = 1
def __init__(self, which: int):
@@ -77,6 +84,7 @@ class Bit(LeakageModel):
@public
class Slice(LeakageModel):
+ """Slice leakage model, leaks a slice of bits."""
num_args = 1
def __init__(self, begin: int, end: int):
@@ -94,6 +102,7 @@ class Slice(LeakageModel):
@public
class HammingWeight(LeakageModel):
+ """Hamming-weight leakage model, leaks the Hamming-weight of the thing."""
num_args = 1
def __call__(self, *args, **kwargs) -> int:
@@ -102,6 +111,7 @@ class HammingWeight(LeakageModel):
@public
class HammingDistance(LeakageModel):
+ """Hamming-distance leakage model, leaks the Hamming-distance between the two things."""
num_args = 2
def __call__(self, *args, **kwargs) -> int:
@@ -110,6 +120,7 @@ class HammingDistance(LeakageModel):
@public
class BitLength(LeakageModel):
+ """Bit-length leakage model, leaks the bit-length of the thing."""
num_args = 1
def __call__(self, *args, **kwargs) -> int:
diff --git a/pyecsca/sca/re/zvp.py b/pyecsca/sca/re/zvp.py
index b6e5fd0..9a9902f 100644
--- a/pyecsca/sca/re/zvp.py
+++ b/pyecsca/sca/re/zvp.py
@@ -3,6 +3,8 @@ Provides functionality inspired by the Zero-value point attack.
Zero-Value Point Attacks on Elliptic Curve Cryptosystem, Toru Akishita & Tsuyoshi Takagi , ISC '03
`<https://doi.org/10.1007/10958513_17>`_
+
+Implements ZVP point construction from [FFD]_.
"""
from typing import List, Set
from public import public