Mark relevant functions with OQS_API

This commit is contained in:
Douglas Stebila 2018-10-19 15:54:28 -04:00
parent 8e060a720a
commit c409ce6e78
24 changed files with 299 additions and 177 deletions

7
.gitignore vendored
View File

@ -64,13 +64,6 @@ VisualStudio/**/x64/
VisualStudio/include/
VisualStudio/**/*.user
# External sources
external
!src/sig_picnic/external
src/sig_picnic/external/build/**
src/sig_picnic/external/msbuild/**
/temp/
# Travis files
cmake-3.8.0.tar.gz
cmake-3.8.0/**

View File

@ -1,33 +1,105 @@
LIBRARY oqs
EXPORTS
OQS_MEM_cleanse
OQS_MEM_secure_free
OQS_MEM_insecure_free
OQS_randombytes_switch_algorithm
OQS_randombytes_custom_algorithm
OQS_randombytes
OQS_randombytes_nist_kat_init
OQS_KEM_frodokem_640_aes_keypair
OQS_KEM_frodokem_640_aes_encaps
OQS_KEM_frodokem_640_aes_decaps
OQS_KEM_frodokem_976_aes_keypair
OQS_KEM_frodokem_976_aes_encaps
OQS_KEM_frodokem_976_aes_decaps
OQS_KEM_frodokem_640_cshake_keypair
OQS_KEM_frodokem_640_cshake_encaps
OQS_KEM_frodokem_640_cshake_decaps
OQS_KEM_frodokem_976_cshake_keypair
OQS_KEM_frodokem_976_cshake_encaps
OQS_KEM_frodokem_976_cshake_decaps
OQS_KEM_alg_identifier
OQS_KEM_new
OQS_KEM_keypair
OQS_KEM_encaps
OQS_KEM_decaps
OQS_KEM_free
OQS_KEM_bike1_l1_decaps
OQS_KEM_bike1_l1_encaps
OQS_KEM_bike1_l1_keypair
OQS_KEM_bike1_l3_decaps
OQS_KEM_bike1_l3_encaps
OQS_KEM_bike1_l3_keypair
OQS_KEM_bike1_l5_decaps
OQS_KEM_bike1_l5_encaps
OQS_KEM_bike1_l5_keypair
OQS_KEM_bike2_l1_decaps
OQS_KEM_bike2_l1_encaps
OQS_KEM_bike2_l1_keypair
OQS_KEM_bike2_l3_decaps
OQS_KEM_bike2_l3_encaps
OQS_KEM_bike2_l3_keypair
OQS_KEM_bike2_l5_decaps
OQS_KEM_bike2_l5_encaps
OQS_KEM_bike2_l5_keypair
OQS_KEM_bike3_l1_decaps
OQS_KEM_bike3_l1_encaps
OQS_KEM_bike3_l1_keypair
OQS_KEM_bike3_l3_decaps
OQS_KEM_bike3_l3_encaps
OQS_KEM_bike3_l3_keypair
OQS_KEM_bike3_l5_decaps
OQS_KEM_bike3_l5_encaps
OQS_KEM_bike3_l5_keypair
OQS_KEM_frodokem_640_aes_decaps
OQS_KEM_frodokem_640_aes_encaps
OQS_KEM_frodokem_640_aes_keypair
OQS_KEM_frodokem_640_cshake_decaps
OQS_KEM_frodokem_640_cshake_encaps
OQS_KEM_frodokem_640_cshake_keypair
OQS_KEM_frodokem_976_aes_decaps
OQS_KEM_frodokem_976_aes_encaps
OQS_KEM_frodokem_976_aes_keypair
OQS_KEM_frodokem_976_cshake_decaps
OQS_KEM_frodokem_976_cshake_encaps
OQS_KEM_frodokem_976_cshake_keypair
OQS_KEM_newhope_1024_cca_kem_decaps
OQS_KEM_newhope_1024_cca_kem_encaps
OQS_KEM_newhope_1024_cca_kem_keypair
OQS_KEM_newhope_512_cca_kem_decaps
OQS_KEM_newhope_512_cca_kem_encaps
OQS_KEM_newhope_512_cca_kem_keypair
OQS_KEM_sidh_p503_decaps
OQS_KEM_sidh_p503_encaps
OQS_KEM_sidh_p503_keypair
OQS_KEM_sidh_p751_decaps
OQS_KEM_sidh_p751_encaps
OQS_KEM_sidh_p751_keypair
OQS_KEM_sike_p503_decaps
OQS_KEM_sike_p503_encaps
OQS_KEM_sike_p503_keypair
OQS_KEM_sike_p751_decaps
OQS_KEM_sike_p751_encaps
OQS_KEM_sike_p751_keypair
OQS_MEM_cleanse
OQS_MEM_insecure_free
OQS_MEM_secure_free
OQS_randombytes
OQS_randombytes_custom_algorithm
OQS_randombytes_nist_kat_init
OQS_randombytes_switch_algorithm
OQS_SIG_alg_identifier
OQS_SIG_new
OQS_SIG_keypair
OQS_SIG_sign
OQS_SIG_verify
OQS_SIG_free
OQS_SIG_picnic_L1_FS_keypair
OQS_SIG_picnic_L1_FS_sign
OQS_SIG_picnic_L1_FS_verify
OQS_SIG_picnic_L1_UR_keypair
OQS_SIG_picnic_L1_UR_sign
OQS_SIG_picnic_L1_UR_verify
OQS_SIG_picnic_L3_FS_keypair
OQS_SIG_picnic_L3_FS_sign
OQS_SIG_picnic_L3_FS_verify
OQS_SIG_picnic_L3_UR_keypair
OQS_SIG_picnic_L3_UR_sign
OQS_SIG_picnic_L3_UR_verify
OQS_SIG_picnic_L5_FS_keypair
OQS_SIG_picnic_L5_FS_sign
OQS_SIG_picnic_L5_FS_verify
OQS_SIG_picnic_L5_UR_keypair
OQS_SIG_picnic_L5_UR_sign
OQS_SIG_picnic_L5_UR_verify
OQS_SIG_qTESLA_I_keypair
OQS_SIG_qTESLA_I_sign
OQS_SIG_qTESLA_I_verify
OQS_SIG_qTESLA_III_size_keypair
OQS_SIG_qTESLA_III_size_sign
OQS_SIG_qTESLA_III_size_verify
OQS_SIG_qTESLA_III_speed_keypair
OQS_SIG_qTESLA_III_speed_sign
OQS_SIG_qTESLA_III_speed_verify

View File

@ -31,7 +31,7 @@ Implementation
--------------
- **Source of implementation:** http://bikesuite.org/#implementation
- **Implementation version:** 1.0.0
- **Implementation version:** Additional implementation: 05/23/2018; reference implementation: 06/29/2018 (with NTL calls replaced by OpenSSL calls and the decoder of the additional implementation)
- **License:** MIT License
- **Language:** C
- **Constant-time:** No

View File

@ -1,5 +1,5 @@
AUTOMAKE_OPTIONS = foreign
noinst_LTLIBRARIES = libkembike.la
noinst_LTLIBRARIES = libkembike.la
noinst_LTLIBRARIES += libkembike1_l1.la libkembike1_l3.la libkembike1_l5.la
noinst_LTLIBRARIES += libkembike2_l1.la libkembike2_l3.la libkembike2_l5.la
noinst_LTLIBRARIES += libkembike3_l1.la libkembike3_l3.la libkembike3_l5.la
@ -8,7 +8,7 @@ libkembike_la_LIBADD = libkembike1_l1.la libkembike1_l3.la libkembike1_l5.la
libkembike_la_LIBADD += libkembike2_l1.la libkembike2_l3.la libkembike2_l5.la
libkembike_la_LIBADD += libkembike3_l1.la libkembike3_l3.la libkembike3_l5.la
libkembike_la_SOURCES = kem_bike.c
libkembike_la_SOURCES = kem_bike.c
COMMON_FLAGS = $(AM_CFLAGS) -include functions_renaming.h
libkembike_la_CFLAGS = $(COMMON_FLAGS)
@ -17,12 +17,14 @@ libkembike_la_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS)
#When AVX2 is supported also AVX512 is supported and we can use the additional implementation.
if BIKE_ADDITIONAL_IMPL
BIKE_SRC_DIR=x86_64/
libkembike_la_CFLAGS += -DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION
else
BIKE_SRC_DIR=ref/
libkembike_la_CFLAGS += -DOQS_KEM_BIKE_REFERENCE_IMPLEMENTATION
endif
COMMON_CSRCS = $(BIKE_SRC_DIR)/kem.c $(BIKE_SRC_DIR)/aes_ctr_prf.c $(BIKE_SRC_DIR)/parallel_hash.c
COMMON_CSRCS += $(BIKE_SRC_DIR)/sampling.c $(BIKE_SRC_DIR)/utilities.c $(BIKE_SRC_DIR)/decode.c $(BIKE_SRC_DIR)/openssl_utils.c
COMMON_CSRCS = $(BIKE_SRC_DIR)/kem.c $(BIKE_SRC_DIR)/aes_ctr_prf.c $(BIKE_SRC_DIR)/parallel_hash.c
COMMON_CSRCS += $(BIKE_SRC_DIR)/sampling.c $(BIKE_SRC_DIR)/utilities.c $(BIKE_SRC_DIR)/decode.c $(BIKE_SRC_DIR)/openssl_utils.c
if BIKE_ADDITIONAL_IMPL
@ -32,7 +34,7 @@ if BIKE_ADDITIONAL_IMPL
COMMON_CSRCS += $(BIKE_SRC_DIR)/sha384_update_mb.S $(BIKE_SRC_DIR)/red.S
COMMON_CSRCS += $(BIKE_SRC_DIR)/sampling_x86_64.S $(BIKE_SRC_DIR)/decode_x86_64.S
else
COMMON_CSRCS += $(BIKE_SRC_DIR)/conversions.c
COMMON_CSRCS += $(BIKE_SRC_DIR)/conversions.c
endif
libkembike1_l1_la_SOURCES = $(COMMON_CSRCS)

View File

@ -11,7 +11,13 @@ OQS_KEM *OQS_KEM_bike1_l1_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike1_l1;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 1;
kem->ind_cca = false;
@ -39,7 +45,13 @@ OQS_KEM *OQS_KEM_bike1_l3_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike1_l3;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 3;
kem->ind_cca = false;
@ -67,7 +79,13 @@ OQS_KEM *OQS_KEM_bike1_l5_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike1_l5;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 5;
kem->ind_cca = false;
@ -95,7 +113,13 @@ OQS_KEM *OQS_KEM_bike2_l1_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike2_l1;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 1;
kem->ind_cca = false;
@ -123,7 +147,13 @@ OQS_KEM *OQS_KEM_bike2_l3_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike2_l3;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 3;
kem->ind_cca = false;
@ -151,7 +181,13 @@ OQS_KEM *OQS_KEM_bike2_l5_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike2_l5;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 5;
kem->ind_cca = false;
@ -179,7 +215,13 @@ OQS_KEM *OQS_KEM_bike3_l1_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike3_l1;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 1;
kem->ind_cca = false;
@ -207,7 +249,13 @@ OQS_KEM *OQS_KEM_bike3_l3_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike3_l3;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 3;
kem->ind_cca = false;
@ -235,7 +283,13 @@ OQS_KEM *OQS_KEM_bike3_l5_new() {
return NULL;
}
kem->method_name = OQS_KEM_alg_bike3_l5;
kem->alg_version = "TODO";
#if defined(OQS_KEM_BIKE_REFERENCE_IMPLEMENTATION)
kem->alg_version = "Reference - 06/29/2018";
#elif defined(DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION)
kem->alg_version = "Additional - 05/23/2018";
#else
#error "BIKE version macro not specified correctly"
#endif
kem->claimed_nist_level = 5;
kem->ind_cca = false;

View File

@ -21,12 +21,12 @@
OQS_KEM *OQS_KEM_bike1_l1_new();
OQS_STATUS OQS_KEM_bike1_l1_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike1_l1_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike1_l1_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike1_l1_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike1_l1_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike1_l1_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -49,12 +49,12 @@ OQS_STATUS OQS_KEM_bike1_l1_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike1_l3_new();
OQS_STATUS OQS_KEM_bike1_l3_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike1_l3_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike1_l3_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike1_l3_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike1_l3_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike1_l3_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -77,12 +77,12 @@ OQS_STATUS OQS_KEM_bike1_l3_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike1_l5_new();
OQS_STATUS OQS_KEM_bike1_l5_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike1_l5_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike1_l5_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike1_l5_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike1_l5_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike1_l5_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -107,12 +107,12 @@ OQS_STATUS OQS_KEM_bike1_l5_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike2_l1_new();
OQS_STATUS OQS_KEM_bike2_l1_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike2_l1_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike2_l1_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike2_l1_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike2_l1_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike2_l1_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -138,12 +138,12 @@ OQS_STATUS OQS_KEM_bike2_l1_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike2_l3_new();
OQS_STATUS OQS_KEM_bike2_l3_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike2_l3_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike2_l3_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike2_l3_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike2_l3_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike2_l3_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -169,12 +169,12 @@ OQS_STATUS OQS_KEM_bike2_l3_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike2_l5_new();
OQS_STATUS OQS_KEM_bike2_l5_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike2_l5_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike2_l5_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike2_l5_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike2_l5_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike2_l5_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -198,12 +198,12 @@ OQS_STATUS OQS_KEM_bike2_l5_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike3_l1_new();
OQS_STATUS OQS_KEM_bike3_l1_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike3_l1_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike3_l1_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike3_l1_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike3_l1_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike3_l1_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -226,12 +226,12 @@ OQS_STATUS OQS_KEM_bike3_l1_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike3_l3_new();
OQS_STATUS OQS_KEM_bike3_l3_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike3_l3_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike3_l3_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike3_l3_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike3_l3_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike3_l3_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
@ -254,12 +254,12 @@ OQS_STATUS OQS_KEM_bike3_l3_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_bike3_l5_new();
OQS_STATUS OQS_KEM_bike3_l5_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_bike3_l5_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_bike3_l5_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_bike3_l5_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_bike3_l5_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_bike3_l5_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);

View File

@ -169,7 +169,7 @@ EXIT:
////////////////////////////////////////////////////////////////
// The three APIs below (keypair, enc, dec) are defined by NIST:
////////////////////////////////////////////////////////////////
OQS_STATUS keypair(OUT unsigned char *pk, OUT unsigned char *sk) {
OQS_API OQS_STATUS keypair(OUT unsigned char *pk, OUT unsigned char *sk) {
// Convert to this implementation types
sk_t *l_sk = (sk_t *) sk;
pk_t *l_pk = (pk_t *) pk;
@ -256,7 +256,7 @@ EXIT:
// Encapsulate - pk is the public key,
// ct is a key encapsulation message (ciphertext),
// ss is the shared secret.
OQS_STATUS encaps(OUT unsigned char *ct,
OQS_API OQS_STATUS encaps(OUT unsigned char *ct,
OUT unsigned char *ss,
IN const unsigned char *pk) {
DMSG(" Enter crypto_kem_enc.\n");
@ -322,7 +322,7 @@ EXIT:
// Decapsulate - ct is a key encapsulation message (ciphertext),
// sk is the private key,
// ss is the shared secret
OQS_STATUS decaps(OUT unsigned char *ss,
OQS_API OQS_STATUS decaps(OUT unsigned char *ss,
IN const unsigned char *ct,
IN const unsigned char *sk) {
DMSG(" Enter crypto_kem_dec.\n");

View File

@ -1,5 +1,5 @@
/***************************************************************************
* Additional implementation of "BIKE: Bit Flipping Key Encapsulation".
* Additional implementation of "BIKE: Bit Flipping Key Encapsulation".
* Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Written by Nir Drucker and Shay Gueron
@ -307,7 +307,7 @@ _INLINE_ void get_ss(OUT ss_t *out, IN const e_t *e) {
////////////////////////////////////////////////////////////////
// The three APIs below (keygeneration, encapsulate, decapsulate) are defined by NIST:
////////////////////////////////////////////////////////////////
int keypair(OUT unsigned char *pk, OUT unsigned char *sk) {
OQS_API OQS_STATUS keypair(OUT unsigned char *pk, OUT unsigned char *sk) {
// Convert to this implementation types
sk_t *l_sk = (sk_t *) sk;
pk_t *l_pk = (pk_t *) pk;
@ -390,7 +390,7 @@ EXIT:
// Encapsulate - pk is the public key,
// ct is a key encapsulation message (ciphertext),
// ss is the shared secret.
int encaps(OUT unsigned char *ct,
OQS_API OQS_STATUS encaps(OUT unsigned char *ct,
OUT unsigned char *ss,
IN const unsigned char *pk) {
DMSG(" Enter crypto_kem_enc.\n");
@ -463,7 +463,7 @@ EXIT:
// Decapsulate - ct is a key encapsulation message (ciphertext),
// sk is the private key,
// ss is the shared secret
int decaps(OUT unsigned char *ss,
OQS_API OQS_STATUS decaps(OUT unsigned char *ss,
IN const unsigned char *ct,
IN const unsigned char *sk) {
OQS_STATUS res = OQS_SUCCESS;

View File

@ -12,12 +12,12 @@
OQS_KEM *OQS_KEM_newhope_512_cca_kem_new();
OQS_STATUS OQS_KEM_newhope_512_cca_kem_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_newhope_512_cca_kem_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_newhope_512_cca_kem_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_newhope_512_cca_kem_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_newhope_512_cca_kem_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_newhope_512_cca_kem_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
#endif
@ -31,12 +31,12 @@ OQS_STATUS OQS_KEM_newhope_512_cca_kem_decaps(uint8_t *shared_secret,
OQS_KEM *OQS_KEM_newhope_1024_cca_kem_new();
OQS_STATUS OQS_KEM_newhope_1024_cca_kem_keypair(uint8_t *public_key,
OQS_API OQS_STATUS OQS_KEM_newhope_1024_cca_kem_keypair(uint8_t *public_key,
uint8_t *secret_key);
OQS_STATUS OQS_KEM_newhope_1024_cca_kem_encaps(uint8_t *ciphertext,
OQS_API OQS_STATUS OQS_KEM_newhope_1024_cca_kem_encaps(uint8_t *ciphertext,
uint8_t *shared_secret,
const uint8_t *public_key);
OQS_STATUS OQS_KEM_newhope_1024_cca_kem_decaps(uint8_t *shared_secret,
OQS_API OQS_STATUS OQS_KEM_newhope_1024_cca_kem_decaps(uint8_t *shared_secret,
const unsigned char *ciphertext,
const uint8_t *secret_key);
#endif

View File

@ -19,7 +19,7 @@
*
* Returns 0 (success)
**************************************************/
int crypto_kem_keypair(unsigned char *pk, unsigned char *sk) {
OQS_API OQS_STATUS crypto_kem_keypair(unsigned char *pk, unsigned char *sk) {
size_t i;
cpapke_keypair(pk, sk);
@ -34,7 +34,7 @@ int crypto_kem_keypair(unsigned char *pk, unsigned char *sk) {
OQS_randombytes(sk, NEWHOPE_SYMBYTES); /* Append the value s for pseudo-random output on reject */
return 0;
return OQS_SUCCESS;
}
/*************************************************
@ -49,7 +49,7 @@ int crypto_kem_keypair(unsigned char *pk, unsigned char *sk) {
*
* Returns 0 (success)
**************************************************/
int crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk) {
OQS_API OQS_STATUS crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk) {
unsigned char k_coins_d[3 * NEWHOPE_SYMBYTES]; /* Will contain key, coins, qrom-hash */
unsigned char buf[2 * NEWHOPE_SYMBYTES];
int i;
@ -67,7 +67,7 @@ int crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk
OQS_SHA3_shake256(k_coins_d + NEWHOPE_SYMBYTES, NEWHOPE_SYMBYTES, ct, NEWHOPE_CCAKEM_CIPHERTEXTBYTES); /* overwrite coins in k_coins_d with h(c) */
OQS_SHA3_shake256(ss, NEWHOPE_SYMBYTES, k_coins_d, 2 * NEWHOPE_SYMBYTES); /* hash concatenation of pre-k and h(c) to ss */
return 0;
return OQS_SUCCESS;
}
/*************************************************
@ -84,7 +84,7 @@ int crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk
*
* On failure, ss will contain a randomized value.
**************************************************/
int crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk) {
OQS_API OQS_STATUS crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk) {
int i, fail;
unsigned char ct_cmp[NEWHOPE_CCAKEM_CIPHERTEXTBYTES];
unsigned char buf[2 * NEWHOPE_SYMBYTES];
@ -108,5 +108,6 @@ int crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned ch
cmov(k_coins_d, sk + NEWHOPE_CCAKEM_SECRETKEYBYTES - NEWHOPE_SYMBYTES, NEWHOPE_SYMBYTES, fail); /* Overwrite pre-k with z on re-encryption failure */
OQS_SHA3_shake256(ss, NEWHOPE_SYMBYTES, k_coins_d, 2 * NEWHOPE_SYMBYTES); /* hash concatenation of pre-k and h(c) to k */
return -fail;
return (OQS_STATUS) -fail;
}

