aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/trace.py
diff options
context:
space:
mode:
authorJ08nY2018-11-20 00:36:46 +0100
committerJ08nY2019-03-14 18:03:54 +0100
commite0a6e7c452cd55365096bc3e4b8f36f5f9660ae7 (patch)
treebf1c80e015cdfd47d864665946f44a072f7b38db /pyecsca/trace.py
downloadpyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.gz
pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.zst
pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.zip
Diffstat (limited to 'pyecsca/trace.py')
-rw-r--r--pyecsca/trace.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/pyecsca/trace.py b/pyecsca/trace.py
new file mode 100644
index 0000000..56e39d3
--- /dev/null
+++ b/pyecsca/trace.py
@@ -0,0 +1,45 @@
+import weakref
+from numpy import ndarray
+from typing import Optional
+
+
+class Trace(object):
+
+ def __init__(self, title: Optional[str], data: Optional[bytes],
+ samples: ndarray, trace_set=None):
+ self.title = title
+ self.data = data
+ self.samples = samples
+ self.trace_set = trace_set
+
+ @property
+ def trace_set(self):
+ if self._trace_set is None:
+ return None
+ return self._trace_set()
+
+ @trace_set.setter
+ def trace_set(self, trace_set):
+ if trace_set is None:
+ self._trace_set = None
+ else:
+ self._trace_set = weakref.ref(trace_set)
+
+ def __repr__(self):
+ return "Trace(title={!r}, data={!r}, samples={!r}, trace_set={!r})".format(
+ self.title, self.data, self.samples, self.trace_set)
+
+
+class CombinedTrace(Trace):
+
+ def __init__(self, title: Optional[str], data: Optional[bytes],
+ samples: ndarray, trace_set=None, parents=None):
+ super().__init__(title, data, samples, trace_set=trace_set)
+ self.parents = None
+ if parents is not None:
+ self.parents = weakref.WeakSet(parents)
+
+ def __repr__(self):
+ return "CombinedTrace(title={!r}, data={!r}, samples={!r}, trace_set={!r}, parents={})".format(
+ self.title, self.data, self.samples, self.trace_set,
+ self.parents)