Esempio n. 1
0
def test_sha512(msg):
    output = helpers.run_subprocess(
        [helpers.path_to_executable('test_hash'), 'sha512'],
        input=msg.encode(),
    )
    assert (output.rstrip() == hashlib.sha512(msg.encode()).hexdigest())
    output = helpers.run_subprocess(
        [helpers.path_to_executable('test_hash'), 'sha512inc'],
        input=msg.encode(),
    )
    assert (output.rstrip() == hashlib.sha512(msg.encode()).hexdigest())
Esempio n. 2
0
def test_sig(sig_name):
    if not (helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_sig'), sig_name], )
    output = output.replace("\r\n", "\n")
    kats = []
    avx2_aes_enabled_on_linux = helpers.is_use_option_enabled_by_name(
        'AVX2_INSTRUCTIONS') and helpers.is_use_option_enabled_by_name(
            'AES_INSTRUCTIONS') and platform.system() == 'Linux'
    for filename in os.listdir(os.path.join('tests', 'KATs', 'sig')):
        if filename.startswith(sig_name + '.') and filename.endswith('.kat'):
            # qtesla's avx2 implementation uses an optimized sampling method that results in different KAT values; we use the correct one (if avx2/aes instructions are available)
            append_kat = False
            if sig_name.startswith('qTesla'):
                if 'avx2' in filename:
                    if avx2_aes_enabled_on_linux and not helpers.is_build_portable(
                    ):
                        append_kat = True
                else:
                    append_kat = True
            else:
                append_kat = True
            if append_kat:
                with open(os.path.join('tests', 'KATs', 'sig', filename),
                          'r') as myfile:
                    kats.append(myfile.read())
    assert (output in kats)
Esempio n. 3
0
def test_constant_time_sig(sig_name):
    passes = get_ct_passes('sig', sig_name)
    issues = get_ct_issues('sig', sig_name)
    output = helpers.run_subprocess(VALGRIND + [
        *(['--suppressions=' + f
           for f in passes]), *(['--suppressions=' + f for f in issues]),
        helpers.path_to_executable('test_sig'), sig_name
    ])
Esempio n. 4
0
def test_sig(sig_name):
    if not(helpers.is_sig_enabled_by_name(sig_name)): pytest.skip('Not enabled')
    if sys.platform.startswith("win") and 'APPVEYOR' in os.environ:
        if 'SPHINCS' in sig_name and ('192f' in sig_name or '192s' in sig_name or '256f' in sig_name or '256s' in sig_name):
            pytest.skip('Skipping SPHINCS+ 192s and 256s tests on Windows AppVeyor builds')
    helpers.run_subprocess(
        [helpers.path_to_executable('test_sig'), sig_name],
    )
Esempio n. 5
0
def test_sig(sig_name):
    if not (helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')

    helpers.run_subprocess([
        "qemu-" + platform.machine() + "-static", "-cpu", MINCPU,
        helpers.path_to_executable('test_sig'), sig_name
    ])
Esempio n. 6
0
def test_kem(kem_name):
    if not(helpers.is_build_portable()):
        pytest.skip("Portability not enabled")

    if not(helpers.is_kem_enabled_by_name(kem_name)):
        pytest.skip('Not enabled')

    helpers.run_subprocess(["qemu-"+platform.machine()+"-static", "-cpu", MIN_CPUS[platform.machine()],
                            helpers.path_to_executable('test_kem'), kem_name])
Esempio n. 7
0
def test_kem(kem_name):
    if not (helpers.is_kem_enabled_by_name(kem_name)):
        pytest.skip('Not enabled')

    Path('build/mem-benchmark').mkdir(parents=True, exist_ok=True)

    for i in range(3):
        helpers.run_subprocess(
            [helpers.path_to_executable('test_kem_mem'), kem_name,
             str(i)])
Esempio n. 8
0
def test_sig(sig_name):
    kats = helpers.get_kats("sig")
    if not (helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_sig'), sig_name], )
    output = output.replace("\r\n", "\n")
    h256 = sha256()
    h256.update(output.encode())

    assert (kats[sig_name] == h256.hexdigest())
Esempio n. 9
0
def test_kem(kem_name):
    kats = helpers.get_kats("kem")
    if kem_name.startswith('SIDH'): pytest.skip('KATs not available for SIDH')
    if not (helpers.is_kem_enabled_by_name(kem_name)):
        pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_kem'), kem_name], )
    output = output.replace("\r\n", "\n")
    h256 = sha256()
    h256.update(output.encode())

    assert (kats[kem_name] == h256.hexdigest())
Esempio n. 10
0
def test_sig(sig_name):
    if not(helpers.is_build_portable()):
        pytest.skip("Portability not enabled")

    if not(helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')

    if (sig_name.startswith("picnic")):
        pytest.skip("Picnic portability known to not be given.")

    helpers.run_subprocess(["qemu-"+platform.machine()+"-static", "-cpu", MIN_CPUS[platform.machine()],
                             helpers.path_to_executable('test_sig'), sig_name])
Esempio n. 11
0
def test_sig(sig_name):
    if not(helpers.is_sig_enabled_by_name(sig_name)): pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_sig'), sig_name],
    )
    output = output.replace("\r\n", "\n")
    kats = []
    for filename in os.listdir(os.path.join('tests', 'KATs', 'sig')):
        if filename.startswith(sig_name + '.') and filename.endswith('.kat'):
            with open(os.path.join('tests', 'KATs', 'sig', filename), 'r') as myfile:
                kats.append(myfile.read())
    assert(output in kats)
Esempio n. 12
0
def test_sig(sig_name):
    if not (helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_sig'), sig_name], )
    output = output.replace("\r\n", "\n")
    kats = []
    for filename in os.listdir(os.path.join('tests', 'KATs', 'sig')):
        if filename.startswith(sig_name + '.') and filename.endswith('.kat'):
            # qtesla's avx2 implementation uses an optimized sampling method that results in different KAT values; we use the correct one
            if not sig_name.startswith('qTesla') or not (bool(
                    helpers.is_use_option_enabled_by_name(
                        'AVX2_INSTRUCTION')) ^ bool('avx2' in filename)):
                with open(os.path.join('tests', 'KATs', 'sig', filename),
                          'r') as myfile:
                    kats.append(myfile.read())
    assert (output in kats)
Esempio n. 13
0
def test_sig(sig_name):
    kats = helpers.get_kats("sig")
    if not (helpers.is_sig_enabled_by_name(sig_name)):
        pytest.skip('Not enabled')
    output = helpers.run_subprocess(
        [helpers.path_to_executable('kat_sig'), sig_name], )
    output = output.replace("\r\n", "\n")
    h256 = sha256()
    h256.update(output.encode())
    # qtesla's avx2 implementation uses an optimized sampling method that results in
    # different KAT values; we use the correct one (if avx2/aes instructions are available)
    avx2_aes_enabled_on_linux = helpers.is_use_option_enabled_by_name(
        'AVX2_INSTRUCTIONS') and helpers.is_use_option_enabled_by_name(
            'AES_INSTRUCTIONS') and platform.system() == 'Linux'
    if sig_name.startswith(
            'qTesla'
    ) and avx2_aes_enabled_on_linux and not helpers.is_build_portable():
        sig_name = sig_name + ".avx2"

    assert (kats[sig_name] == h256.hexdigest())
Esempio n. 14
0
def test_aes():
    helpers.run_subprocess([helpers.path_to_executable('test_aes')], )
Esempio n. 15
0
def test_sha3():
    helpers.run_subprocess([helpers.path_to_executable('test_sha3')], )
Esempio n. 16
0
def test_kem(kem_name):
    if not(helpers.is_kem_enabled_by_name(kem_name)): pytest.skip('Not enabled')
    helpers.run_subprocess(
        [helpers.path_to_executable('test_kem'), kem_name],
    )
Esempio n. 17
0
def test_examples(program):
    helpers.run_subprocess(
        [helpers.path_to_executable(program)],
    )