View File

@ -111,14 +111,14 @@ OQS_KEM *OQS_KEM_sidh_p503_new() {
}
/* Forward KEM API calls to SIDH's API */
OQS_STATUS OQS_KEM_sidh_p503_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p503_keypair(uint8_t *public_key, uint8_t *secret_key) {
if (oqs_kem_sidh_p503_EphemeralKeyGeneration_A((unsigned char *) secret_key, (unsigned char *) public_key) != 0) {
return OQS_ERROR;
}
return OQS_SUCCESS;
}
OQS_STATUS OQS_KEM_sidh_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) {
OQS_STATUS ret = OQS_ERROR;
unsigned char *secret_key = malloc(OQS_KEM_sidh_p503_length_secret_key);
if (oqs_kem_sidh_p503_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) {
@ -141,7 +141,7 @@ cleanup:
return ret;
}
OQS_STATUS OQS_KEM_sidh_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) {
if (oqs_kem_sidh_p503_EphemeralSecretAgreement_A((unsigned char *) secret_key, (unsigned char *) ciphertext, (unsigned char *) shared_secret) != 0) {
return OQS_ERROR;
}
@ -189,14 +189,14 @@ OQS_KEM *OQS_KEM_sidh_p751_new() {
}
/* Forward KEM API calls to SIDH's API */
OQS_STATUS OQS_KEM_sidh_p751_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p751_keypair(uint8_t *public_key, uint8_t *secret_key) {
if (oqs_kem_sidh_p751_EphemeralKeyGeneration_A((unsigned char *) secret_key, (unsigned char *) public_key) != 0) {
return OQS_ERROR;
}
return OQS_SUCCESS;
}
OQS_STATUS OQS_KEM_sidh_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) {
OQS_STATUS ret = OQS_ERROR;
unsigned char *secret_key = malloc(OQS_KEM_sidh_p751_length_secret_key);
if (oqs_kem_sidh_p751_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) {
@ -219,7 +219,7 @@ cleanup:
return ret;
}
OQS_STATUS OQS_KEM_sidh_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_KEM_sidh_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) {
if (oqs_kem_sidh_p751_EphemeralSecretAgreement_A((unsigned char *) secret_key, (unsigned char *) ciphertext, (unsigned char *) shared_secret) != 0) {
return OQS_ERROR;
}

View File

@ -12,9 +12,9 @@
OQS_KEM *OQS_KEM_sike_p503_new();
OQS_STATUS OQS_KEM_sike_p503_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_KEM_sike_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_STATUS OQS_KEM_sike_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sike_p503_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sike_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_KEM_sike_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif
@ -27,9 +27,9 @@ OQS_STATUS OQS_KEM_sike_p503_decaps(uint8_t *shared_secret, const unsigned char
OQS_KEM *OQS_KEM_sike_p751_new();
OQS_STATUS OQS_KEM_sike_p751_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_KEM_sike_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_STATUS OQS_KEM_sike_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sike_p751_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sike_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_KEM_sike_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif
@ -42,9 +42,9 @@ OQS_STATUS OQS_KEM_sike_p751_decaps(uint8_t *shared_secret, const unsigned char
OQS_KEM *OQS_KEM_sidh_p503_new();
OQS_STATUS OQS_KEM_sidh_p503_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_KEM_sidh_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_STATUS OQS_KEM_sidh_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p503_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p503_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p503_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif
@ -57,9 +57,9 @@ OQS_STATUS OQS_KEM_sidh_p503_decaps(uint8_t *shared_secret, const unsigned char
OQS_KEM *OQS_KEM_sidh_p751_new();
OQS_STATUS OQS_KEM_sidh_p751_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_KEM_sidh_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_STATUS OQS_KEM_sidh_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p751_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p751_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_KEM_sidh_p751_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif

View File

@ -8,7 +8,7 @@
#include <oqs/common.h>
#include <oqs/sha3.h>
OQS_STATUS crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { // SIKE's key generation
OQS_API OQS_STATUS crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { // SIKE's key generation
// Outputs: secret key sk (CRYPTO_SECRETKEYBYTES = MSG_BYTES + SECRETKEY_B_BYTES + CRYPTO_PUBLICKEYBYTES bytes)
// public key pk (CRYPTO_PUBLICKEYBYTES bytes)
@ -25,7 +25,7 @@ OQS_STATUS crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { // SIKE's
return OQS_SUCCESS;
}
OQS_STATUS crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk) { // SIKE's encapsulation
OQS_API OQS_STATUS crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk) { // SIKE's encapsulation
// Input: public key pk (CRYPTO_PUBLICKEYBYTES bytes)
// Outputs: shared secret ss (CRYPTO_BYTES bytes)
// ciphertext message ct (CRYPTO_CIPHERTEXTBYTES = CRYPTO_PUBLICKEYBYTES + MSG_BYTES bytes)
@ -58,7 +58,7 @@ OQS_STATUS crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned c
return OQS_SUCCESS;
}
OQS_STATUS crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk) { // SIKE's decapsulation
OQS_API OQS_STATUS crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk) { // SIKE's decapsulation
// Input: secret key sk (CRYPTO_SECRETKEYBYTES = MSG_BYTES + SECRETKEY_B_BYTES + CRYPTO_PUBLICKEYBYTES bytes)
// ciphertext message ct (CRYPTO_CIPHERTEXTBYTES = CRYPTO_PUBLICKEYBYTES + MSG_BYTES bytes)
// Outputs: shared secret ss (CRYPTO_BYTES bytes)

View File

@ -106,15 +106,15 @@ OQS_SIG *OQS_SIG_picnic_L1_FS_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L1_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L1_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L1_FS, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L1_FS_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_picnic_L1_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L1_FS, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L1_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L1_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L1_FS, public_key, message, message_len, signature, signature_len);
}
@ -145,15 +145,15 @@ OQS_SIG *OQS_SIG_picnic_L1_UR_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L1_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L1_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L1_UR, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L1_UR_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_picnic_L1_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L1_UR, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L1_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L1_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L1_UR, public_key, message, message_len, signature, signature_len);
}
@ -184,15 +184,15 @@ OQS_SIG *OQS_SIG_picnic_L3_FS_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L3_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L3_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L3_FS, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L3_FS_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_picnic_L3_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L3_FS, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L3_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L3_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L3_FS, public_key, message, message_len, signature, signature_len);
}
@ -223,15 +223,15 @@ OQS_SIG *OQS_SIG_picnic_L3_UR_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L3_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L3_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L3_UR, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L3_UR_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_picnic_L3_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L3_UR, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L3_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L3_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L3_UR, public_key, message, message_len, signature, signature_len);
}
@ -262,15 +262,15 @@ OQS_SIG *OQS_SIG_picnic_L5_FS_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L5_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L5_FS_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L5_FS, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L5_FS_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_picnic_L5_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L5_FS, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L5_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L5_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L5_FS, public_key, message, message_len, signature, signature_len);
}
@ -302,15 +302,15 @@ OQS_SIG *OQS_SIG_picnic_L5_UR_new() {
return sig;
}
OQS_STATUS OQS_SIG_picnic_L5_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L5_UR_keypair(uint8_t *public_key, uint8_t *secret_key) {
return common_picnic_keypair(Picnic_L5_UR, secret_key, public_key);
}
OQS_STATUS OQS_SIG_picnic_L5_UR_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_picnic_L5_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
return common_picnic_sign(Picnic_L5_UR, secret_key, message, message_len, signature, signature_len);
}
OQS_STATUS OQS_SIG_picnic_L5_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
OQS_API OQS_STATUS OQS_SIG_picnic_L5_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
return common_picnic_verify(Picnic_L5_UR, public_key, message, message_len, signature, signature_len);
}

