mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-11-27 00:04:24 -05:00
addresses issue #691
This commit is contained in:
parent
c254fddf18
commit
c847efab8f
@ -1,10 +1,43 @@
|
||||
|
||||
{% for family in instructions['kems'] %}
|
||||
option(OQS_ENABLE_KEM_{{ family['name']|upper }} "" ON)
|
||||
{%- for scheme in family['schemes'] %}
|
||||
cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_{{ family['name']|upper }}" OFF){% endfor %}
|
||||
cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_{{ family['name']|upper }}" OFF)
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['supported_platforms'] -%}
|
||||
{% for platform in impl['supported_platforms'] -%}
|
||||
{% for os in platform['operating_systems'] -%}
|
||||
if ({{ os }} STREQUAL CMAKE_SYSTEM_NAME)
|
||||
if ({{ impl['cmake_options'] }})
|
||||
set(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON)
|
||||
endif()
|
||||
endif()
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
{% else -%}
|
||||
set(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON)
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endfor %}
|
||||
{% endfor -%}
|
||||
{% for family in instructions['sigs'] %}
|
||||
option(OQS_ENABLE_SIG_{{ family['name']|upper }} "" ON)
|
||||
{%- for scheme in family['schemes'] %}
|
||||
cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_{{ family['name']|upper }}" OFF){% endfor %}
|
||||
cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_{{ family['name']|upper }}" OFF)
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['supported_platforms'] -%}
|
||||
{% for platform in impl['supported_platforms'] -%}
|
||||
{% for os in platform['operating_systems'] -%}
|
||||
if ({{ os }} STREQUAL CMAKE_SYSTEM_NAME)
|
||||
if ({{ impl['cmake_options'] }})
|
||||
set(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON)
|
||||
endif()
|
||||
endif()
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
{% else -%}
|
||||
set(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} ON)
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
@ -7,6 +7,14 @@ import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
INSTR_MAP = {
|
||||
"avx2": "OQS_USE_AVX2_INSTRUCTIONS",
|
||||
"bmi2": "OQS_USE_BMI2_INSTRUCTIONS",
|
||||
"aes": "OQS_USE_AES_INSTRUCTIONS",
|
||||
"popcnt": "OQS_USE_POPCNT_INSTRUCTIONS"
|
||||
}
|
||||
|
||||
if 'PQCLEAN_DIR' not in os.environ:
|
||||
print("Must set environment variable PQCLEAN_DIR")
|
||||
@ -26,9 +34,7 @@ def generator(destination_filename, template_filename, family, scheme_desired):
|
||||
if scheme_desired != None:
|
||||
f['schemes'] = [x for x in f['schemes'] if x == scheme_desired]
|
||||
assert(len(f['schemes']) == 1)
|
||||
for scheme in f['schemes']:
|
||||
scheme['metadata']['implementations'] = [imp for imp in scheme['metadata']['implementations'] if imp['name'] == scheme['implementation']]
|
||||
assert(len(scheme['metadata']['implementations']) == 1)
|
||||
# if scheme['implementation'] is not set, run over all implementations!
|
||||
file_put_contents(destination_filename, jinja2.Template(template).render(f))
|
||||
|
||||
def generator_all(filename, instructions):
|
||||
@ -72,6 +78,27 @@ def load_instructions():
|
||||
scheme['scheme_c'] = scheme['scheme'].replace('-', '')
|
||||
return instructions
|
||||
|
||||
# Copy over all files for a given impl in a family using scheme
|
||||
# Returns list of all relative source files
|
||||
def handle_implementation(impl, family, scheme):
|
||||
shutil.rmtree(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl)), ignore_errors=True)
|
||||
srcfolder = os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl))
|
||||
subprocess.run([
|
||||
'cp',
|
||||
'-pr',
|
||||
os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_' + family['pqclean_type'], scheme['pqclean_scheme'], impl),
|
||||
srcfolder
|
||||
])
|
||||
try:
|
||||
os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl), 'Makefile'))
|
||||
os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl), 'Makefile.Microsoft_nmake'))
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
extensions = [ '.c', '.s' ]
|
||||
return [str(x.relative_to(srcfolder)) for x in Path(srcfolder).iterdir() if x.suffix.lower() in extensions]
|
||||
|
||||
|
||||
|
||||
instructions = load_instructions()
|
||||
|
||||
for family in instructions['kems'] + instructions['sigs']:
|
||||
@ -80,15 +107,53 @@ for family in instructions['kems'] + instructions['sigs']:
|
||||
os.mkdir(os.path.join('src', family['type'], family['name']))
|
||||
except:
|
||||
pass
|
||||
shutil.rmtree(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], scheme['implementation'])), ignore_errors=True)
|
||||
subprocess.run([
|
||||
'cp',
|
||||
'-pr',
|
||||
os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_' + family['pqclean_type'], scheme['pqclean_scheme'], scheme['implementation']),
|
||||
os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], scheme['implementation']))
|
||||
])
|
||||
os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], scheme['implementation']), 'Makefile'))
|
||||
os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'], scheme['implementation']), 'Makefile.Microsoft_nmake'))
|
||||
# If no scheme['implementation'] given, get the list from META.yml and add all implementations
|
||||
try:
|
||||
impl = scheme['implementation']
|
||||
except KeyError:
|
||||
impl = None
|
||||
if (impl):
|
||||
srcs = handle_implementation(impl, family, scheme)
|
||||
if (scheme['sources']):
|
||||
assert(len(scheme['sources']) == len(srcs))
|
||||
# in any case: add 'sources' to implementation(s)
|
||||
# Only retain this 1 implementation:
|
||||
scheme['metadata']['implementations'] = [imp for imp in scheme['metadata']['implementations'] if imp['name'] == impl]
|
||||
scheme['metadata']['implementations'][0]['sources'] = srcs
|
||||
|
||||
else:
|
||||
for impl in scheme['metadata']['implementations']:
|
||||
srcs = handle_implementation(impl['name'], family, scheme)
|
||||
# in any case: add 'sources' to implementation(s)
|
||||
impl['sources'] = srcs
|
||||
# generate 'oqs_unsupported.c' files to permit building also on platforms where the optimized code cannot compile
|
||||
if (impl['name'] != 'clean'):
|
||||
unsupported_filename = os.path.join('src', family['type'], family['name'], 'pqclean_{}_{}'.format(scheme['pqclean_scheme'].replace('-','_'), impl['name']) , 'oqs_unsupported.c')
|
||||
with open(unsupported_filename, 'w') as gen_file:
|
||||
gen_file.write('int {}_{}_unsupported=1;\n'.format(scheme['pqclean_scheme'].replace('-','_'), impl['name']))
|
||||
# also add suitable defines:
|
||||
try:
|
||||
comp_opts = ""
|
||||
rt_opts = ""
|
||||
cmake_opts = ""
|
||||
for i in range(len(impl['supported_platforms'])):
|
||||
req = impl['supported_platforms'][i]
|
||||
if (req['architecture'] == "x86_64"):
|
||||
for i in range(len(req['required_flags'])):
|
||||
rt_opts = rt_opts + "OQS_RT_cpu_flags()."+req['required_flags'][i].upper()+"_INSTRUCTIONS "
|
||||
cmake_opts = cmake_opts + INSTR_MAP[req['required_flags'][i]] + " "
|
||||
comp_opts = comp_opts + "-m"+req['required_flags'][i]
|
||||
if (i < len(req['required_flags'])-1):
|
||||
rt_opts = rt_opts + " && "
|
||||
cmake_opts = cmake_opts + " AND "
|
||||
comp_opts = comp_opts + " "
|
||||
impl['compile_options'] = comp_opts
|
||||
impl['rt_options'] = rt_opts
|
||||
impl['cmake_options'] = cmake_opts
|
||||
except KeyError as ke:
|
||||
if (impl['name'] != "clean"):
|
||||
print("No required flags found for %s (KeyError %s on impl %s)\n" % (scheme['scheme'], str(ke), impl['name']))
|
||||
pass
|
||||
|
||||
generator(
|
||||
os.path.join('src', family['type'], family['name'], family['type'] + '_{}.h'.format(family['name'])),
|
||||
|
||||
@ -69,38 +69,26 @@ kems:
|
||||
scheme: "512"
|
||||
pqclean_scheme: kyber512
|
||||
pretty_name_full: Kyber512
|
||||
implementation: clean
|
||||
sources: ['cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c', 'symmetric-fips202.c']
|
||||
-
|
||||
scheme: "768"
|
||||
pqclean_scheme: kyber768
|
||||
pretty_name_full: Kyber768
|
||||
implementation: clean
|
||||
sources: ['cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c', 'symmetric-fips202.c']
|
||||
-
|
||||
scheme: "1024"
|
||||
pqclean_scheme: kyber1024
|
||||
pretty_name_full: Kyber1024
|
||||
implementation: clean
|
||||
sources: ['cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c', 'symmetric-fips202.c']
|
||||
-
|
||||
scheme: "512_90s"
|
||||
pqclean_scheme: kyber512-90s
|
||||
pretty_name_full: Kyber512-90s
|
||||
implementation: clean
|
||||
sources: ['aes256ctr.c', 'cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c']
|
||||
-
|
||||
scheme: "768_90s"
|
||||
pqclean_scheme: kyber768-90s
|
||||
pretty_name_full: Kyber768-90s
|
||||
implementation: clean
|
||||
sources: ['aes256ctr.c', 'cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c']
|
||||
-
|
||||
scheme: "1024_90s"
|
||||
pqclean_scheme: kyber1024-90s
|
||||
pretty_name_full: Kyber1024-90s
|
||||
implementation: clean
|
||||
sources: ['aes256ctr.c', 'cbd.c', 'indcpa.c', 'kem.c', 'ntt.c', 'poly.c', 'polyvec.c', 'reduce.c', 'verify.c']
|
||||
-
|
||||
name: ledacrypt
|
||||
schemes:
|
||||
@ -232,22 +220,16 @@ sigs:
|
||||
scheme: "2"
|
||||
pqclean_scheme: dilithium2
|
||||
pretty_name_full: DILITHIUM_2
|
||||
implementation: clean
|
||||
sources: ['sign.c', 'polyvec.c', 'poly.c', 'packing.c', 'ntt.c', 'reduce.c', 'rounding.c', 'stream.c']
|
||||
signed_msg_order: sig_then_msg
|
||||
-
|
||||
scheme: "3"
|
||||
pqclean_scheme: dilithium3
|
||||
pretty_name_full: DILITHIUM_3
|
||||
implementation: clean
|
||||
sources: ['sign.c', 'polyvec.c', 'poly.c', 'packing.c', 'ntt.c', 'reduce.c', 'rounding.c', 'stream.c']
|
||||
signed_msg_order: sig_then_msg
|
||||
-
|
||||
scheme: "4"
|
||||
pqclean_scheme: dilithium4
|
||||
pretty_name_full: DILITHIUM_4
|
||||
implementation: clean
|
||||
sources: ['sign.c', 'polyvec.c', 'poly.c', 'packing.c', 'ntt.c', 'reduce.c', 'rounding.c', 'stream.c']
|
||||
signed_msg_order: sig_then_msg
|
||||
-
|
||||
name: falcon
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
{%- for family in instructions['kems'] %}
|
||||
if(OQS_ENABLE_KEM_{{ family['name']|upper }})
|
||||
add_subdirectory(kem/{{ family['name'] }})
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:{{ family['name'] }}>)
|
||||
endif(){% endfor %}
|
||||
{%- for family in instructions['sigs'] %}
|
||||
if(OQS_ENABLE_SIG_{{ family['name']|upper }})
|
||||
add_subdirectory(sig/{{ family['name'] }})
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:{{ family['name'] }}>)
|
||||
endif(){% endfor %}
|
||||
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
|
||||
{% for family in instructions['kems'] -%}
|
||||
{% for scheme in family['schemes'] -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
$<TARGET_OBJECTS:{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }}>
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
{% for family in instructions['sigs'] -%}
|
||||
{% for scheme in family['schemes'] -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
$<TARGET_OBJECTS:{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }}>
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
{% endfor -%}
|
||||
@ -1,9 +1,33 @@
|
||||
# This file was generated by
|
||||
# scripts/copy_from_pqclean/copy_from_pqclean.py
|
||||
{% for scheme in schemes -%}
|
||||
{% for scheme in schemes %}
|
||||
if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }})
|
||||
set(SRCS ${SRCS} kem_{{ family }}_{{ scheme['scheme_c'] }}.c {% for source in scheme['sources'] %}pqclean_{{ scheme['pqclean_scheme'] }}_{{ scheme['implementation'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor -%})
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
{%- if impl['name']|upper != "CLEAN" %}
|
||||
if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }})
|
||||
{%- endif %}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS {% for source in impl['sources'] %}pqclean_{{ scheme['pqclean_scheme'].replace('-','_') }}_{{ impl['name'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor %})
|
||||
{%- if impl['name']|upper != "CLEAN" %}
|
||||
else()
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}/oqs_unsupported.c )
|
||||
endif()
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS} kem_{{ family }}_{{ scheme['scheme_c'] }}.c )
|
||||
{% else %}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS} kem_{{ family }}_{{ scheme['scheme_c'] }}.c )
|
||||
{% endif %}
|
||||
endif()
|
||||
{% endfor %}
|
||||
add_library({{ family }} OBJECT ${SRCS})
|
||||
target_include_directories({{ family }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
|
||||
|
||||
{% for scheme in schemes %}
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS})
|
||||
target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
|
||||
target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/kem/{{ family }}/pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }})
|
||||
target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_options'] }})
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
@ -29,18 +29,103 @@ OQS_KEM *OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_new() {
|
||||
return kem;
|
||||
}
|
||||
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }})
|
||||
{% endif -%}
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(unsigned char *pk, unsigned char *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk);
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor %}
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_keypair(public_key, secret_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_keypair(public_key, secret_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_keypair(public_key, secret_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_keypair(public_key, secret_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -1,11 +1,23 @@
|
||||
{% for family in instructions['kems'] %}
|
||||
#cmakedefine OQS_ENABLE_KEM_{{ family['name']|upper }} 1
|
||||
{%- for scheme in family['schemes'] %}
|
||||
#cmakedefine OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} 1{%- endfor %}
|
||||
#cmakedefine OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} 1
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#cmakedefine OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1
|
||||
{%- endif -%}
|
||||
{% endfor -%}
|
||||
{% endfor %}
|
||||
{% endfor -%}
|
||||
|
||||
{% for family in instructions['sigs'] %}
|
||||
#cmakedefine OQS_ENABLE_SIG_{{ family['name']|upper }}
|
||||
{%- for scheme in family['schemes'] %}
|
||||
#cmakedefine OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} 1{%- endfor %}
|
||||
#cmakedefine OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} 1
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#cmakedefine OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1
|
||||
{%- endif -%}
|
||||
{% endfor -%}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
@ -1,9 +1,33 @@
|
||||
# This file was generated by
|
||||
# scripts/copy_from_pqclean/copy_from_pqclean.py
|
||||
{% for scheme in schemes -%}
|
||||
{% for scheme in schemes %}
|
||||
if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }})
|
||||
set(SRCS ${SRCS} sig_{{ family }}_{{ scheme['scheme_c'] }}.c {% for source in scheme['sources'] %}pqclean_{{ scheme['pqclean_scheme'] }}_{{ scheme['implementation'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor -%})
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
{%- if impl['name']|upper != "CLEAN" %}
|
||||
if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }})
|
||||
{%- endif %}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS {% for source in impl['sources'] %}pqclean_{{ scheme['pqclean_scheme'].replace('-','_') }}_{{ impl['name'] }}/{{ source }}{% if not loop.last %} {% endif %}{% endfor %})
|
||||
{%- if impl['name']|upper != "CLEAN" %}
|
||||
else()
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }}/oqs_unsupported.c )
|
||||
endif()
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_CLEAN_SRCS} sig_{{ family }}_{{ scheme['scheme_c'] }}.c )
|
||||
{% else %}
|
||||
set(SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_SRCS} sig_{{ family }}_{{ scheme['scheme_c'] }}.c )
|
||||
{% endif %}
|
||||
endif()
|
||||
{% endfor %}
|
||||
add_library({{ family }} OBJECT ${SRCS})
|
||||
target_include_directories({{ family }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
|
||||
|
||||
{% for scheme in schemes %}
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT ${SRCS_{{ family|upper }}_{{ scheme['scheme']|upper }}_{{ impl['name']|upper }}_SRCS})
|
||||
target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims)
|
||||
target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/sig/{{ family }}/pqclean_{{ family }}{{ scheme['scheme'] }}_{{ impl['name'] }})
|
||||
target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_options'] }})
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
|
||||
@ -28,18 +28,103 @@ OQS_SIG *OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_new() {
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
{% for impl in scheme['metadata']['implementations'] %}
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#if defined(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }})
|
||||
{% endif -%}
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
{% if impl['name']|upper != "CLEAN" -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor %}
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_keypair(public_key, secret_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(public_key, secret_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_keypair(public_key, secret_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_keypair(public_key, secret_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['implementation']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
{% for impl in scheme['metadata']['implementations'] -%}
|
||||
{% if impl['name'] != 'clean' -%}
|
||||
#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}
|
||||
#ifdef OQS_ENABLE_CPUFEATURES
|
||||
if ({{ impl['rt_options'] }}) {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
} else {
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
#else
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
#endif
|
||||
{% endif -%}
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#else
|
||||
// Assume CLEAN always compiles
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
{% else %}
|
||||
return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ scheme['metadata']['implementations'][0]['name']|upper }}_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
{% endif -%}
|
||||
{% if scheme['metadata']['implementations']|length > 1 -%}
|
||||
#endif
|
||||
{% endif -%}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -23,51 +23,39 @@ endif()
|
||||
##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_OBJECTS_START
|
||||
if(OQS_ENABLE_KEM_CLASSIC_MCELIECE)
|
||||
add_subdirectory(kem/classic_mceliece)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:classic_mceliece>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_KYBER)
|
||||
add_subdirectory(kem/kyber)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:kyber>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_LEDACRYPT)
|
||||
add_subdirectory(kem/ledacrypt)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:ledacrypt>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_NEWHOPE)
|
||||
add_subdirectory(kem/newhope)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:newhope>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_NTRU)
|
||||
add_subdirectory(kem/ntru)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:ntru>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_SABER)
|
||||
add_subdirectory(kem/saber)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:saber>)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_THREEBEARS)
|
||||
add_subdirectory(kem/threebears)
|
||||
set(KEM_OBJS ${KEM_OBJS} $<TARGET_OBJECTS:threebears>)
|
||||
endif()
|
||||
if(OQS_ENABLE_SIG_DILITHIUM)
|
||||
add_subdirectory(sig/dilithium)
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:dilithium>)
|
||||
endif()
|
||||
if(OQS_ENABLE_SIG_FALCON)
|
||||
add_subdirectory(sig/falcon)
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:falcon>)
|
||||
endif()
|
||||
if(OQS_ENABLE_SIG_MQDSS)
|
||||
add_subdirectory(sig/mqdss)
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:mqdss>)
|
||||
endif()
|
||||
if(OQS_ENABLE_SIG_RAINBOW)
|
||||
add_subdirectory(sig/rainbow)
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:rainbow>)
|
||||
endif()
|
||||
if(OQS_ENABLE_SIG_SPHINCS)
|
||||
add_subdirectory(sig/sphincs)
|
||||
set(SIG_OBJS ${SIG_OBJS} $<TARGET_OBJECTS:sphincs>)
|
||||
endif()
|
||||
##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_OBJECTS_END
|
||||
|
||||
@ -75,18 +63,115 @@ add_library(oqs kem/kem.c
|
||||
${KEM_OBJS}
|
||||
sig/sig.c
|
||||
${SIG_OBJS}
|
||||
##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_TEMPLATE_OBJECTS_START
|
||||
$<TARGET_OBJECTS:classic_mceliece_348864_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_348864f_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_460896_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_460896f_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_6688128_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_6688128f_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_6960119_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_6960119f_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_8192128_vec>
|
||||
$<TARGET_OBJECTS:classic_mceliece_8192128f_vec>
|
||||
$<TARGET_OBJECTS:kyber_512_clean>
|
||||
$<TARGET_OBJECTS:kyber_512_avx2>
|
||||
$<TARGET_OBJECTS:kyber_768_clean>
|
||||
$<TARGET_OBJECTS:kyber_768_avx2>
|
||||
$<TARGET_OBJECTS:kyber_1024_clean>
|
||||
$<TARGET_OBJECTS:kyber_1024_avx2>
|
||||
$<TARGET_OBJECTS:kyber_512_90s_clean>
|
||||
$<TARGET_OBJECTS:kyber_512_90s_avx2>
|
||||
$<TARGET_OBJECTS:kyber_768_90s_clean>
|
||||
$<TARGET_OBJECTS:kyber_768_90s_avx2>
|
||||
$<TARGET_OBJECTS:kyber_1024_90s_clean>
|
||||
$<TARGET_OBJECTS:kyber_1024_90s_avx2>
|
||||
$<TARGET_OBJECTS:ledacrypt_ledakemlt12_leaktime>
|
||||
$<TARGET_OBJECTS:ledacrypt_ledakemlt32_leaktime>
|
||||
$<TARGET_OBJECTS:ledacrypt_ledakemlt52_leaktime>
|
||||
$<TARGET_OBJECTS:newhope_512cca_clean>
|
||||
$<TARGET_OBJECTS:newhope_1024cca_clean>
|
||||
$<TARGET_OBJECTS:ntru_hps2048509_clean>
|
||||
$<TARGET_OBJECTS:ntru_hps2048677_clean>
|
||||
$<TARGET_OBJECTS:ntru_hps4096821_clean>
|
||||
$<TARGET_OBJECTS:ntru_hrss701_clean>
|
||||
$<TARGET_OBJECTS:saber_lightsaber_clean>
|
||||
$<TARGET_OBJECTS:saber_saber_clean>
|
||||
$<TARGET_OBJECTS:saber_firesaber_clean>
|
||||
$<TARGET_OBJECTS:threebears_babybear_clean>
|
||||
$<TARGET_OBJECTS:threebears_babybear_ephem_clean>
|
||||
$<TARGET_OBJECTS:threebears_mamabear_clean>
|
||||
$<TARGET_OBJECTS:threebears_mamabear_ephem_clean>
|
||||
$<TARGET_OBJECTS:threebears_papabear_clean>
|
||||
$<TARGET_OBJECTS:threebears_papabear_ephem_clean>
|
||||
$<TARGET_OBJECTS:dilithium_2_clean>
|
||||
$<TARGET_OBJECTS:dilithium_2_avx2>
|
||||
$<TARGET_OBJECTS:dilithium_3_clean>
|
||||
$<TARGET_OBJECTS:dilithium_3_avx2>
|
||||
$<TARGET_OBJECTS:dilithium_4_clean>
|
||||
$<TARGET_OBJECTS:dilithium_4_avx2>
|
||||
$<TARGET_OBJECTS:falcon_512_clean>
|
||||
$<TARGET_OBJECTS:falcon_1024_clean>
|
||||
$<TARGET_OBJECTS:mqdss_31_48_clean>
|
||||
$<TARGET_OBJECTS:mqdss_31_64_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Ia_classic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Ia_cyclic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Ia_cyclic_compressed_clean>
|
||||
$<TARGET_OBJECTS:rainbow_IIIc_classic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_IIIc_cyclic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_IIIc_cyclic_compressed_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Vc_classic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Vc_cyclic_clean>
|
||||
$<TARGET_OBJECTS:rainbow_Vc_cyclic_compressed_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_128f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_128f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_128s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_128s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_192f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_192f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_192s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_192s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_256f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_256f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_256s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_haraka_256s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_128f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_128f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_128s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_128s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_192f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_192f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_192s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_192s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_256f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_256f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_256s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_sha256_256s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_128f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_128f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_128s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_128s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_192f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_192f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_192s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_192s_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_256f_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_256f_simple_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_256s_robust_clean>
|
||||
$<TARGET_OBJECTS:sphincs_shake256_256s_simple_clean>
|
||||
##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_TEMPLATE_OBJECTS_END
|
||||
$<TARGET_OBJECTS:common>)
|
||||
if(DEFINED SANITIZER_LD_FLAGS)
|
||||
target_link_libraries(oqs PUBLIC ${SANITIZER_LD_FLAGS})
|
||||
endif()
|
||||
if(OQS_USE_OPENSSL)
|
||||
target_link_libraries(oqs PUBLIC ${OPENSSL_CRYPTO_LIBRARY})
|
||||
target_include_directories(oqs PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||
endif()
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(oqs PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(OQS_USE_OPENSSL)
|
||||
target_link_libraries(oqs PUBLIC ${OPENSSL_CRYPTO_LIBRARY})
|
||||
target_include_directories(oqs PUBLIC ${OPENSSL_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
set_target_properties(oqs
|
||||
PROPERTIES
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
#endif
|
||||
|
||||
static OQS_RT rt_cpu_flags = {0};
|
||||
static int rt_cpu_flags_initialized = 0;
|
||||
|
||||
OQS_API void OQS_init(void) {
|
||||
#if defined(CPU_FEATURES_ARCH_X86)
|
||||
@ -84,6 +85,10 @@ OQS_API void OQS_init(void) {
|
||||
}
|
||||
|
||||
OQS_API OQS_RT OQS_RT_cpu_flags(void) {
|
||||
if (!rt_cpu_flags_initialized) {
|
||||
OQS_init();
|
||||
rt_cpu_flags_initialized = 1;
|
||||
}
|
||||
return rt_cpu_flags;
|
||||
}
|
||||
#else /* OQS_ENABLE_CPUFEATURES */
|
||||
|
||||
@ -80,111 +80,197 @@
|
||||
///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_ENABLE_DEFINES_START
|
||||
#cmakedefine OQS_ENABLE_KEM_CLASSIC_MCELIECE 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864f 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_348864f_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896f 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_460896f_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128f 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6688128f_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119f 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_6960119f_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128_vec 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128f 1
|
||||
#cmakedefine OQS_ENABLE_KEM_classic_mceliece_8192128f_vec 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_KYBER 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_512 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_512_avx2 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_768 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_768_avx2 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_1024 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_1024_avx2 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_512_90s 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_512_90s_avx2 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_768_90s 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_768_90s_avx2 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_1024_90s 1
|
||||
#cmakedefine OQS_ENABLE_KEM_kyber_1024_90s_avx2 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_LEDACRYPT 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt12 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt12_leaktime 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt32 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt32_leaktime 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt52 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ledacrypt_ledakemlt52_leaktime 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_NEWHOPE 1
|
||||
#cmakedefine OQS_ENABLE_KEM_newhope_512cca 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_newhope_1024cca 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_NTRU 1
|
||||
#cmakedefine OQS_ENABLE_KEM_ntru_hps2048509 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_ntru_hps2048677 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_ntru_hps4096821 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_ntru_hrss701 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_SABER 1
|
||||
#cmakedefine OQS_ENABLE_KEM_saber_lightsaber 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_saber_saber 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_saber_firesaber 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_THREEBEARS 1
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_babybear 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_babybear_ephem 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_mamabear 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_mamabear_ephem 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_papabear 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_KEM_threebears_papabear_ephem 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_DILITHIUM
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_2 1
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_2_avx2 1
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_3 1
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_3_avx2 1
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_4 1
|
||||
#cmakedefine OQS_ENABLE_SIG_dilithium_4_avx2 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_FALCON
|
||||
#cmakedefine OQS_ENABLE_SIG_falcon_512 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_falcon_1024 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_MQDSS
|
||||
#cmakedefine OQS_ENABLE_SIG_mqdss_31_48 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_mqdss_31_64 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_RAINBOW
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Ia_classic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Ia_cyclic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Ia_cyclic_compressed 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_classic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_cyclic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_IIIc_cyclic_compressed 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Vc_classic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Vc_cyclic 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_rainbow_Vc_cyclic_compressed 1
|
||||
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_SPHINCS
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_128s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_192s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_haraka_256s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_128s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_192s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_sha256_256s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_128s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_192s_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256f_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256f_simple 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256s_robust 1
|
||||
|
||||
#cmakedefine OQS_ENABLE_SIG_sphincs_shake256_256s_simple 1
|
||||
|
||||
///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END
|
||||
|
||||
@ -77,9 +77,15 @@ set(API_TEST_DEPS oqs ${LIBM})
|
||||
# KEM API tests
|
||||
add_executable(example_kem example_kem.c)
|
||||
target_link_libraries(example_kem PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(example_kem PUBLIC ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(kat_kem kat_kem.c)
|
||||
target_link_libraries(kat_kem PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(kat_kem PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(test_kem test_kem.c)
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU"))
|
||||
@ -87,16 +93,28 @@ if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
else ()
|
||||
target_link_libraries(test_kem PRIVATE ${API_TEST_DEPS})
|
||||
endif()
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(test_kem PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(speed_kem speed_kem.c)
|
||||
target_link_libraries(speed_kem PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(speed_kem PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
# SIG API tests
|
||||
add_executable(example_sig example_sig.c)
|
||||
target_link_libraries(example_sig PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(example_sig PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(kat_sig kat_sig.c)
|
||||
target_link_libraries(kat_sig PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(kat_sig PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(test_sig test_sig.c)
|
||||
if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU"))
|
||||
@ -104,9 +122,15 @@ if((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
else ()
|
||||
target_link_libraries(test_sig PRIVATE ${API_TEST_DEPS})
|
||||
endif()
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(test_sig PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_executable(speed_sig speed_sig.c)
|
||||
target_link_libraries(speed_sig PRIVATE ${API_TEST_DEPS})
|
||||
if(DEFINED CPUFEATURES_LIBRARY)
|
||||
target_link_libraries(speed_sig PRIVATE ${CPUFEATURES_LIBRARY})
|
||||
endif()
|
||||
|
||||
# TODO: Get CMake to find python.
|
||||
# and set PATH variable in Windows
|
||||
|
||||
@ -139,8 +139,6 @@ int main(int argc, char **argv) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
OQS_init();
|
||||
|
||||
print_system_info();
|
||||
|
||||
printf("Speed test\n");
|
||||
|
||||
@ -43,6 +43,8 @@ static OQS_STATUS sig_speed_wrapper(const char *method_name, uint64_t duration,
|
||||
printf("%-30s | %10s | %14s | %15s | %10s | %25s | %10s\n", sig->method_name, "", "", "", "", "", "");
|
||||
TIME_OPERATION_SECONDS(OQS_SIG_keypair(sig, public_key, secret_key), "keypair", duration)
|
||||
TIME_OPERATION_SECONDS(OQS_SIG_sign(sig, signature, &signature_len, message, message_len, secret_key), "sign", duration)
|
||||
//message[0]=0;
|
||||
// printf("verify result = %d\n", OQS_SIG_verify(sig, message, message_len, signature, signature_len, public_key));
|
||||
TIME_OPERATION_SECONDS(OQS_SIG_verify(sig, message, message_len, signature, signature_len, public_key), "verify", duration)
|
||||
|
||||
if (printInfo) {
|
||||
@ -140,8 +142,6 @@ int main(int argc, char **argv) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
OQS_init();
|
||||
|
||||
print_system_info();
|
||||
|
||||
printf("Speed test\n");
|
||||
|
||||
@ -158,8 +158,6 @@ int main(int argc, char **argv) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
OQS_init();
|
||||
|
||||
print_system_info();
|
||||
|
||||
char *alg_name = argv[1];
|
||||
|
||||
@ -119,8 +119,6 @@ int main(int argc, char **argv) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
OQS_init();
|
||||
|
||||
print_system_info();
|
||||
|
||||
char *alg_name = argv[1];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user