Example #1
0
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
Example #2
0
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
Example #3
0
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)
Example #4
0
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)