diff --git a/src/shamira.py b/src/shamira.py --- a/src/shamira.py +++ b/src/shamira.py @@ -1,5 +1,4 @@ import os -import sys import re import base64 @@ -61,7 +60,7 @@ def reconstruct(*shares,encoding="",raw= if not encoding: encoding=detectEncoding(shares) - bs=reconstructRaw(decode(s,encoding) for s in shares) + bs=reconstructRaw(*(decode(s,encoding) for s in shares)) return bs if raw else bs.decode(encoding="utf-8") @@ -69,7 +68,8 @@ def encode(share,encoding="b32"): if encoding=="hex": f=base64.b16encode elif encoding=="b32": f=base64.b32encode else: f=base64.b64encode - return ["{0}.{1}".format(i,f(bs).decode("utf8")) for (i,bs) in share] + (i,bs)=share + return "{0}.{1}".format(i,f(bs).decode("utf-8")) def decode(share,encoding="b32"): @@ -79,14 +79,14 @@ def decode(share,encoding="b32"): i=int(i) if encoding=="hex": f=base64.b16decode elif encoding=="b32": f=base64.b32decode - else: f=base64.b32decode + else: f=base64.b64decode shareBytes=f(shareStr) return (i,shareBytes) def detectEncoding(shares): classes=[ - (re.compile(r"\d+\.[0-9a-f]+=*"), "hex"), + (re.compile(r"\d+\.[0-9A-F]+=*"), "hex"), (re.compile(r"\d+\.[A-Z2-7]+=*"), "b32"), (re.compile(r"\d+\.[A-Za-z0-9+/]+=*"), "b64") ] @@ -97,9 +97,5 @@ def detectEncoding(shares): if __name__=="__main__": - secret=sys.argv[1].encode("utf8") - k=int(sys.argv[2]) - n=int(sys.argv[3]) - output=sys.argv[4] if len(sys.argv)>4 else "raw" - for share in generate(secret,k,n,output): - print(share) + import cli + cli.run()