def bp(args): check_args(args) if args.ananth_etal: from agis_bp import AGISBranchingProgram cls = AGISBranchingProgram if args.sahai_zhandry: from sz_bp import SZBranchingProgram cls = SZBranchingProgram if args.zimmerman: from z_obfuscator import Circuit cls = Circuit try: if args.test_circuit: test_circuit(args.test_circuit, cls, None, False, args) elif args.test_all: test_all(args, cls, None, False) elif args.load_circuit: bp = cls(args.load_circuit, verbose=args.verbose) if args.obliviate: bp.obliviate() if args.eval: r = bp.evaluate(args.eval) print('Output = %d' % r) except ParseException as e: print('%s %s' % (errorstr, e)) sys.exit(1)
def test_all(args, bpclass, obfclass, obfuscate): if not os.path.isdir(args.test_all): print("%s '%s' is not a valid directory" % (errorstr, args.test_all)) sys.exit(1) ext = '.acirc' if args.zimmerman else '.circ' for circuit in os.listdir(args.test_all): path = os.path.join(args.test_all, circuit) if os.path.isfile(path) and path.endswith(ext): test_circuit(path, bpclass, obfclass, obfuscate, args)
def obf(args): check_args(args) if args.ananth_etal: from agis_bp import AGISBranchingProgram from agis_obfuscator import AGISObfuscator bpclass = AGISBranchingProgram obfclass = AGISObfuscator if args.sahai_zhandry: from sz_bp import SZBranchingProgram from sz_obfuscator import SZObfuscator bpclass = SZBranchingProgram obfclass = SZObfuscator if args.zimmerman: from z_obfuscator import ZObfuscator bpclass = None obfclass = ZObfuscator try: if args.test_circuit: test_circuit(args.test_circuit, bpclass, obfclass, True, args) elif args.test_all: test_all(args, bpclass, obfclass, True) else: directory = None if args.load_obf: directory = args.load_obf elif args.load_circuit: start = time.time() obf = obfclass(verbose=args.verbose, nthreads=args.nthreads) directory = args.save if args.save \ else '%s.obf.%d' % (args.load_circuit, args.secparam) obf.obfuscate(args.load_circuit, args.secparam, directory, obliviate=args.obliviate, nslots=args.nslots, kappa=args.kappa) end = time.time() print('Obfuscation took: %f seconds' % (end - start)) else: print('%s One of --load-obf, --load-circuit, or ' '--test-circuit must be used' % errorstr) sys.exit(1) if args.eval: assert directory obf = obfclass(verbose=args.verbose, nthreads=args.nthreads) r = obf.evaluate(directory, args.eval) print('Output = %d' % r) except ParseException as e: print('%s %s' % (errorstr, e)) sys.exit(1)