def test_share_point(self):
     share = Share()
     for wrongtype in WRONGTYPES_INT:
         with self.assertRaises(TypeError):
             share.point = wrongtype
     with self.assertRaises(ValueError):
         share.point = 0
     with self.assertRaises(ValueError):
         share.point = Primes.max_bits()
 def test_share_index(self):
     share = Share(10, 1633902946)
     # hex() and oct() calls __index__()
     # noinspection PyTypeChecker
     self.assertEqual(hex(share), '0xa')
     # noinspection PyTypeChecker
     self.assertEqual(oct(share), '0o12')
     share = Share(2)
     indexable = 1, 2, 3,
     # noinspection PyTypeChecker
     self.assertEqual(indexable[share], 3)
 def test_secretshare_init(self):
     secret = Secret(1633902946)
     threshold = 2
     share_count = 3
     shares = Share(1), Share(2)
     shamir = SecretShare(threshold,
                          share_count,
                          secret=secret,
                          shares=shares)
     self.assertEqual(shamir.threshold, threshold)
     self.assertEqual(shamir.share_count, share_count)
     self.assertEqual(shamir.secret, secret)
     self.assertEqual(shamir.shares, list(shares))
 def test_secretshare_setters_getters(self):
     shamir = SecretShare()
     shamir.threshold = 5
     self.assertEqual(shamir.threshold, 5)
     shamir.share_count = 7
     self.assertEqual(shamir.share_count, 7)
     shamir.secret = Secret(1633902946)
     self.assertEqual(shamir.secret.value, 1633902946)
     s1 = Share(1, 5)
     s2 = Share(2, 5)
     shamir.shares = s1, s2,
     self.assertEqual(shamir.shares[0], s1)
     self.assertEqual(shamir.shares[1], s2)
     self.assertEqual(shamir.max_share_count, 30)
 def test_share_from_base64(self):
     share = Share()
     share.from_base64('AgBhY2Fi')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
     share = Share()
     share.from_base64(b'AgBhY2Fi\n')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
 def test_secretshare_combine(self):
     shamir = SecretShare(threshold=2, share_count=3)
     # len(shares) < threshold
     shamir.shares = []
     self.assertRaises(ValueError, shamir.combine)
     # len(shares) > share_count
     shamir.shares = [Share() for _ in range(4)]
     self.assertRaises(ValueError, shamir.combine)
 def test_secretshare_combine(self):
     shares_int = (
         (1, 50250691263452338915556183402696678272),
         (2, 100501382526904677831112366803759453598),
         (3, 150752073790357016746668550204822228924),
     )
     secret_expected = Secret(1633902946)
     shamir = SecretShare(2, 3)
     shamir.shares = []
     for share_int in shares_int[:2]:
         share = Share(*share_int)
         shamir.shares.append(share)
     secret = shamir.combine()
     self.assertEqual(shamir.secret, secret)
     self.assertEqual(secret.value, secret_expected.value)
     shamir.shares = []
     for share_int in shares_int[1:]:
         share = Share(*share_int)
         shamir.shares.append(share)
     shamir.combine()
     self.assertEqual(shamir.secret.value, secret_expected.value)
 def test_secretshare_split_combine(self):
     secret_int = 141674243754083726050570831578464295953
     shares_int = (
         (1, 42125844484391047748301228917955063925),
         (2, 305662287504277561771218479172038047953),
         (3, 251718838971866341192573367477176825023),
         (4, 220577865808095849475740501265139606642),
         (5, 212239368012966086620719880535926392810),
         (6, 226703345586477052627511505289537183527),
     )
     threshold, share_count = 3, 6
     shamir = SecretShare(threshold, share_count)
     for index in (0, 2, 4):
         share = Share(*shares_int[index])
         shamir.shares.append(share)
     secret_recovered = shamir.combine()
     self.assertEqual(int(secret_recovered), secret_int)
     shamir = SecretShare(threshold, share_count)
     for index in (1, 3, 5):
         share = Share(*shares_int[index])
         shamir.shares.append(share)
     secret_recovered = shamir.combine()
     self.assertEqual(int(secret_recovered), secret_int)
 def test_share_value(self):
     share = Share()
     for wrongtype in WRONGTYPES_INT:
         with self.assertRaises(TypeError):
             share.value = wrongtype
     with self.assertRaises(ValueError):
         share.value = 0
     with self.assertRaises(ValueError):
         share.value = -1
     with self.assertRaises(ValueError):
         share.value = Primes.biggest() + 1
 def test_share_to_hex(self):
     share = Share(2, 1633902946)
     self.assertEqual(share.to_hex(), '020061636162')
 def test_share_get_max_point(self):
     self.assertEqual(Share.max_point(), 8191)
 def test_share_point(self):
     share = Share()
     share.point = 5
     self.assertEqual(share.point, 5)
 def test_share_repr(self):
     share = Share(2, 1633902946)
     self.assertEqual(repr(share), "Share(point=2, value=1633902946)")
 def test_share_str(self):
     share = Share(2, 1633902946)
     self.assertEqual(str(share), 'AgBhY2Fi')
 def test_share_int(self):
     share = Share(2, 1633902946)
     self.assertEqual(int(share), 1633902946)
 def test_share_bytes(self):
     share = Share(2, 1633902946)
     self.assertEqual(bytes(share), b'\x02\x00acab')
 def test_share_value(self):
     share = Share()
     share.value = 1633902946
     self.assertEqual(share.value, 1633902946)
 def test_share_from_base64(self):
     share = Share()
     for wrongtype in WRONGTYPES_STR_BYTES:
         self.assertRaises(TypeError, share.from_base64, wrongtype)
 def test_share_from_bytes(self):
     share = Share()
     share.from_bytes(b'\x02\x00acab')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
 def test_share_from_hex(self):
     share = Share()
     for wrongtype in WRONGTYPES_STR:
         self.assertRaises(TypeError, share.from_hex, wrongtype)
 def test_share_from_hex(self):
     share = Share()
     share.from_hex('020061636162')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
     share = Share()
     share.from_hex('0x20061636162')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
     share = Share()
     share.from_hex('20061636162')
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)
 def test_share_to_base64(self):
     share = Share(2, 1633902946)
     self.assertEqual(share.to_base64(), b'AgBhY2Fi\n')
 def test_share_init(self):
     share = Share(2, 1633902946)
     self.assertEqual(share.point, 2)
     self.assertEqual(share.value, 1633902946)