def test_dynamic_memory():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('dynamic_memory', implementation):
                # Keep this loop outside, to allow multiple assertions
                for function in ['malloc', 'free', 'realloc', 'calloc']:
                    yield (check_dynamic_memory, implementation, function)
示例#2
0
def test_char():
    if not(os.path.exists(os.path.join('pycparser', '.git'))):
        helpers.run_subprocess(
            ['git', 'submodule', 'update', '--init']
        )
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('char', implementation): 
                yield check_char, implementation
示例#3
0
def test_makefile_dependencies():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('makefile_dependencies', implementation):
                # initial build - want to have *all* files in place at beginning
                helpers.make('clean', working_dir=implementation.path())
                helpers.make(working_dir=implementation.path())
                # test case for each candidate file
                cfiles = glob.glob(os.path.join(implementation.path(), '*.c'))
                hfiles = glob.glob(os.path.join(implementation.path(), '*.h'))
                for file in (cfiles + hfiles):
                    yield (check_makefile_dependencies, implementation, file)
def test_duplicate_consistency():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('duplicate_consistency', implementation):
                if os.path.isfile(
                        os.path.join(
                            'duplicate_consistency',
                            '{}_{}.yml'.format(scheme.name,
                                               implementation.name))):
                    metafile = os.path.join(
                        'duplicate_consistency',
                        '{}_{}.yml'.format(implementation.scheme.name,
                                           implementation.name))
                    with open(metafile, encoding='utf-8') as f:
                        metadata = yaml.load(f.read())
                        for group in metadata['consistency_checks']:
                            source = pqclean.Implementation.by_name(
                                group['source']['scheme'],
                                group['source']['implementation'])
                            for file in group['files']:
                                yield check_duplicate_consistency, implementation, source, file
def test_functest():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('valgrind', implementation):
                yield check_valgrind, implementation
def test_metadata_sizes():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('metadata_sizes', implementation):
                yield check_metadata_sizes, implementation
def test_compile_lib():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('compile_lib', implementation):
                yield check_compile_lib, implementation
def test_preprocessor():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('preprocessor', implementation):
                yield check_preprocessor, implementation
示例#9
0
def test_nistkat():
    for scheme in pqclean.Scheme.all_schemes():
        if scheme.type != 'kem': continue
        for implementation in scheme.implementations:
            if helpers.permit_test('nistkat', implementation):
                yield check_nistkat, implementation
示例#10
0
def test_symbol_namespace():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('symbol_namespace', implementation):
                yield check_symbol_namespace, implementation
示例#11
0
def test_clang_tidy():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('linter', implementation):
                yield check_tidy, implementation
示例#12
0
def test_no_symlinks():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('no_symlinks', implementation):
                yield check_no_symlinks, implementation
示例#13
0
def test_license():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('license', implementation):
                yield check_license, implementation
示例#14
0
def test_functest_sanitizers():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('functest_sanitizers', implementation):
                yield check_functest_sanitizers, implementation
示例#15
0
def test_common():
    for d in os.listdir('common'):
        primitive = re.sub(r"\.c$", "", d)
        if helpers.permit_test('common', None):
            yield check_common, primitive
示例#16
0
def test_testvectors():
    for scheme in pqclean.Scheme.all_schemes():
        for implementation in scheme.implementations:
            if helpers.permit_test('testvectors', implementation):
                yield check_vectors, implementation
示例#17
0
def test_metadata():
    for scheme in pqclean.Scheme.all_schemes():
        if helpers.permit_test('metadata', scheme):
            yield check_metadata, scheme