Browse Source

wrap lines to be under 80 cols..

main
John-Mark Gurney 2 years ago
parent
commit
d3b1e1f4ef
1 changed files with 17 additions and 8 deletions
  1. +17
    -8
      shamirss.py

+ 17
- 8
shamirss.py View File

@@ -63,11 +63,15 @@ def create_shares(data, k, nshares):

data = bytes(data)

powers = (None, ) + tuple(GF2p8(x).powerseries(k - 1) for x in range(1, nshares + 1))
powers = (None, ) + tuple(GF2p8(x).powerseries(k - 1) for x in
range(1, nshares + 1))

coeffs = [ [ x ] + [ random.randint(1, 255) for y in range(k - 1) ] for idx, x in enumerate(data) ]
coeffs = [ [ x ] + [ random.randint(1, 255) for y in
range(k - 1) ] for idx, x in enumerate(data) ]

return [ (x, bytes([ int(evalpoly(coeffs[idx], powers[x])) for idx, val in enumerate(data) ])) for x in range(1, nshares + 1) ]
return [ (x, bytes([ int(evalpoly(coeffs[idx],
powers[x])) for idx, val in enumerate(data) ])) for x in
range(1, nshares + 1) ]

def recover_data(shares, k):
'''Recover the value given shares, where k is needed.
@@ -190,10 +194,12 @@ class TestShamirSS(unittest.TestCase):
vals = [ GF2p8(random.randint(0, 255)) for x in range(5) ]

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

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

def test_create_shares(self):
self.assertRaises(TypeError, create_shares, '', 1, 1)
@@ -222,7 +228,8 @@ class TestShamirSS(unittest.TestCase):

self.assertEqual(a * ainv, 1)

invcache = (None, ) + tuple(int(GF2p8(x) ** -1) for x in range(1, 256))
invcache = (None, ) + \
tuple(int(GF2p8(x) ** -1) for x in range(1, 256))

if GF2p8._invcache != invcache: # pragma: no cover
print('inv cache:', repr(invcache))
@@ -279,7 +286,9 @@ class TestShamirSS(unittest.TestCase):

# Basic mul
self.assertEqual(GF2p8(0x80) * 2, 0x87)
self.assertEqual(GF2p8(0x80) * 6, (0x80 * 6) ^ (0x187 << 1))
self.assertEqual(GF2p8(0x80) * 8, (0x80 * 8) ^ (0x187 << 2) ^ (0x187 << 1) ^ 0x187)
self.assertEqual(GF2p8(0x80) * 6,
(0x80 * 6) ^ (0x187 << 1))
self.assertEqual(GF2p8(0x80) * 8,
(0x80 * 8) ^ (0x187 << 2) ^ (0x187 << 1) ^ 0x187)

self.assertEqual(a + b - b, a)

Loading…
Cancel
Save