diff --git a/Makefile.am b/Makefile.am index b0be1369e..671aac5c5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -26,14 +26,11 @@ endif if ENABLE_SIG_QTESLA liboqs_la_LIBADD += src/sig/qtesla/libqtesla.la endif -if ENABLE_SIG_DILITHIUM -liboqs_la_LIBADD += src/sig/dilithium/libdilithium.la -endif if ENABLE_KEM_BIKE liboqs_la_LIBADD += src/kem/bike/libkembike.la endif -##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_IF_ENABLE_KEM_START +##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_IF_ENABLE_START if ENABLE_KEM_KYBER liboqs_la_LIBADD += src/kem/kyber/libkemkyber.la endif @@ -43,7 +40,11 @@ endif if ENABLE_KEM_NTRU liboqs_la_LIBADD += src/kem/ntru/libkemntru.la endif -##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_IF_ENABLE_KEM_END + +if ENABLE_SIG_DILITHIUM +liboqs_la_LIBADD += src/sig/dilithium/libsigdilithium.la +endif +##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_IF_ENABLE_END if ENABLE_KEM_FRODOKEM liboqs_la_LIBADD += src/kem/frodokem/libkemfrodokem.la endif @@ -71,9 +72,9 @@ installheader_HEADERS= src/oqs.h \ src/kem/frodokem/kem_frodokem.h \ src/kem/sike/kem_sike.h \ src/sig/sig.h \ + src/sig/dilithium/sig_dilithium.h \ src/sig/picnic/sig_picnic.h \ - src/sig/qtesla/sig_qtesla.h \ - src/sig/dilithium/sig_dilithium.h + src/sig/qtesla/sig_qtesla.h ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_INSTALLHEADER_END @@ -107,13 +108,13 @@ links: cp -f src/kem/kyber/kem_kyber.h include/oqs cp -f src/kem/newhope/kem_newhope.h include/oqs cp -f src/kem/ntru/kem_ntru.h include/oqs + cp -f src/sig/dilithium/sig_dilithium.h include/oqs ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_LINKS_END cp -f src/kem/frodokem/kem_frodokem.h include/oqs cp -f src/kem/sike/kem_sike.h include/oqs cp -f src/sig/sig.h include/oqs cp -f src/sig/picnic/sig_picnic.h include/oqs cp -f src/sig/qtesla/sig_qtesla.h include/oqs - cp -f src/sig/dilithium/sig_dilithium.h include/oqs clean-local: rm -rf include diff --git a/config/features.m4 b/config/features.m4 index 87fe5f591..5bd53a5b6 100644 --- a/config/features.m4 +++ b/config/features.m4 @@ -47,6 +47,7 @@ AC_DEFUN([CONFIG_FEATURE_FLAGS], ARG_DISBL_SET_WRAP([kem-kyber], [kem_kyber], [ENABLE_KEM_KYBER], [src/kem/kyber]) ARG_DISBL_SET_WRAP([kem-newhope], [kem_newhope], [ENABLE_KEM_NEWHOPE], [src/kem/newhope]) ARG_DISBL_SET_WRAP([kem-ntru], [kem_ntru], [ENABLE_KEM_NTRU], [src/kem/ntru]) + ARG_DISBL_SET_WRAP([sig-dilithium], [sig_dilithium], [ENABLE_SIG_DILITHIUM], [src/sig/dilithium]) ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_ARG_DISBL_SET_WRAP_END ARG_DISBL_SET_WRAP([kem-frodokem], [kem_frodokem], [ENABLE_KEM_FRODOKEM], [src/kem/frodokem]) ARG_DISBL_SET_WRAP([kem-sike], [kem_sike], [ENABLE_KEM_SIKE], [src/kem/sike]) @@ -55,8 +56,6 @@ AC_DEFUN([CONFIG_FEATURE_FLAGS], [ENABLE_SIG_PICNIC], [src/sig/picnic]) ARG_DISBL_SET_WRAP([sig-qtesla], [sig_qtesla], [ENABLE_SIG_QTESLA], [src/sig/qtesla]) - ARG_DISBL_SET_WRAP([sig-dilithium], [sig_dilithium], - [ENABLE_SIG_DILITHIUM], [src/sig/dilithium]) ] ) @@ -100,6 +99,11 @@ AC_DEFUN([CONFIG_FEATURES], AC_DEFINE(OQS_ENABLE_KEM_ntru_hps4096821, 1, "Define to 1 when NTRU-HPS-4096-821 enabled") AC_DEFINE(OQS_ENABLE_KEM_ntru_hrss701, 1, "Define to 1 when NTRU-HRSS-701 enabled") ]) + AM_COND_IF([ENABLE_SIG_DILITHIUM], [ + AC_DEFINE(OQS_ENABLE_SIG_dilithium_2, 1, "Define to 1 when DILITHIUM_2 enabled") + AC_DEFINE(OQS_ENABLE_SIG_dilithium_3, 1, "Define to 1 when DILITHIUM_3 enabled") + AC_DEFINE(OQS_ENABLE_SIG_dilithium_4, 1, "Define to 1 when DILITHIUM_4 enabled") + ]) ##### OQS_COPY_FROM_PQCLEAN_FRAGMENT_AM_COND_IF_END AM_COND_IF([ENABLE_KEM_FRODOKEM], [ @@ -136,10 +140,5 @@ AC_DEFUN([CONFIG_FEATURES], AC_DEFINE(OQS_ENABLE_SIG_picnic2_L5_FS, 1, "Define to 1 when picnic2-L5-FS enabled") ]) - AM_COND_IF([ENABLE_SIG_DILITHIUM], [ - AC_DEFINE(OQS_ENABLE_SIG_dilithium_2, 1, "Define to 1 when DILITHIUM_2 enabled") - AC_DEFINE(OQS_ENABLE_SIG_dilithium_3, 1, "Define to 1 when DILITHIUM_3 enabled") - AC_DEFINE(OQS_ENABLE_SIG_dilithium_4, 1, "Define to 1 when DILITHIUM_4 enabled") - ]) ] ) diff --git a/scripts/copy_from_pqclean/Makefile.am/if_enable_kem.fragment b/scripts/copy_from_pqclean/Makefile.am/if_enable.fragment similarity index 50% rename from scripts/copy_from_pqclean/Makefile.am/if_enable_kem.fragment rename to scripts/copy_from_pqclean/Makefile.am/if_enable.fragment index ca0f12f20..2acecabc6 100644 --- a/scripts/copy_from_pqclean/Makefile.am/if_enable_kem.fragment +++ b/scripts/copy_from_pqclean/Makefile.am/if_enable.fragment @@ -2,4 +2,8 @@ if ENABLE_KEM_{{ family['name']|upper }} liboqs_la_LIBADD += src/kem/{{ family['name'] }}/libkem{{ family['name'] }}.la endif{% endfor %} +{% for family in instructions['sigs'] %} +if ENABLE_SIG_{{ family['name']|upper }} +liboqs_la_LIBADD += src/sig/{{ family['name'] }}/libsig{{ family['name'] }}.la +endif{% endfor %} diff --git a/scripts/copy_from_pqclean/Makefile.am/installheader.fragment b/scripts/copy_from_pqclean/Makefile.am/installheader.fragment index 7feecd499..324daea8d 100644 --- a/scripts/copy_from_pqclean/Makefile.am/installheader.fragment +++ b/scripts/copy_from_pqclean/Makefile.am/installheader.fragment @@ -12,7 +12,8 @@ installheader_HEADERS= src/oqs.h \ src/kem/frodokem/kem_frodokem.h \ src/kem/sike/kem_sike.h \ src/sig/sig.h \ +{%- for family in instructions['sigs'] %} + src/sig/{{ family['name'] }}/sig_{{ family['name'] }}.h \{% endfor %} src/sig/picnic/sig_picnic.h \ - src/sig/qtesla/sig_qtesla.h \ - src/sig/dilithium/sig_dilithium.h + src/sig/qtesla/sig_qtesla.h diff --git a/scripts/copy_from_pqclean/Makefile.am/links.fragment b/scripts/copy_from_pqclean/Makefile.am/links.fragment index 4b9803027..a1098bd99 100644 --- a/scripts/copy_from_pqclean/Makefile.am/links.fragment +++ b/scripts/copy_from_pqclean/Makefile.am/links.fragment @@ -1,3 +1,5 @@ {% for family in instructions['kems'] %} cp -f src/kem/{{ family['name'] }}/kem_{{ family['name'] }}.h include/oqs{% endfor %} +{%- for family in instructions['sigs'] %} + cp -f src/sig/{{ family['name'] }}/sig_{{ family['name'] }}.h include/oqs{% endfor %} diff --git a/scripts/copy_from_pqclean/config/features.m4/am_cond_if.fragment b/scripts/copy_from_pqclean/config/features.m4/am_cond_if.fragment index e182438ec..9b4285b86 100644 --- a/scripts/copy_from_pqclean/config/features.m4/am_cond_if.fragment +++ b/scripts/copy_from_pqclean/config/features.m4/am_cond_if.fragment @@ -1,5 +1,8 @@ {% for family in instructions['kems'] %} AM_COND_IF([ENABLE_KEM_{{ family['name']|upper }}], [{% for scheme in family['schemes'] %} AC_DEFINE(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}, 1, "Define to 1 when {{ scheme['pretty_name_full'] }} enabled"){% endfor %} + ]){% endfor %}{% for family in instructions['sigs'] %} + AM_COND_IF([ENABLE_SIG_{{ family['name']|upper }}], [{% for scheme in family['schemes'] %} + AC_DEFINE(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}, 1, "Define to 1 when {{ scheme['pretty_name_full'] }} enabled"){% endfor %} ]){% endfor %} diff --git a/scripts/copy_from_pqclean/config/features.m4/arg_disbl_set_wrap.fragment b/scripts/copy_from_pqclean/config/features.m4/arg_disbl_set_wrap.fragment index d0d6d0f1b..6e35e6add 100644 --- a/scripts/copy_from_pqclean/config/features.m4/arg_disbl_set_wrap.fragment +++ b/scripts/copy_from_pqclean/config/features.m4/arg_disbl_set_wrap.fragment @@ -1,3 +1,4 @@ {% for family in instructions['kems'] %} - ARG_DISBL_SET_WRAP([kem-{{ family['name'] }}], [kem_{{ family['name'] }}], [ENABLE_KEM_{{ family['name']|upper }}], [src/kem/{{ family['name'] }}]){% endfor %} + ARG_DISBL_SET_WRAP([kem-{{ family['name'] }}], [kem_{{ family['name'] }}], [ENABLE_KEM_{{ family['name']|upper }}], [src/kem/{{ family['name'] }}]){% endfor %}{% for family in instructions['sigs'] %} + ARG_DISBL_SET_WRAP([sig-{{ family['name'] }}], [sig_{{ family['name'] }}], [ENABLE_SIG_{{ family['name']|upper }}], [src/sig/{{ family['name'] }}]){% endfor %} diff --git a/scripts/copy_from_pqclean/configure.ac/ac_config_files.fragment b/scripts/copy_from_pqclean/configure.ac/ac_config_files.fragment index 453fbf726..e06117070 100644 --- a/scripts/copy_from_pqclean/configure.ac/ac_config_files.fragment +++ b/scripts/copy_from_pqclean/configure.ac/ac_config_files.fragment @@ -7,7 +7,8 @@ AC_CONFIG_FILES([Makefile src/sig/Makefile src/sig/picnic/Makefile src/sig/qtesla/Makefile - src/sig/dilithium/Makefile +{%- for family in instructions['sigs'] %} + src/sig/{{ family['name'] }}/Makefile{% endfor %} src/kem/bike/Makefile {%- for family in instructions['kems'] %} src/kem/{{ family['name'] }}/Makefile{% endfor %} diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.py b/scripts/copy_from_pqclean/copy_from_pqclean.py index 774951303..275267518 100755 --- a/scripts/copy_from_pqclean/copy_from_pqclean.py +++ b/scripts/copy_from_pqclean/copy_from_pqclean.py @@ -61,6 +61,12 @@ def load_instructions(): for scheme in family['schemes']: scheme['metadata'] = yaml.safe_load(file_get_contents(os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_kem', scheme['pqclean_scheme'], 'META.yml'))) scheme['metadata']['ind_cca'] = 'true' + for family in instructions['sigs']: + family['type'] = 'sig' + family['family'] = family['name'] + for scheme in family['schemes']: + scheme['metadata'] = yaml.safe_load(file_get_contents(os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_sign', scheme['pqclean_scheme'], 'META.yml'))) + scheme['metadata']['euf_cma'] = 'true' return instructions instructions = load_instructions() @@ -109,6 +115,8 @@ replacer('configure.ac', instructions, '#####') replacer('Makefile.am', instructions, '#####') replacer('src/kem/kem.c', instructions, '/////') replacer('src/kem/kem.h', instructions, '/////') +replacer('src/sig/sig.c', instructions, '/////') +replacer('src/sig/sig.h', instructions, '/////') replacer('VisualStudio/winconfig.h', instructions, '/////') generator_all('VisualStudio/oqs/dll.def', instructions) unix2dos('VisualStudio/oqs/dll.def') diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.yml b/scripts/copy_from_pqclean/copy_from_pqclean.yml index 1a45d1882..a441dd0ee 100644 --- a/scripts/copy_from_pqclean/copy_from_pqclean.yml +++ b/scripts/copy_from_pqclean/copy_from_pqclean.yml @@ -74,3 +74,29 @@ kems: implementation: clean sources: ['kem.c', 'owcpa.c', 'pack3.c', 'packq.c', 'poly.c', 'sample.c', 'verify.c'] visual_studio_guid: 96485f85-7dd5-4df3-a1cd-769da06d3ada +sigs: + - + name: dilithium + visual_studio_guid: 2a035f7e-7c7e-4ca3-94ac-140aac970a73 + schemes: + - + 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', 'symmetric.c'] + visual_studio_guid: 1f5e5dbe-8082-4756-9e90-c7d84198d682 + - + 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', 'symmetric.c'] + visual_studio_guid: 8a93b308-7b77-41e7-88a5-275994b62322 + - + 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', 'symmetric.c'] + visual_studio_guid: fb8c21f2-891b-46fb-8a45-17f69dfa31bd diff --git a/scripts/copy_from_pqclean/src/sig/sig.c/alg_identifier.fragment b/scripts/copy_from_pqclean/src/sig/sig.c/alg_identifier.fragment new file mode 100644 index 000000000..022643da4 --- /dev/null +++ b/scripts/copy_from_pqclean/src/sig/sig.c/alg_identifier.fragment @@ -0,0 +1,3 @@ +{% for family in instructions['sigs'] %} + {% for scheme in family['schemes'] %} OQS_SIG_alg_{{ family['name'] }}_{{ scheme['scheme'] }},{% endfor %}{% endfor %} + \ No newline at end of file diff --git a/scripts/copy_from_pqclean/src/sig/sig.c/new_case.fragment b/scripts/copy_from_pqclean/src/sig/sig.c/new_case.fragment new file mode 100644 index 000000000..e874f8e14 --- /dev/null +++ b/scripts/copy_from_pqclean/src/sig/sig.c/new_case.fragment @@ -0,0 +1,8 @@ +{% for family in instructions['sigs'] %}{% for scheme in family['schemes'] %} + } else if (0 == strcasecmp(method_name, OQS_SIG_alg_{{ family['name'] }}_{{ scheme['scheme'] }})) { +#ifdef OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} + return OQS_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_new(); +#else + return NULL; +#endif{% endfor %}{% endfor %} + diff --git a/scripts/copy_from_pqclean/src/sig/sig.h/alg_identifier.fragment b/scripts/copy_from_pqclean/src/sig/sig.h/alg_identifier.fragment new file mode 100644 index 000000000..dc940087b --- /dev/null +++ b/scripts/copy_from_pqclean/src/sig/sig.h/alg_identifier.fragment @@ -0,0 +1,4 @@ +{% for family in instructions['sigs'] %}{% for scheme in family['schemes'] %} +/** Algorithm identifier for {{ scheme['pretty_name_full'] }} */ +#define OQS_SIG_alg_{{ family['name'] }}_{{ scheme['scheme'] }} "{{ scheme['pretty_name_full'] }}"{% endfor %}{% endfor %} + diff --git a/scripts/copy_from_pqclean/src/sig/sig.h/algs_length.fragment b/scripts/copy_from_pqclean/src/sig/sig.h/algs_length.fragment new file mode 100644 index 000000000..e24f73c80 --- /dev/null +++ b/scripts/copy_from_pqclean/src/sig/sig.h/algs_length.fragment @@ -0,0 +1,4 @@ +{% set unary %}{% for family in instructions['sigs'] %}{% for scheme in family['schemes'] %}1{% endfor %}{% endfor %}{% endset %} +/** Number of algorithm identifiers above (including default). */ +#define OQS_SIG_algs_length {{ unary|length + 13 }} + diff --git a/scripts/copy_from_pqclean/src/sig/sig.h/include.fragment b/scripts/copy_from_pqclean/src/sig/sig.h/include.fragment new file mode 100644 index 000000000..06cc02ca3 --- /dev/null +++ b/scripts/copy_from_pqclean/src/sig/sig.h/include.fragment @@ -0,0 +1,3 @@ +{% for family in instructions['sigs'] %} +#include {% endfor %} + diff --git a/src/sig/sig.c b/src/sig/sig.c index 61a1668e9..3bc92959e 100644 --- a/src/sig/sig.c +++ b/src/sig/sig.c @@ -12,21 +12,11 @@ OQS_API const char *OQS_SIG_alg_identifier(size_t i) { // EDIT-WHEN-ADDING-SIG const char *a[OQS_SIG_algs_length] = { OQS_SIG_alg_default, - OQS_SIG_alg_picnic_L1_FS, - OQS_SIG_alg_picnic_L1_UR, - OQS_SIG_alg_picnic_L3_FS, - OQS_SIG_alg_picnic_L3_UR, - OQS_SIG_alg_picnic_L5_FS, - OQS_SIG_alg_picnic_L5_UR, - OQS_SIG_alg_picnic2_L1_FS, - OQS_SIG_alg_picnic2_L3_FS, - OQS_SIG_alg_picnic2_L5_FS, - OQS_SIG_alg_qTESLA_I, - OQS_SIG_alg_qTESLA_III_size, - OQS_SIG_alg_qTESLA_III_speed, - OQS_SIG_alg_dilithium_2, - OQS_SIG_alg_dilithium_3, - OQS_SIG_alg_dilithium_4}; + ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALG_IDENTIFIER_START + OQS_SIG_alg_dilithium_2, OQS_SIG_alg_dilithium_3, OQS_SIG_alg_dilithium_4, + ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALG_IDENTIFIER_END + OQS_SIG_alg_picnic_L1_FS, OQS_SIG_alg_picnic_L1_UR, OQS_SIG_alg_picnic_L3_FS, OQS_SIG_alg_picnic_L3_UR, OQS_SIG_alg_picnic_L5_FS, OQS_SIG_alg_picnic_L5_UR, OQS_SIG_alg_picnic2_L1_FS, OQS_SIG_alg_picnic2_L3_FS, OQS_SIG_alg_picnic2_L5_FS, + OQS_SIG_alg_qTESLA_I, OQS_SIG_alg_qTESLA_III_size, OQS_SIG_alg_qTESLA_III_speed}; if (i >= OQS_SIG_algs_length) { return NULL; } else { @@ -44,6 +34,26 @@ OQS_API OQS_SIG *OQS_SIG_new(const char *method_name) { } if (0 == strcasecmp(method_name, OQS_SIG_alg_default)) { return OQS_SIG_new(OQS_SIG_DEFAULT); + ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_NEW_CASE_START + } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_2)) { +#ifdef OQS_ENABLE_SIG_dilithium_2 + return OQS_SIG_dilithium_2_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_3)) { +#ifdef OQS_ENABLE_SIG_dilithium_3 + return OQS_SIG_dilithium_3_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_4)) { +#ifdef OQS_ENABLE_SIG_dilithium_4 + return OQS_SIG_dilithium_4_new(); +#else + return NULL; +#endif + ///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_NEW_CASE_END } else if (0 == strcasecmp(method_name, OQS_SIG_alg_picnic_L1_FS)) { #ifdef OQS_ENABLE_SIG_picnic_L1_FS return OQS_SIG_picnic_L1_FS_new(); @@ -115,24 +125,6 @@ OQS_API OQS_SIG *OQS_SIG_new(const char *method_name) { return OQS_SIG_qTESLA_III_speed_new(); #else return NULL; -#endif - } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_2)) { -#ifdef OQS_ENABLE_SIG_dilithium_2 - return OQS_SIG_dilithium_2_new(); -#else - return NULL; -#endif - } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_3)) { -#ifdef OQS_ENABLE_SIG_dilithium_3 - return OQS_SIG_dilithium_3_new(); -#else - return NULL; -#endif - } else if (0 == strcasecmp(method_name, OQS_SIG_alg_dilithium_4)) { -#ifdef OQS_ENABLE_SIG_dilithium_4 - return OQS_SIG_dilithium_4_new(); -#else - return NULL; #endif // EDIT-WHEN-ADDING-SIG } else { diff --git a/src/sig/sig.h b/src/sig/sig.h index aa05d7d9a..cae1f61ff 100644 --- a/src/sig/sig.h +++ b/src/sig/sig.h @@ -55,16 +55,19 @@ extern "C" { #define OQS_SIG_alg_qTESLA_III_size "qTESLA_III_size" /** Algorithm identifier for qTESLA_III_speed */ #define OQS_SIG_alg_qTESLA_III_speed "qTESLA_III_speed" +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALG_IDENTIFIER_START /** Algorithm identifier for DILITHIUM_2 */ #define OQS_SIG_alg_dilithium_2 "DILITHIUM_2" /** Algorithm identifier for DILITHIUM_3 */ #define OQS_SIG_alg_dilithium_3 "DILITHIUM_3" /** Algorithm identifier for DILITHIUM_4 */ #define OQS_SIG_alg_dilithium_4 "DILITHIUM_4" - +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALG_IDENTIFIER_END // EDIT-WHEN-ADDING-SIG +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALGS_LENGTH_START /** Number of algorithm identifiers above (including default). */ #define OQS_SIG_algs_length 16 +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_ALGS_LENGTH_END /** * Returns identifiers for available signature schemes in liboqs. Used with OQS_SIG_new. @@ -226,7 +229,9 @@ OQS_API void OQS_SIG_free(OQS_SIG *sig); #include #include +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_INCLUDE_START #include +///// OQS_COPY_FROM_PQCLEAN_FRAGMENT_INCLUDE_END // EDIT-WHEN-ADDING-SIG #if defined(__cplusplus)