mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-05 00:05:12 -04:00
More work on signature templating
This commit is contained in:
parent
350880a2b8
commit
ee64cf8bf0
@ -57,12 +57,14 @@ def load_instructions():
|
||||
instructions = yaml.safe_load(instructions)
|
||||
for family in instructions['kems']:
|
||||
family['type'] = 'kem'
|
||||
family['pqclean_type'] = 'kem'
|
||||
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_kem', scheme['pqclean_scheme'], 'META.yml')))
|
||||
scheme['metadata']['ind_cca'] = 'true'
|
||||
for family in instructions['sigs']:
|
||||
family['type'] = 'sig'
|
||||
family['pqclean_type'] = 'sign'
|
||||
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')))
|
||||
@ -71,7 +73,7 @@ def load_instructions():
|
||||
|
||||
instructions = load_instructions()
|
||||
|
||||
for family in instructions['kems']:
|
||||
for family in instructions['kems'] + instructions['sigs']:
|
||||
for scheme in family['schemes']:
|
||||
try:
|
||||
os.mkdir(os.path.join('src', family['type'], family['name']))
|
||||
@ -81,7 +83,7 @@ for family in instructions['kems']:
|
||||
subprocess.run([
|
||||
'cp',
|
||||
'-pr',
|
||||
os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_' + family['type'], scheme['pqclean_scheme'], scheme['implementation']),
|
||||
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_{}_clean'.format(scheme['pqclean_scheme']))
|
||||
])
|
||||
os.remove(os.path.join('src', family['type'], family['name'], 'pqclean_{}_clean'.format(scheme['pqclean_scheme']), 'Makefile'))
|
||||
|
12
scripts/copy_from_pqclean/src/sig/family/Makefile.am
Normal file
12
scripts/copy_from_pqclean/src/sig/family/Makefile.am
Normal file
@ -0,0 +1,12 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
noinst_LTLIBRARIES = libsig{{ family }}.la
|
||||
noinst_LTLIBRARIES += {% for scheme in schemes %}libsig{{ scheme['pqclean_scheme'] }}.la {%endfor %}
|
||||
|
||||
libsig{{ family }}_la_LIBADD = {% for scheme in schemes %}libsig{{ scheme['pqclean_scheme'] }}.la {%endfor %}
|
||||
libsig{{ family }}_la_SOURCES =
|
||||
|
||||
{% for scheme in schemes -%}
|
||||
libsig{{ scheme['pqclean_scheme'] }}_la_SOURCES = sig_{{ scheme['pqclean_scheme'] }}.c {% for source in scheme['sources'] %}pqclean_{{ scheme['pqclean_scheme'] }}_clean/{{ source }} {% endfor %}
|
||||
libsig{{ scheme['pqclean_scheme'] }}_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
{% endfor -%}
|
20
scripts/copy_from_pqclean/src/sig/family/sig_family.h
Normal file
20
scripts/copy_from_pqclean/src/sig/family/sig_family.h
Normal file
@ -0,0 +1,20 @@
|
||||
#ifndef __OQS_SIG_{{ family|upper }}_H
|
||||
#define __OQS_SIG_{{ family|upper }}_H
|
||||
|
||||
#include <oqs/oqs.h>
|
||||
|
||||
{% for scheme in schemes -%}
|
||||
#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}
|
||||
#define OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_public_key {{ scheme['metadata']['length-public-key'] }}
|
||||
#define OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_secret_key {{ scheme['metadata']['length-secret-key'] }}
|
||||
#define OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_signature {{ scheme['metadata']['length-signature'] }}
|
||||
|
||||
OQS_SIG *OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_new();
|
||||
OQS_API OQS_STATUS OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
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);
|
||||
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);
|
||||
#endif
|
||||
|
||||
{% endfor -%}
|
||||
|
||||
#endif
|
46
scripts/copy_from_pqclean/src/sig/family/sig_scheme.c
Normal file
46
scripts/copy_from_pqclean/src/sig/family/sig_scheme.c
Normal file
@ -0,0 +1,46 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/sig_{{ family }}.h>
|
||||
|
||||
{% for scheme in schemes -%}
|
||||
#ifdef OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme'] }}
|
||||
|
||||
OQS_SIG *OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_new() {
|
||||
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
sig->method_name = OQS_SIG_alg_{{ family }}_{{ scheme['scheme'] }};
|
||||
sig->alg_version = "{{ scheme['metadata']['implementations'][0]['version'] }}";
|
||||
|
||||
sig->claimed_nist_level = {{ scheme['metadata']['claimed-nist-level'] }};
|
||||
sig->euf_cma = {{ scheme['metadata']['euf_cma'] }};
|
||||
|
||||
sig->length_public_key = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_keypair;
|
||||
sig->sign = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_sign;
|
||||
sig->verify = OQS_SIG_{{ family }}_{{ scheme['scheme'] }}_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_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']|upper }}_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
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']|upper }}_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
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']|upper }}_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
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']|upper }}_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
||||
{% endfor -%}
|
@ -1,29 +1,16 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
noinst_LTLIBRARIES = libdilithium.la
|
||||
libdilithium_la_LIBADD=
|
||||
libdilithium_la_SOURCES = sig_dilithium.c
|
||||
libdilithium_la_CFLAGS = $(AM_CFLAGS)
|
||||
noinst_LTLIBRARIES = libsigdilithium.la
|
||||
noinst_LTLIBRARIES += libsigdilithium2.la libsigdilithium3.la libsigdilithium4.la
|
||||
|
||||
libsigdilithium_la_LIBADD = libsigdilithium2.la libsigdilithium3.la libsigdilithium4.la
|
||||
libsigdilithium_la_SOURCES =
|
||||
|
||||
noinst_LTLIBRARIES += libdilithium2.la
|
||||
libdilithium_la_LIBADD += libdilithium2.la
|
||||
libsigdilithium2_la_SOURCES = sig_dilithium2.c pqclean_dilithium2_clean/sign.c pqclean_dilithium2_clean/polyvec.c pqclean_dilithium2_clean/poly.c pqclean_dilithium2_clean/packing.c pqclean_dilithium2_clean/ntt.c pqclean_dilithium2_clean/reduce.c pqclean_dilithium2_clean/rounding.c pqclean_dilithium2_clean/symmetric.c
|
||||
libsigdilithium2_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libdilithium2_la_SOURCES = pqclean_dilithium2_clean/ntt.c pqclean_dilithium2_clean/packing.c pqclean_dilithium2_clean/poly.c pqclean_dilithium2_clean/polyvec.c pqclean_dilithium2_clean/reduce.c pqclean_dilithium2_clean/rounding.c pqclean_dilithium2_clean/sign.c pqclean_dilithium2_clean/symmetric.c
|
||||
libdilithium2_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
|
||||
|
||||
noinst_LTLIBRARIES += libdilithium3.la
|
||||
libdilithium_la_LIBADD += libdilithium3.la
|
||||
|
||||
libdilithium3_la_SOURCES = pqclean_dilithium3_clean/ntt.c pqclean_dilithium3_clean/packing.c pqclean_dilithium3_clean/poly.c pqclean_dilithium3_clean/polyvec.c pqclean_dilithium3_clean/reduce.c pqclean_dilithium3_clean/rounding.c pqclean_dilithium3_clean/sign.c pqclean_dilithium3_clean/symmetric.c
|
||||
libdilithium3_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
|
||||
noinst_LTLIBRARIES += libdilithium4.la
|
||||
libdilithium_la_LIBADD += libdilithium4.la
|
||||
|
||||
libdilithium4_la_SOURCES = pqclean_dilithium4_clean/ntt.c pqclean_dilithium4_clean/packing.c pqclean_dilithium4_clean/poly.c pqclean_dilithium4_clean/polyvec.c pqclean_dilithium4_clean/reduce.c pqclean_dilithium4_clean/rounding.c pqclean_dilithium4_clean/sign.c pqclean_dilithium4_clean/symmetric.c
|
||||
libdilithium4_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
libsigdilithium3_la_SOURCES = sig_dilithium3.c pqclean_dilithium3_clean/sign.c pqclean_dilithium3_clean/polyvec.c pqclean_dilithium3_clean/poly.c pqclean_dilithium3_clean/packing.c pqclean_dilithium3_clean/ntt.c pqclean_dilithium3_clean/reduce.c pqclean_dilithium3_clean/rounding.c pqclean_dilithium3_clean/symmetric.c
|
||||
libsigdilithium3_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
libsigdilithium4_la_SOURCES = sig_dilithium4.c pqclean_dilithium4_clean/sign.c pqclean_dilithium4_clean/polyvec.c pqclean_dilithium4_clean/poly.c pqclean_dilithium4_clean/packing.c pqclean_dilithium4_clean/ntt.c pqclean_dilithium4_clean/reduce.c pqclean_dilithium4_clean/rounding.c pqclean_dilithium4_clean/symmetric.c
|
||||
libsigdilithium4_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims
|
||||
|
||||
|
@ -180,10 +180,6 @@ int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(
|
||||
shake256_inc_finalize(&state);
|
||||
shake256_inc_squeeze(mu, CRHBYTES, &state);
|
||||
|
||||
for (i = 0; i < CRHBYTES; ++i) {
|
||||
sig[CRYPTO_BYTES - CRHBYTES + i] = tr[i];
|
||||
}
|
||||
|
||||
crh(rhoprime, key, SEEDBYTES + CRHBYTES);
|
||||
|
||||
/* Expand matrix and transform vectors */
|
||||
|
@ -180,10 +180,6 @@ int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(
|
||||
shake256_inc_finalize(&state);
|
||||
shake256_inc_squeeze(mu, CRHBYTES, &state);
|
||||
|
||||
for (i = 0; i < CRHBYTES; ++i) {
|
||||
sig[CRYPTO_BYTES - CRHBYTES + i] = tr[i];
|
||||
}
|
||||
|
||||
crh(rhoprime, key, SEEDBYTES + CRHBYTES);
|
||||
|
||||
/* Expand matrix and transform vectors */
|
||||
|
@ -180,10 +180,6 @@ int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(
|
||||
shake256_inc_finalize(&state);
|
||||
shake256_inc_squeeze(mu, CRHBYTES, &state);
|
||||
|
||||
for (i = 0; i < CRHBYTES; ++i) {
|
||||
sig[CRYPTO_BYTES - CRHBYTES + i] = tr[i];
|
||||
}
|
||||
|
||||
crh(rhoprime, key, SEEDBYTES + CRHBYTES);
|
||||
|
||||
/* Expand matrix and transform vectors */
|
||||
|
@ -1,126 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/sig_dilithium.h>
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_2
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_2_new() {
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sig->method_name = OQS_SIG_alg_dilithium_2;
|
||||
sig->alg_version = "https://github.com/PQClean/PQClean/commit/e56b2e5556934963cae177062fca17798760afd2";
|
||||
sig->claimed_nist_level = 1;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_2_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_2_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_2_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_2_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_2_sign;
|
||||
sig->verify = OQS_SIG_dilithium_2_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_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_DILITHIUM2_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_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_DILITHIUM2_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_3
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_3_new() {
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sig->method_name = OQS_SIG_alg_dilithium_3;
|
||||
sig->alg_version = "https://github.com/PQClean/PQClean/commit/e56b2e5556934963cae177062fca17798760afd2";
|
||||
sig->claimed_nist_level = 2;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_3_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_3_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_3_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_3_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_3_sign;
|
||||
sig->verify = OQS_SIG_dilithium_3_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_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_DILITHIUM3_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_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_DILITHIUM3_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_4
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_4_new() {
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sig->method_name = OQS_SIG_alg_dilithium_4;
|
||||
sig->alg_version = "https://github.com/PQClean/PQClean/commit/e56b2e5556934963cae177062fca17798760afd2";
|
||||
sig->claimed_nist_level = 3;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_4_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_4_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_4_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_4_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_4_sign;
|
||||
sig->verify = OQS_SIG_dilithium_4_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_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_DILITHIUM4_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_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_DILITHIUM4_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
@ -12,7 +12,6 @@ OQS_SIG *OQS_SIG_dilithium_2_new();
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_3
|
||||
@ -24,7 +23,6 @@ OQS_SIG *OQS_SIG_dilithium_3_new();
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_4
|
||||
@ -36,7 +34,6 @@ OQS_SIG *OQS_SIG_dilithium_4_new();
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_keypair(uint8_t *public_key, uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
44
src/sig/dilithium/sig_dilithium2.c
Normal file
44
src/sig/dilithium/sig_dilithium2.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/sig_dilithium.h>
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_2
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_2_new() {
|
||||
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
sig->method_name = OQS_SIG_alg_dilithium_2;
|
||||
sig->alg_version = "https://github.com/pq-crystals/dilithium/commit/40f79645879b5c69835cd91d06945d7c24f39922";
|
||||
|
||||
sig->claimed_nist_level = 1;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_2_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_2_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_2_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_2_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_2_sign;
|
||||
sig->verify = OQS_SIG_dilithium_2_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM2_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_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_DILITHIUM2_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_2_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_DILITHIUM2_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
44
src/sig/dilithium/sig_dilithium3.c
Normal file
44
src/sig/dilithium/sig_dilithium3.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/sig_dilithium.h>
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_3
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_3_new() {
|
||||
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
sig->method_name = OQS_SIG_alg_dilithium_3;
|
||||
sig->alg_version = "https://github.com/pq-crystals/dilithium/commit/40f79645879b5c69835cd91d06945d7c24f39922";
|
||||
|
||||
sig->claimed_nist_level = 2;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_3_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_3_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_3_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_3_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_3_sign;
|
||||
sig->verify = OQS_SIG_dilithium_3_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM3_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_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_DILITHIUM3_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_3_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_DILITHIUM3_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
44
src/sig/dilithium/sig_dilithium4.c
Normal file
44
src/sig/dilithium/sig_dilithium4.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <oqs/sig_dilithium.h>
|
||||
|
||||
#ifdef OQS_ENABLE_SIG_dilithium_4
|
||||
|
||||
OQS_SIG *OQS_SIG_dilithium_4_new() {
|
||||
|
||||
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
|
||||
if (sig == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
sig->method_name = OQS_SIG_alg_dilithium_4;
|
||||
sig->alg_version = "https://github.com/pq-crystals/dilithium/commit/40f79645879b5c69835cd91d06945d7c24f39922";
|
||||
|
||||
sig->claimed_nist_level = 3;
|
||||
sig->euf_cma = true;
|
||||
|
||||
sig->length_public_key = OQS_SIG_dilithium_4_length_public_key;
|
||||
sig->length_secret_key = OQS_SIG_dilithium_4_length_secret_key;
|
||||
sig->length_signature = OQS_SIG_dilithium_4_length_signature;
|
||||
|
||||
sig->keypair = OQS_SIG_dilithium_4_keypair;
|
||||
sig->sign = OQS_SIG_dilithium_4_sign;
|
||||
sig->verify = OQS_SIG_dilithium_4_verify;
|
||||
|
||||
return sig;
|
||||
}
|
||||
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
||||
int PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
||||
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
||||
return (OQS_STATUS) PQCLEAN_DILITHIUM4_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_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_DILITHIUM4_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
||||
}
|
||||
OQS_API OQS_STATUS OQS_SIG_dilithium_4_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_DILITHIUM4_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
||||
}
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user