コード例 #1
0
 def test_str(self):
     with local(DefaultContext()) as default:
         self.mult.multiply(59)
     str(default)
     str(default.actions)
     with local(NullContext()) as null:
         self.mult.multiply(59)
     str(null)
コード例 #2
0
 def test_path(self):
     with local(PathContext([0, 1])) as ctx:
         key_generator = KeyGeneration(self.mult, self.secp128r1, True)
         key_generator.generate()
     self.assertIsInstance(ctx.value, ScalarMultiplicationAction)
     with local(PathContext([0, 1, 7])) as ctx:
         key_generator = KeyGeneration(self.mult, self.secp128r1, True)
         key_generator.generate()
コード例 #3
0
ファイル: test_rpa.py プロジェクト: J08nY/pyecsca
    def test_precomp(self):
        bnaf = BinaryNAFMultiplier(self.add, self.dbl, self.neg, self.scale)
        with local(MultipleContext()) as ctx:
            bnaf.init(self.secp128r1, self.base)
        muls = list(ctx.points.values())
        self.assertListEqual(muls, [1, -1])

        wnaf = WindowNAFMultiplier(self.add, self.dbl, self.neg, 3, self.scale)
        with local(MultipleContext()) as ctx:
            wnaf.init(self.secp128r1, self.base)
        muls = list(ctx.points.values())
        self.assertListEqual(muls, [1, 2, 3, 5])
コード例 #4
0
ファイル: test_rpa.py プロジェクト: J08nY/pyecsca
 def test_window(self):
     mult = WindowNAFMultiplier(
         self.add, self.dbl, self.neg, 3, precompute_negation=True
     )
     with local(MultipleContext()):
         mult.init(self.secp128r1, self.base)
         mult.multiply(5)
コード例 #5
0
ファイル: test_rpa.py プロジェクト: J08nY/pyecsca
 def test_ladder(self):
     curve25519 = get_params("other", "Curve25519", "xz")
     base = curve25519.generator
     coords = curve25519.curve.coordinate_model
     ladd = coords.formulas["ladd-1987-m"]
     dadd = coords.formulas["dadd-1987-m"]
     dbl = coords.formulas["dbl-1987-m"]
     scale = coords.formulas["scale"]
     ladd_mult = LadderMultiplier(ladd, dbl, scale)
     with local(MultipleContext()) as ctx:
         ladd_mult.init(curve25519, base)
         ladd_mult.multiply(1339278426732672313)
     muls = list(ctx.points.values())
     self.assertEqual(muls[-2], 1339278426732672313)
     dadd_mult = DifferentialLadderMultiplier(dadd, dbl, scale)
     with local(MultipleContext()) as ctx:
         dadd_mult.init(curve25519, base)
         dadd_mult.multiply(1339278426732672313)
     muls = list(ctx.points.values())
     self.assertEqual(muls[-2], 1339278426732672313)
コード例 #6
0
    def test_default(self):
        token = setcontext(DefaultContext())
        self.addCleanup(resetcontext, token)

        with local(DefaultContext()) as ctx:
            result = self.mult.multiply(59)
        self.assertEqual(len(ctx.actions), 1)
        action = next(iter(ctx.actions.keys()))
        self.assertIsInstance(action, ScalarMultiplicationAction)
        self.assertEqual(len(getcontext().actions), 0)
        self.assertEqual(result, action.result)
コード例 #7
0
ファイル: test_rpa.py プロジェクト: J08nY/pyecsca
 def test_basic(self, name, scalar):
     mult = LTRMultiplier(
         self.add,
         self.dbl,
         self.scale,
         always=False,
         complete=False,
         short_circuit=True,
     )
     with local(MultipleContext()) as ctx:
         mult.init(self.secp128r1, self.base)
         mult.multiply(scalar)
     muls = list(ctx.points.values())
     self.assertEqual(muls[-1], scalar)
コード例 #8
0
 def test_default_no_enter(self):
     with local(DefaultContext()) as default:
         with self.assertRaises(ValueError):
             default.exit_action(RandomModAction(7))
コード例 #9
0
 def test_null(self):
     with local() as ctx:
         self.mult.multiply(59)
     self.assertIsInstance(ctx, NullContext)