Files
@ c1686e15f8d1
Branch filter:
Location: Shamira/src/cli.py - annotation
c1686e15f8d1
2.0 KiB
text/x-python
tests for finite field arithmetic
9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 9c496886dde9 | from argparse import ArgumentParser
from shamira import generate, reconstruct
def run():
parser=ArgumentParser()
subparsers=parser.add_subparsers()
buildSplitParser(subparsers.add_parser("split"))
buildJoinParser(subparsers.add_parser("join"))
parser.set_defaults(func=lambda: parser.error("missing command"))
args=parser.parse_args()
args.func(args)
def buildSplitParser(parser):
parser.add_argument("-k",type=int,required=True,help="number of shares necessary for recovering the secret")
parser.add_argument("-n",type=int,required=True,help="number of generated shares")
encoding=parser.add_mutually_exclusive_group()
encoding.add_argument("--hex",action="store_true",help="encode shares' bytes as a hexadecimal string")
encoding.add_argument("--b32",action="store_true",help="encode shares' bytes as a base32 string")
encoding.add_argument("--b64",action="store_true",help="encode shares' bytes as a base64 string")
parser.add_argument("secret",help="secret to be parser")
parser.set_defaults(func=_generate)
def buildJoinParser(parser):
encoding=parser.add_mutually_exclusive_group()
encoding.add_argument("--hex",action="store_true",help="decode shares' bytes from a hexadecimal string")
encoding.add_argument("--b32",action="store_true",help="decode shares' bytes from a base32 string")
encoding.add_argument("--b64",action="store_true",help="decode shares' bytes from a base64 string")
parser.add_argument("-r","--raw",action="store_true",help="return secret as raw bytes")
parser.add_argument("share",nargs="+",help="shares to be joined")
parser.set_defaults(func=_reconstruct)
def _generate(args):
encoding=getEncoding(args) or "b32"
shares=generate(args.secret,args.k,args.n,encoding)
for s in shares:
print(s)
def _reconstruct(args):
encoding=getEncoding(args)
print(reconstruct(*args.share,encoding=encoding,raw=args.raw))
def getEncoding(args):
if args.hex: return "hex"
elif args.b32: return "b32"
elif args.b64: return "b64"
else: return ""
|