def test_bp(path, cls, testcases, args): success = True try: if args.zimmerman: c = cls(path, verbose=args.verbose) else: prime = random_prime(2**args.secparam - 1) c = cls(path, verbose=args.verbose, obliviate=args.obliviate) c.randomize(prime) except ParseException as e: print('%s %s' % (utils.clr_warn('Parse Error:'), e)) return False for k, v in testcases.items(): if c.evaluate(k) != v: print('%s (%s != %d) ' % (failstr, k, v)) success = False return success
def test_bp(path, cls, testcases, args): success = True try: if args.zimmerman: c = cls(path, verbose=args.verbose) else: prime = random_prime(2 ** args.secparam - 1) c = cls(path, verbose=args.verbose, obliviate=args.obliviate) c.randomize(prime) except ParseException as e: print('%s %s' % (utils.clr_warn('Parse Error:'), e)) return False for k, v in testcases.items(): if c.evaluate(k) != v: print('%s (%s != %d) ' % (failstr, k, v)) success = False return success
def main(): parser = argparse.ArgumentParser( description='Cryptographic program obfuscator.') subparsers = parser.add_subparsers() try: nthreads = os.sysconf('SC_NPROCESSORS_ONLN') except ValueError: print(utils.clr_warn('Warning: Unable to count number of cores, defaulting to 1')) nthreads = 1 secparam = 24 parser_bp = subparsers.add_parser( 'bp', help='commands for circuit -> branching program conversion') parser_bp.add_argument('--eval', metavar='INPUT', action='store', type=str, help='evaluate branching program on INPUT') parser_bp.add_argument('--load-circuit', metavar='FILE', action='store', type=str, help='load circuit from FILE') parser_bp.add_argument('--test-circuit', metavar='FILE', action='store', type=str, help='test BP conversion for FILE') parser_bp.add_argument('--test-all', metavar='DIR', nargs='?', const='circuits/', help='test BP conversion for all circuits in DIR (default: %(const)s)') parser_bp.add_argument('--secparam', metavar='N', action='store', type=int, default=secparam, help='security parameter (default: %(default)s)') parser_bp.add_argument('--obliviate', action='store_true', help='obliviate the branching program') parser_bp.add_argument('-v', '--verbose', action='store_true', help='be verbose') parser_bp.add_argument('-a', '--ananth-etal', action='store_true', help='use the Ananth et al. construction (default)') parser_bp.add_argument('-s', '--sahai-zhandry', action='store_true', help='use the Sahai/Zhandry construction') parser_bp.add_argument('-z', '--zimmerman', action='store_true', help='use the Zimmerman construction') parser_bp.set_defaults(func=bp) parser_obf = subparsers.add_parser( 'obf', help='commands for obfuscating a circuit/branching program') parser_obf.add_argument('--eval', metavar='INPUT', action='store', type=str, help='evaluate obfuscation on INPUT') parser_obf.add_argument('--kappa', metavar='N', action='store', type=int, default=None, help='set kappa to N (for debugging)') parser_obf.add_argument('--load-obf', metavar='DIR', action='store', type=str, help='load obfuscation from DIR') parser_obf.add_argument('--load-circuit', metavar='FILE', action='store', type=str, help='load circuit from FILE and obfuscate') parser_obf.add_argument('--test-circuit', metavar='FILE', action='store', type=str, help='test circuit from FILE') parser_obf.add_argument('--test-all', metavar='DIR', nargs='?', const='circuits/', help='test obfuscation for all circuits in DIR (default: %(const)s)') parser_obf.add_argument('--save', metavar='DIR', action='store', type=str, help='save obfuscation to DIR') parser_obf.add_argument('--secparam', metavar='N', action='store', type=int, default=secparam, help='security parameter (default: %(default)s)') parser_obf.add_argument('--obliviate', action='store_true', help='obliviate the branching program') parser_obf.add_argument('--nthreads', metavar='N', action='store', type=int, default=nthreads, help='number of threads to use (default: %(default)s)') parser_obf.add_argument('--nslots', metavar='N', action='store', type=int, default=secparam, help='number of slots to fill (default: %(default)s)') parser_obf.add_argument('-v', '--verbose', action='store_true', help='be verbose') parser_obf.add_argument('-a', '--ananth-etal', action='store_true', help='use the Ananth et al. construction (default)') parser_obf.add_argument('-s', '--sahai-zhandry', action='store_true', help='use the Sahai/Zhandry construction') parser_obf.add_argument('-z', '--zimmerman', action='store_true', help='use the Zimmerman construction') parser_obf.set_defaults(func=obf) args = parser.parse_args() args.func(args)
def main(): parser = argparse.ArgumentParser( description='Cryptographic program obfuscator.') subparsers = parser.add_subparsers() try: nthreads = os.sysconf('SC_NPROCESSORS_ONLN') except ValueError: print( utils.clr_warn( 'Warning: Unable to count number of cores, defaulting to 1')) nthreads = 1 secparam = 24 parser_bp = subparsers.add_parser( 'bp', help='commands for circuit -> branching program conversion') parser_bp.add_argument('--eval', metavar='INPUT', action='store', type=str, help='evaluate branching program on INPUT') parser_bp.add_argument('--load-circuit', metavar='FILE', action='store', type=str, help='load circuit from FILE') parser_bp.add_argument('--test-circuit', metavar='FILE', action='store', type=str, help='test BP conversion for FILE') parser_bp.add_argument( '--test-all', metavar='DIR', nargs='?', const='circuits/', help='test BP conversion for all circuits in DIR (default: %(const)s)') parser_bp.add_argument('--secparam', metavar='N', action='store', type=int, default=secparam, help='security parameter (default: %(default)s)') parser_bp.add_argument('--obliviate', action='store_true', help='obliviate the branching program') parser_bp.add_argument('-v', '--verbose', action='store_true', help='be verbose') parser_bp.add_argument('-a', '--ananth-etal', action='store_true', help='use the Ananth et al. construction (default)') parser_bp.add_argument('-s', '--sahai-zhandry', action='store_true', help='use the Sahai/Zhandry construction') parser_bp.add_argument('-z', '--zimmerman', action='store_true', help='use the Zimmerman construction') parser_bp.set_defaults(func=bp) parser_obf = subparsers.add_parser( 'obf', help='commands for obfuscating a circuit/branching program') parser_obf.add_argument('--eval', metavar='INPUT', action='store', type=str, help='evaluate obfuscation on INPUT') parser_obf.add_argument('--kappa', metavar='N', action='store', type=int, default=None, help='set kappa to N (for debugging)') parser_obf.add_argument('--load-obf', metavar='DIR', action='store', type=str, help='load obfuscation from DIR') parser_obf.add_argument('--load-circuit', metavar='FILE', action='store', type=str, help='load circuit from FILE and obfuscate') parser_obf.add_argument('--test-circuit', metavar='FILE', action='store', type=str, help='test circuit from FILE') parser_obf.add_argument( '--test-all', metavar='DIR', nargs='?', const='circuits/', help='test obfuscation for all circuits in DIR (default: %(const)s)') parser_obf.add_argument('--save', metavar='DIR', action='store', type=str, help='save obfuscation to DIR') parser_obf.add_argument('--secparam', metavar='N', action='store', type=int, default=secparam, help='security parameter (default: %(default)s)') parser_obf.add_argument('--obliviate', action='store_true', help='obliviate the branching program') parser_obf.add_argument( '--nthreads', metavar='N', action='store', type=int, default=nthreads, help='number of threads to use (default: %(default)s)') parser_obf.add_argument( '--nslots', metavar='N', action='store', type=int, default=secparam, help='number of slots to fill (default: %(default)s)') parser_obf.add_argument('-v', '--verbose', action='store_true', help='be verbose') parser_obf.add_argument( '-a', '--ananth-etal', action='store_true', help='use the Ananth et al. construction (default)') parser_obf.add_argument('-s', '--sahai-zhandry', action='store_true', help='use the Sahai/Zhandry construction') parser_obf.add_argument('-z', '--zimmerman', action='store_true', help='use the Zimmerman construction') parser_obf.set_defaults(func=obf) args = parser.parse_args() args.func(args)