Browse Source

be strict w/ evalpoly to help catch the previous commit bug...

This makes sure that the coefficients and polynomial match such
that either there's enough coefficients, or the polynomial is..
main
John-Mark Gurney 1 year ago
parent
commit
3a7775c813
1 changed files with 6 additions and 3 deletions
  1. +6
    -3
      shamirss.py

+ 6
- 3
shamirss.py View File

@@ -56,7 +56,8 @@ def _makered(x, y):
return x return x


def evalpoly(polynomial, powers): def evalpoly(polynomial, powers):
return sum(( x * y for x, y in zip(polynomial, powers)), 0)
return sum(( x * y for x, y in zip(polynomial, powers,
strict=True)), 0)


def create_shares(data, k, nshares): def create_shares(data, k, nshares):
'''Given data, create nshares, such that given any k shares, '''Given data, create nshares, such that given any k shares,
@@ -197,7 +198,7 @@ class TestShamirSS(unittest.TestCase):
def test_evalpoly(self): def test_evalpoly(self):
a = GF2p8(random.randint(0, 255)) a = GF2p8(random.randint(0, 255))


powers = a.powerseries(5)
powers = a.powerseries(4)


self.assertTrue(all(isinstance(x, GF2p8) for x in powers)) self.assertTrue(all(isinstance(x, GF2p8) for x in powers))


@@ -207,10 +208,12 @@ class TestShamirSS(unittest.TestCase):
self.assertEqual(r, vals[0] + vals[1] * powers[1] + vals[2] * self.assertEqual(r, vals[0] + vals[1] * powers[1] + vals[2] *
powers[2] + vals[3] * powers[3] + vals[4] * powers[4]) powers[2] + vals[3] * powers[3] + vals[4] * powers[4])


r = evalpoly(vals[:3], powers)
r = evalpoly(vals[:3], powers[:3])
self.assertEqual(r, vals[0] + vals[1] * powers[1] + vals[2] * self.assertEqual(r, vals[0] + vals[1] * powers[1] + vals[2] *
powers[2]) powers[2])


self.assertRaises(ValueError, evalpoly, [1], [1, 2])

def test_create_shares(self): def test_create_shares(self):
self.assertRaises(TypeError, create_shares, '', 1, 1) self.assertRaises(TypeError, create_shares, '', 1, 1)




Loading…
Cancel
Save