示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)