View File

@ -11,9 +11,9 @@
OQS_SIG *OQS_SIG_picnic_L1_FS_new();
OQS_STATUS OQS_SIG_picnic_L1_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L1_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L1_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L1_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L1_FS_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_picnic_L1_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif
@ -25,9 +25,9 @@ OQS_STATUS OQS_SIG_picnic_L1_FS_verify(const uint8_t *message, size_t message_le
OQS_SIG *OQS_SIG_picnic_L1_UR_new();
OQS_STATUS OQS_SIG_picnic_L1_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L1_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L1_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L1_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L1_UR_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_picnic_L1_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif
@ -39,9 +39,9 @@ OQS_STATUS OQS_SIG_picnic_L1_UR_verify(const uint8_t *message, size_t message_le
OQS_SIG *OQS_SIG_picnic_L3_FS_new();
OQS_STATUS OQS_SIG_picnic_L3_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L3_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L3_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L3_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L3_FS_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_picnic_L3_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif
@ -53,9 +53,9 @@ OQS_STATUS OQS_SIG_picnic_L3_FS_verify(const uint8_t *message, size_t message_le
OQS_SIG *OQS_SIG_picnic_L3_UR_new();
OQS_STATUS OQS_SIG_picnic_L3_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L3_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L3_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L3_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L3_UR_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_picnic_L3_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif
@ -67,9 +67,9 @@ OQS_STATUS OQS_SIG_picnic_L3_UR_verify(const uint8_t *message, size_t message_le
OQS_SIG *OQS_SIG_picnic_L5_FS_new();
OQS_STATUS OQS_SIG_picnic_L5_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L5_FS_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L5_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L5_FS_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L5_FS_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_picnic_L5_FS_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif
@ -81,9 +81,9 @@ OQS_STATUS OQS_SIG_picnic_L5_FS_verify(const uint8_t *message, size_t message_le
OQS_SIG *OQS_SIG_picnic_L5_UR_new();
OQS_STATUS OQS_SIG_picnic_L5_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L5_UR_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
OQS_STATUS OQS_SIG_picnic_L5_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L5_UR_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_picnic_L5_UR_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_picnic_L5_UR_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
#endif

View File

@ -1839,14 +1839,14 @@ static void sparse_mul32(poly prod, const int32_t *pk, const uint32_t pos_list[P
#include "qTESLA_api.c"
OQS_API int OQS_SIG_qTESLA_I_keypair(unsigned char *pk, unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_keypair(unsigned char *pk, unsigned char *sk) {
return crypto_sign_keypair(pk, sk);
}
OQS_API int OQS_SIG_qTESLA_I_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
return crypto_sign(sm, smlen, m, mlen, sk);
}
OQS_API int OQS_SIG_qTESLA_I_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
return crypto_verify(m, mlen, sm, smlen, pk);
}

View File

@ -1,13 +1,13 @@
OQS_API int OQS_SIG_qTESLA_I_keypair(
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_keypair(
unsigned char *,
unsigned char *);
OQS_API int OQS_SIG_qTESLA_I_sign(
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_sign(
unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long,
const unsigned char *);
OQS_API int OQS_SIG_qTESLA_I_verify(
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_verify(
unsigned char *, unsigned long long,
const unsigned char *, unsigned long long,
const unsigned char *);

View File

@ -2878,14 +2878,14 @@ static void sparse_mul32(poly prod, const int32_t *pk, const uint32_t pos_list[P
#include "qTESLA_api.c"
OQS_API int OQS_SIG_qTESLA_III_size_keypair(unsigned char *pk, unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_keypair(unsigned char *pk, unsigned char *sk) {
return crypto_sign_keypair(pk, sk);
}
OQS_API int OQS_SIG_qTESLA_III_size_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
return crypto_sign(sm, smlen, m, mlen, sk);
}
OQS_API int OQS_SIG_qTESLA_III_size_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
return crypto_verify(m, mlen, sm, smlen, pk);
}

View File

@ -1,13 +1,13 @@
OQS_API int OQS_SIG_qTESLA_III_size_keypair(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_keypair(
unsigned char *,
unsigned char *);
OQS_API int OQS_SIG_qTESLA_III_size_sign(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_sign(
unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long,
const unsigned char *);
OQS_API int OQS_SIG_qTESLA_III_size_verify(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_verify(
unsigned char *, unsigned long long,
const unsigned char *, unsigned long long,
const unsigned char *);

View File

@ -2804,14 +2804,14 @@ static void sparse_mul32(poly prod, const int32_t *pk, const uint32_t pos_list[P
#include "qTESLA_api.c"
OQS_API int OQS_SIG_qTESLA_III_speed_keypair(unsigned char *pk, unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_keypair(unsigned char *pk, unsigned char *sk) {
return crypto_sign_keypair(pk, sk);
}
OQS_API int OQS_SIG_qTESLA_III_speed_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
return crypto_sign(sm, smlen, m, mlen, sk);
}
OQS_API int OQS_SIG_qTESLA_III_speed_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
return crypto_verify(m, mlen, sm, smlen, pk);
}

View File

@ -1,13 +1,13 @@
OQS_API int OQS_SIG_qTESLA_III_speed_keypair(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_keypair(
unsigned char *,
unsigned char *);
OQS_API int OQS_SIG_qTESLA_III_speed_sign(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_sign(
unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long,
const unsigned char *);
OQS_API int OQS_SIG_qTESLA_III_speed_verify(
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_verify(
unsigned char *, unsigned long long,
const unsigned char *, unsigned long long,
const unsigned char *);

View File

@ -9,7 +9,7 @@
* - unsigned char *sk: secret key
* Returns: 0 for successful execution
**********************************************************/
static int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) {
static OQS_STATUS crypto_sign_keypair(unsigned char *pk, unsigned char *sk) {
unsigned char randomness[CRYPTO_RANDOMBYTES], randomness_extended[4 * CRYPTO_SEEDBYTES];
poly s, e, a, t;
int nonce = 0; // Initialize domain separator for error and secret polynomials
@ -50,7 +50,7 @@ static int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) {
pack_sk(sk, s, e, &randomness_extended[2 * CRYPTO_SEEDBYTES]);
encode_pk(pk, t, &randomness_extended[2 * CRYPTO_SEEDBYTES]);
return 0;
return OQS_SUCCESS;
}
/***************************************************************
@ -66,7 +66,7 @@ static int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) {
* - unsigned long long *smlen: signature length*
* Returns: 0 for successful execution
***************************************************************/
static int crypto_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
static OQS_STATUS crypto_sign(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long mlen, const unsigned char *sk) {
unsigned char c[CRYPTO_C_BYTES], randomness[CRYPTO_SEEDBYTES], randomness_input[CRYPTO_RANDOMBYTES + CRYPTO_SEEDBYTES + mlen];
uint32_t pos_list[PARAM_W];
int16_t sign_list[PARAM_W];
@ -122,7 +122,7 @@ static int crypto_sign(unsigned char *sm, unsigned long long *smlen, const unsig
*smlen = CRYPTO_BYTES;
encode_sig(sm, c, z);
return 0;
return OQS_SUCCESS;
}
}
@ -139,7 +139,7 @@ static int crypto_sign(unsigned char *sm, unsigned long long *smlen, const unsig
* Returns: 0 for valid signature
* <0 for invalid signature
************************************************************/
static int crypto_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
static OQS_STATUS crypto_verify(unsigned char *m, unsigned long long mlen, const unsigned char *sm, unsigned long long smlen, const unsigned char *pk) {
unsigned char c[CRYPTO_C_BYTES], c_sig[CRYPTO_C_BYTES], seed[CRYPTO_SEEDBYTES];
uint32_t pos_list[PARAM_W];
int16_t sign_list[PARAM_W];
@ -147,11 +147,11 @@ static int crypto_verify(unsigned char *m, unsigned long long mlen, const unsign
poly w, z, a, Tc;
if (smlen < CRYPTO_BYTES)
return -1;
return OQS_ERROR;
decode_sig(c, z, sm);
if (test_z(z) != 0)
return -2; // Check norm of z
return OQS_ERROR; // Check norm of z
decode_pk((int32_t *) pk_t, seed, pk);
poly_uniform(a, seed);
encode_c(pos_list, sign_list, c);
@ -162,7 +162,7 @@ static int crypto_verify(unsigned char *m, unsigned long long mlen, const unsign
// Check if the calculated c matches c from the signature
if (memcmp(c, c_sig, CRYPTO_C_BYTES))
return -3;
return OQS_ERROR;
return 0;
return OQS_SUCCESS;
}

View File

@ -4,7 +4,7 @@
#ifdef OQS_ENABLE_SIG_qTESLA_I
OQS_API OQS_SIG *OQS_SIG_qTESLA_I_new() {
OQS_SIG *OQS_SIG_qTESLA_I_new() {
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) {
@ -31,7 +31,7 @@ OQS_API OQS_SIG *OQS_SIG_qTESLA_I_new() {
#ifdef OQS_ENABLE_SIG_qTESLA_III_size
OQS_API OQS_SIG *OQS_SIG_qTESLA_III_size_new() {
OQS_SIG *OQS_SIG_qTESLA_III_size_new() {
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) {
@ -58,7 +58,7 @@ OQS_API OQS_SIG *OQS_SIG_qTESLA_III_size_new() {
#ifdef OQS_ENABLE_SIG_qTESLA_III_speed
OQS_API OQS_SIG *OQS_SIG_qTESLA_III_speed_new() {
OQS_SIG *OQS_SIG_qTESLA_III_speed_new() {
OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) {

View File

@ -9,7 +9,7 @@
#define OQS_SIG_qTESLA_I_length_secret_key 2112
#define OQS_SIG_qTESLA_I_length_signature 1376
OQS_API OQS_SIG *OQS_SIG_qTESLA_I_new();
OQS_SIG *OQS_SIG_qTESLA_I_new();
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_qTESLA_I_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
@ -23,7 +23,7 @@ OQS_API OQS_STATUS OQS_SIG_qTESLA_I_verify(const uint8_t *message, size_t messag
#define OQS_SIG_qTESLA_III_size_length_secret_key 4160
#define OQS_SIG_qTESLA_III_size_length_signature 2720
OQS_API OQS_SIG *OQS_SIG_qTESLA_III_size_new();
OQS_SIG *OQS_SIG_qTESLA_III_size_new();
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
@ -37,7 +37,7 @@ OQS_API OQS_STATUS OQS_SIG_qTESLA_III_size_verify(const uint8_t *message, size_t
#define OQS_SIG_qTESLA_III_speed_length_secret_key 4160
#define OQS_SIG_qTESLA_III_speed_length_signature 2848
OQS_API OQS_SIG *OQS_SIG_qTESLA_III_speed_new();
OQS_SIG *OQS_SIG_qTESLA_III_speed_new();
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_keypair(uint8_t *public_key, uint8_t *secret_key);
OQS_API OQS_STATUS OQS_SIG_qTESLA_III_speed_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);