diff options
| author | J08nY | 2023-07-24 14:56:22 +0200 |
|---|---|---|
| committer | J08nY | 2023-07-24 14:56:22 +0200 |
| commit | 0a5c97ddd4517a5539cc3a1bb13861ddca04534c (patch) | |
| tree | 18b231b49ec6827eba8ca8faaeb4c6103b527e86 | |
| parent | d33217bb19ab8a71ab8c3ee8289a4b7ca7ea7613 (diff) | |
| download | pyecsca-0a5c97ddd4517a5539cc3a1bb13861ddca04534c.tar.gz pyecsca-0a5c97ddd4517a5539cc3a1bb13861ddca04534c.tar.zst pyecsca-0a5c97ddd4517a5539cc3a1bb13861ddca04534c.zip | |
Fix bit_count for Python <= 3.9.
| -rw-r--r-- | pyecsca/sca/attack/leakage_model.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/pyecsca/sca/attack/leakage_model.py b/pyecsca/sca/attack/leakage_model.py index 84d927e..e589940 100644 --- a/pyecsca/sca/attack/leakage_model.py +++ b/pyecsca/sca/attack/leakage_model.py @@ -1,9 +1,17 @@ import abc +import sys from typing import Literal, ClassVar from numpy.random import default_rng from public import public +if sys.version_info[0] < 3 or sys.version_info[0] == 3 and sys.version_info[1] < 10: + def hw(i): + return bin(i).count("1") +else: + def hw(i): + return i.bit_count() + @public class NormalNoice: @@ -73,7 +81,7 @@ class HammingWeight(LeakageModel): num_args = 1 def __call__(self, *args, **kwargs) -> int: - return int(args[0]).bit_count() + return hw(int(args[0])) @public @@ -81,7 +89,7 @@ class HammingDistance(LeakageModel): num_args = 2 def __call__(self, *args, **kwargs) -> int: - return (int(args[0]) ^ int(args[1])).bit_count() + return hw(int(args[0]) ^ int(args[1])) @public |
