Ejemplo n.º 1
0
 def test_smart_attack(self):
     curve = EllipticCurve(GF(23304725718649417969),
                           [8820341459377516260, 5880227639585010840])
     gen = curve.gen(0)
     n = int(gen.order())
     l = randint(1, n - 1)
     l_ = self.smart_attack.attack(gen, l * gen)
     self.assertIsInstance(l_, int)
     self.assertEqual(l, l_)
Ejemplo n.º 2
0
 def test_ecdsa_nonce_reuse(self):
     p = 115792089210356248762697446949407573530086143415290314195533631308867097853951
     a = 115792089210356248762697446949407573530086143415290314195533631308867097853948
     b = 41058363725152142129326129780047268409114441015993725554835256314039467401291
     p_256 = EllipticCurve(GF(p), [a, b])
     gen = p_256.gen(0)
     n = int(gen.order())
     d = randint(1, n - 1)
     l = randint(1, n - 1)
     r = int((l * gen).xy()[0])
     m1 = getrandbits(n.bit_length())
     s1 = pow(l, -1, n) * (m1 + r * d) % n
     m2 = getrandbits(n.bit_length())
     s2 = pow(l, -1, n) * (m2 + r * d) % n
     for l_, d_ in self.ecdsa_nonce_reuse.attack(n, m1, r, s1, m2, r, s2):
         self.assertIsInstance(l_, int)
         self.assertIsInstance(d_, int)
         if l_ == l and d_ == d:
             break
     else:
         self.fail()