aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sca
diff options
context:
space:
mode:
authorJ08nY2024-01-26 18:45:22 +0100
committerJ08nY2024-01-26 18:45:22 +0100
commitd3230129f0720e756b113f80ed77f652ad32b44e (patch)
tree55527825a2376be1e7361ea3f56542a3b352f843 /test/sca
parent4be1fda99b983ca0ee22fe47f8ccc311c86d7cfc (diff)
downloadpyecsca-d3230129f0720e756b113f80ed77f652ad32b44e.tar.gz
pyecsca-d3230129f0720e756b113f80ed77f652ad32b44e.tar.zst
pyecsca-d3230129f0720e756b113f80ed77f652ad32b44e.zip
Add tests for leakagetarget.
Diffstat (limited to 'test/sca')
-rw-r--r--test/sca/test_target.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/sca/test_target.py b/test/sca/test_target.py
index ac0c8c8..6b8a8c7 100644
--- a/test/sca/test_target.py
+++ b/test/sca/test_target.py
@@ -1,3 +1,4 @@
+import hashlib
import io
from contextlib import redirect_stdout
from copy import copy
@@ -17,7 +18,9 @@ from pyecsca.sca.target import (
SimpleSerialTarget,
SimpleSerialMessage,
has_pyscard,
+ LeakageTarget,
)
+from pyecsca.sca.attack import HammingWeight
from pyecsca.sca.target.ectester import (
KeyAgreementEnum,
SignatureEnum,
@@ -505,3 +508,29 @@ def test_ecdsa_verify(target, secp256r1_projective):
KeypairEnum.KEYPAIR_LOCAL, SignatureEnum.ALG_ECDSA_SHA, sig.to_DER(), data
)
assert ecdsa_resp.success
+
+
+def test_leakage_target(secp256r1_projective):
+ mult = LTRMultiplier(
+ secp256r1_projective.curve.coordinate_model.formulas["add-2015-rcb"],
+ secp256r1_projective.curve.coordinate_model.formulas["dbl-2015-rcb"],
+ )
+ lm = HammingWeight()
+ target = LeakageTarget(secp256r1_projective.curve.model, secp256r1_projective.curve.coordinate_model, mult, lm)
+ target.set_params(secp256r1_projective)
+ (priv, pub), trace = target.generate()
+ assert trace is not None
+ (other_priv, other_pub), trace = target.generate()
+ target.set_privkey(priv)
+ target.set_pubkey(pub)
+ secret, trace = target.ecdh(other_pub)
+ target.set_privkey(other_priv)
+ target.set_pubkey(other_pub)
+ secret2, trace = target.ecdh(pub)
+ assert secret == secret2
+ res, trace = target.scalar_mult(7, secp256r1_projective.generator)
+ assert res is not None
+
+ msg = b"data"
+ signature, trace = target.ecdsa_sign(msg, hashlib.sha1)
+ assert target.ecdsa_verify(msg, signature, hashlib.sha1)