aboutsummaryrefslogtreecommitdiff
path: root/test/sca/test_target.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/sca/test_target.py')
-rw-r--r--test/sca/test_target.py425
1 files changed, 298 insertions, 127 deletions
diff --git a/test/sca/test_target.py b/test/sca/test_target.py
index a0f4fec..4168152 100644
--- a/test/sca/test_target.py
+++ b/test/sca/test_target.py
@@ -12,10 +12,24 @@ from pyecsca.ec.mult import LTRMultiplier
from pyecsca.ec.params import DomainParameters, get_params
from pyecsca.ec.point import Point
from pyecsca.ec.signature import SignatureResult, ECDSA_SHA1
-from pyecsca.sca.target import BinaryTarget, SimpleSerialTarget, SimpleSerialMessage, has_pyscard
-from pyecsca.sca.target.ectester import (KeyAgreementEnum, SignatureEnum, KeypairEnum, KeyBuildEnum,
- KeyClassEnum, CurveEnum, ParameterEnum, RunModeEnum,
- KeyEnum, TransformationEnum)
+from pyecsca.sca.target import (
+ BinaryTarget,
+ SimpleSerialTarget,
+ SimpleSerialMessage,
+ has_pyscard,
+)
+from pyecsca.sca.target.ectester import (
+ KeyAgreementEnum,
+ SignatureEnum,
+ KeypairEnum,
+ KeyBuildEnum,
+ KeyClassEnum,
+ CurveEnum,
+ ParameterEnum,
+ RunModeEnum,
+ KeyEnum,
+ TransformationEnum,
+)
if has_pyscard:
from pyecsca.sca.target.ectester import ECTesterTarget
@@ -28,7 +42,6 @@ class TestTarget(SimpleSerialTarget, BinaryTarget):
class BinaryTargetTests(TestCase):
-
def test_basic_target(self):
target_path = join(dirname(realpath(__file__)), "..", "data", "target.py")
target = TestTarget(["python", target_path])
@@ -67,6 +80,7 @@ class ECTesterTargetTests(TestCase):
if not has_pyscard:
return
from smartcard.System import readers
+
try:
rs = readers()
except BaseSCardException:
@@ -95,35 +109,64 @@ class ECTesterTargetTests(TestCase):
self.assertTrue(ka_resp.success)
sig_resp = self.target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)
self.assertTrue(sig_resp.success)
- key_resp = self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
+ key_resp = self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
self.assertTrue(key_resp.success)
def test_set(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- set_resp = self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1,
- ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ set_resp = self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.assertTrue(set_resp.success)
def test_set_explicit(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- values = ECTesterTarget.encode_parameters(ParameterEnum.DOMAIN_FP, self.secp256r1)
- set_resp = self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.external,
- ParameterEnum.DOMAIN_FP, values)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ values = ECTesterTarget.encode_parameters(
+ ParameterEnum.DOMAIN_FP, self.secp256r1
+ )
+ set_resp = self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL,
+ CurveEnum.external,
+ ParameterEnum.DOMAIN_FP,
+ values,
+ )
self.assertTrue(set_resp.success)
def test_generate(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
generate_resp = self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
self.assertTrue(generate_resp.success)
def test_clear(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
clear_resp = self.target.clear(KeypairEnum.KEYPAIR_LOCAL)
self.assertTrue(clear_resp.success)
@@ -138,184 +181,312 @@ class ECTesterTargetTests(TestCase):
def test_dry_run(self):
dry_run_resp = self.target.run_mode(RunModeEnum.MODE_DRY_RUN)
self.assertTrue(dry_run_resp.success)
- allocate_resp = self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR,
- 256,
- KeyClassEnum.ALG_EC_FP)
+ allocate_resp = self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
self.assertTrue(allocate_resp.success)
dry_run_resp = self.target.run_mode(RunModeEnum.MODE_NORMAL)
self.assertTrue(dry_run_resp.success)
def test_export(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
- export_public_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC,
- ParameterEnum.W)
+ export_public_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC, ParameterEnum.W
+ )
self.assertTrue(export_public_resp.success)
- pubkey_bytes = export_public_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W)
+ pubkey_bytes = export_public_resp.get_param(
+ KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W
+ )
pubkey = self.secp256r1.curve.decode_point(pubkey_bytes)
- export_privkey_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE,
- ParameterEnum.S)
+ export_privkey_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE, ParameterEnum.S
+ )
self.assertTrue(export_privkey_resp.success)
privkey = int.from_bytes(
- export_privkey_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S), "big")
- self.assertEqual(pubkey,
- self.secp256r1.curve.affine_multiply(self.secp256r1.generator, privkey))
+ export_privkey_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S),
+ "big",
+ )
+ self.assertEqual(
+ pubkey,
+ self.secp256r1.curve.affine_multiply(self.secp256r1.generator, privkey),
+ )
def test_export_curve(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
- export_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC,
- ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
+ export_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC, ParameterEnum.DOMAIN_FP
+ )
self.assertTrue(export_resp.success)
def test_transform(self):
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
- export_privkey_resp1 = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE,
- ParameterEnum.S)
+ export_privkey_resp1 = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE, ParameterEnum.S
+ )
privkey = int.from_bytes(
- export_privkey_resp1.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S), "big")
- transform_resp = self.target.transform(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE,
- ParameterEnum.S, TransformationEnum.INCREMENT)
+ export_privkey_resp1.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S),
+ "big",
+ )
+ transform_resp = self.target.transform(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyEnum.PRIVATE,
+ ParameterEnum.S,
+ TransformationEnum.INCREMENT,
+ )
self.assertTrue(transform_resp.success)
- export_privkey_resp2 = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE,
- ParameterEnum.S)
+ export_privkey_resp2 = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE, ParameterEnum.S
+ )
privkey_new = int.from_bytes(
- export_privkey_resp2.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S), "big")
+ export_privkey_resp2.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S),
+ "big",
+ )
self.assertEqual(privkey + 1, privkey_new)
def test_ecdh(self):
self.target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH)
- self.target.allocate(KeypairEnum.KEYPAIR_BOTH, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_BOTH, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_BOTH,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_BOTH, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_BOTH)
- ecdh_resp = self.target.ecdh(KeypairEnum.KEYPAIR_LOCAL, KeypairEnum.KEYPAIR_REMOTE, True,
- TransformationEnum.NONE, KeyAgreementEnum.ALG_EC_SVDP_DH)
+ ecdh_resp = self.target.ecdh(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeypairEnum.KEYPAIR_REMOTE,
+ True,
+ TransformationEnum.NONE,
+ KeyAgreementEnum.ALG_EC_SVDP_DH,
+ )
self.assertTrue(ecdh_resp.success)
- export_public_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC,
- ParameterEnum.W)
- pubkey_bytes = export_public_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W)
+ export_public_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC, ParameterEnum.W
+ )
+ pubkey_bytes = export_public_resp.get_param(
+ KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W
+ )
pubkey = self.secp256r1.curve.decode_point(pubkey_bytes)
- export_privkey_resp = self.target.export(KeypairEnum.KEYPAIR_REMOTE, KeyEnum.PRIVATE,
- ParameterEnum.S)
- privkey = Mod(int.from_bytes(
- export_privkey_resp.get_param(KeypairEnum.KEYPAIR_REMOTE, ParameterEnum.S), "big"),
- self.secp256r1.curve.prime)
- pubkey_projective = pubkey.to_model(self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve)
+ export_privkey_resp = self.target.export(
+ KeypairEnum.KEYPAIR_REMOTE, KeyEnum.PRIVATE, ParameterEnum.S
+ )
+ privkey = Mod(
+ int.from_bytes(
+ export_privkey_resp.get_param(
+ KeypairEnum.KEYPAIR_REMOTE, ParameterEnum.S
+ ),
+ "big",
+ ),
+ self.secp256r1.curve.prime,
+ )
+ pubkey_projective = pubkey.to_model(
+ self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve
+ )
mult = LTRMultiplier(
- self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
- self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"])
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"],
+ )
ecdh = ECDH_SHA1(mult, self.secp256r1_projective, pubkey_projective, privkey)
expected = ecdh.perform()
self.assertEqual(ecdh_resp.secret, expected)
def test_ecdh_raw(self):
self.target.allocate_ka(KeyAgreementEnum.ALG_EC_SVDP_DH)
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
mult = LTRMultiplier(
- self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
- self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"])
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"],
+ )
keygen = KeyGeneration(copy(mult), self.secp256r1_projective)
priv, pubkey_projective = keygen.generate()
- ecdh_resp = self.target.ecdh_direct(KeypairEnum.KEYPAIR_LOCAL, True,
- TransformationEnum.NONE,
- KeyAgreementEnum.ALG_EC_SVDP_DH,
- bytes(pubkey_projective.to_affine()))
+ ecdh_resp = self.target.ecdh_direct(
+ KeypairEnum.KEYPAIR_LOCAL,
+ True,
+ TransformationEnum.NONE,
+ KeyAgreementEnum.ALG_EC_SVDP_DH,
+ bytes(pubkey_projective.to_affine()),
+ )
self.assertTrue(ecdh_resp.success)
- export_privkey_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE,
- ParameterEnum.S)
- privkey = Mod(int.from_bytes(
- export_privkey_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S), "big"),
- self.secp256r1.curve.prime)
+ export_privkey_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PRIVATE, ParameterEnum.S
+ )
+ privkey = Mod(
+ int.from_bytes(
+ export_privkey_resp.get_param(
+ KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.S
+ ),
+ "big",
+ ),
+ self.secp256r1.curve.prime,
+ )
- ecdh = ECDH_SHA1(copy(mult), self.secp256r1_projective, pubkey_projective, privkey)
+ ecdh = ECDH_SHA1(
+ copy(mult), self.secp256r1_projective, pubkey_projective, privkey
+ )
expected = ecdh.perform()
self.assertEqual(ecdh_resp.secret, expected)
def test_ecdsa(self):
self.target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
data = "Some text over here.".encode()
- ecdsa_resp = self.target.ecdsa(KeypairEnum.KEYPAIR_LOCAL, True, SignatureEnum.ALG_ECDSA_SHA,
- data)
+ ecdsa_resp = self.target.ecdsa(
+ KeypairEnum.KEYPAIR_LOCAL, True, SignatureEnum.ALG_ECDSA_SHA, data
+ )
self.assertTrue(ecdsa_resp.success)
- export_public_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC,
- ParameterEnum.W)
- pubkey_bytes = export_public_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W)
+ export_public_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC, ParameterEnum.W
+ )
+ pubkey_bytes = export_public_resp.get_param(
+ KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W
+ )
pubkey = self.secp256r1.curve.decode_point(pubkey_bytes)
- pubkey_projective = pubkey.to_model(self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve)
+ pubkey_projective = pubkey.to_model(
+ self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve
+ )
sig = SignatureResult.from_DER(ecdsa_resp.signature)
mult = LTRMultiplier(
- self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
- self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"])
- ecdsa = ECDSA_SHA1(copy(mult), self.secp256r1_projective,
- self.secp256r1_projective.curve.coordinate_model.formulas[
- "add-2016-rcb"],
- pubkey_projective)
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"],
+ )
+ ecdsa = ECDSA_SHA1(
+ copy(mult),
+ self.secp256r1_projective,
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ pubkey_projective,
+ )
self.assertTrue(ecdsa.verify_data(sig, data))
def test_ecdsa_sign(self):
self.target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
self.target.generate(KeypairEnum.KEYPAIR_LOCAL)
data = "Some text over here.".encode()
- ecdsa_resp = self.target.ecdsa_sign(KeypairEnum.KEYPAIR_LOCAL, True,
- SignatureEnum.ALG_ECDSA_SHA, data)
+ ecdsa_resp = self.target.ecdsa_sign(
+ KeypairEnum.KEYPAIR_LOCAL, True, SignatureEnum.ALG_ECDSA_SHA, data
+ )
self.assertTrue(ecdsa_resp.success)
- export_public_resp = self.target.export(KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC,
- ParameterEnum.W)
- pubkey_bytes = export_public_resp.get_param(KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W)
+ export_public_resp = self.target.export(
+ KeypairEnum.KEYPAIR_LOCAL, KeyEnum.PUBLIC, ParameterEnum.W
+ )
+ pubkey_bytes = export_public_resp.get_param(
+ KeypairEnum.KEYPAIR_LOCAL, ParameterEnum.W
+ )
pubkey = self.secp256r1.curve.decode_point(pubkey_bytes)
- pubkey_projective = pubkey.to_model(self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve)
+ pubkey_projective = pubkey.to_model(
+ self.secp256r1_projective.curve.coordinate_model, self.secp256r1.curve
+ )
sig = SignatureResult.from_DER(ecdsa_resp.signature)
mult = LTRMultiplier(
- self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
- self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"])
- ecdsa = ECDSA_SHA1(copy(mult), self.secp256r1_projective,
- self.secp256r1_projective.curve.coordinate_model.formulas[
- "add-2016-rcb"],
- pubkey_projective)
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"],
+ )
+ ecdsa = ECDSA_SHA1(
+ copy(mult),
+ self.secp256r1_projective,
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ pubkey_projective,
+ )
self.assertTrue(ecdsa.verify_data(sig, data))
def test_ecdsa_verify(self):
self.target.allocate_sig(SignatureEnum.ALG_ECDSA_SHA)
- self.target.allocate(KeypairEnum.KEYPAIR_LOCAL, KeyBuildEnum.BUILD_KEYPAIR, 256,
- KeyClassEnum.ALG_EC_FP)
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP)
+ self.target.allocate(
+ KeypairEnum.KEYPAIR_LOCAL,
+ KeyBuildEnum.BUILD_KEYPAIR,
+ 256,
+ KeyClassEnum.ALG_EC_FP,
+ )
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL, CurveEnum.secp256r1, ParameterEnum.DOMAIN_FP
+ )
mult = LTRMultiplier(
- self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
- self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"])
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ self.secp256r1_projective.curve.coordinate_model.formulas["dbl-2016-rcb"],
+ )
keygen = KeyGeneration(copy(mult), self.secp256r1_projective)
priv, pubkey_projective = keygen.generate()
- self.target.set(KeypairEnum.KEYPAIR_LOCAL, CurveEnum.external, ParameterEnum.W,
- ECTesterTarget.encode_parameters(ParameterEnum.W,
- pubkey_projective.to_affine()))
- ecdsa = ECDSA_SHA1(copy(mult), self.secp256r1_projective,
- self.secp256r1_projective.curve.coordinate_model.formulas[
- "add-2016-rcb"],
- pubkey_projective,
- priv)
+ self.target.set(
+ KeypairEnum.KEYPAIR_LOCAL,
+ CurveEnum.external,
+ ParameterEnum.W,
+ ECTesterTarget.encode_parameters(
+ ParameterEnum.W, pubkey_projective.to_affine()
+ ),
+ )
+ ecdsa = ECDSA_SHA1(
+ copy(mult),
+ self.secp256r1_projective,
+ self.secp256r1_projective.curve.coordinate_model.formulas["add-2016-rcb"],
+ pubkey_projective,
+ priv,
+ )
data = "Some text over here.".encode()
sig = ecdsa.sign_data(data)
- ecdsa_resp = self.target.ecdsa_verify(KeypairEnum.KEYPAIR_LOCAL,
- SignatureEnum.ALG_ECDSA_SHA, sig.to_DER(), data)
+ ecdsa_resp = self.target.ecdsa_verify(
+ KeypairEnum.KEYPAIR_LOCAL, SignatureEnum.ALG_ECDSA_SHA, sig.to_DER(), data
+ )
self.assertTrue(ecdsa_resp.success)