diff --git a/src/condensed.py b/src/condensed.py --- a/src/condensed.py +++ b/src/condensed.py @@ -60,6 +60,9 @@ def reconstruct_raw(*shares): :param shares: (((int) i, (bytes) share), ...) :return: (bytes) reconstructed secret. Too few shares returns garbage.""" + if len({x for (x, _) in shares}) < len(shares): + raise SException("Found a non-unique share. Please check your inputs.") + secret_len = len(shares[0][1]) res = [None]*secret_len for i in range(secret_len): diff --git a/src/shamira.py b/src/shamira.py --- a/src/shamira.py +++ b/src/shamira.py @@ -40,6 +40,9 @@ def reconstruct_raw(*shares): :param shares: (((int) i, (bytes) share), ...) :return: (bytes) reconstructed secret. Too few shares return garbage.""" + if len({x for (x, _) in shares}) < len(shares): + raise MalformedShare("Found a non-unique share. Please check your inputs.") + secret_len = len(shares[0][1]) res = [None]*secret_len for i in range(secret_len):