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/include/
VisualStudio/**/*.user VisualStudio/**/*.user
# External sources
external
!src/sig_picnic/external
src/sig_picnic/external/build/**
src/sig_picnic/external/msbuild/**
/temp/
# Travis files # Travis files
cmake-3.8.0.tar.gz cmake-3.8.0.tar.gz
cmake-3.8.0/** cmake-3.8.0/**

View File

@ -1,33 +1,105 @@
LIBRARY oqs LIBRARY oqs
EXPORTS 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_alg_identifier
OQS_KEM_new OQS_KEM_new
OQS_KEM_keypair OQS_KEM_keypair
OQS_KEM_encaps OQS_KEM_encaps
OQS_KEM_decaps OQS_KEM_decaps
OQS_KEM_free 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_alg_identifier
OQS_SIG_new OQS_SIG_new
OQS_SIG_keypair OQS_SIG_keypair
OQS_SIG_sign OQS_SIG_sign
OQS_SIG_verify OQS_SIG_verify
OQS_SIG_free 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 - **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 - **License:** MIT License
- **Language:** C - **Language:** C
- **Constant-time:** No - **Constant-time:** No

View File

@ -17,8 +17,10 @@ libkembike_la_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS)
#When AVX2 is supported also AVX512 is supported and we can use the additional implementation. #When AVX2 is supported also AVX512 is supported and we can use the additional implementation.
if BIKE_ADDITIONAL_IMPL if BIKE_ADDITIONAL_IMPL
BIKE_SRC_DIR=x86_64/ BIKE_SRC_DIR=x86_64/
libkembike_la_CFLAGS += -DOQS_KEM_BIKE_ADDITIONAL_IMPLEMENTATION
else else
BIKE_SRC_DIR=ref/ BIKE_SRC_DIR=ref/
libkembike_la_CFLAGS += -DOQS_KEM_BIKE_REFERENCE_IMPLEMENTATION
endif 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)/kem.c $(BIKE_SRC_DIR)/aes_ctr_prf.c $(BIKE_SRC_DIR)/parallel_hash.c

View File

@ -11,7 +11,13 @@ OQS_KEM *OQS_KEM_bike1_l1_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike1_l1; 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->claimed_nist_level = 1;
kem->ind_cca = false; kem->ind_cca = false;
@ -39,7 +45,13 @@ OQS_KEM *OQS_KEM_bike1_l3_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike1_l3; 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->claimed_nist_level = 3;
kem->ind_cca = false; kem->ind_cca = false;
@ -67,7 +79,13 @@ OQS_KEM *OQS_KEM_bike1_l5_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike1_l5; 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->claimed_nist_level = 5;
kem->ind_cca = false; kem->ind_cca = false;
@ -95,7 +113,13 @@ OQS_KEM *OQS_KEM_bike2_l1_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike2_l1; 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->claimed_nist_level = 1;
kem->ind_cca = false; kem->ind_cca = false;
@ -123,7 +147,13 @@ OQS_KEM *OQS_KEM_bike2_l3_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike2_l3; 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->claimed_nist_level = 3;
kem->ind_cca = false; kem->ind_cca = false;
@ -151,7 +181,13 @@ OQS_KEM *OQS_KEM_bike2_l5_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike2_l5; 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->claimed_nist_level = 5;
kem->ind_cca = false; kem->ind_cca = false;
@ -179,7 +215,13 @@ OQS_KEM *OQS_KEM_bike3_l1_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike3_l1; 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->claimed_nist_level = 1;
kem->ind_cca = false; kem->ind_cca = false;
@ -207,7 +249,13 @@ OQS_KEM *OQS_KEM_bike3_l3_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike3_l3; 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->claimed_nist_level = 3;
kem->ind_cca = false; kem->ind_cca = false;
@ -235,7 +283,13 @@ OQS_KEM *OQS_KEM_bike3_l5_new() {
return NULL; return NULL;
} }
kem->method_name = OQS_KEM_alg_bike3_l5; 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->claimed_nist_level = 5;
kem->ind_cca = false; kem->ind_cca = false;

View File

@ -21,12 +21,12 @@
OQS_KEM *OQS_KEM_bike1_l1_new(); 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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); 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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); const uint8_t *secret_key);

View File

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

View File

@ -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: // 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 // Convert to this implementation types
sk_t *l_sk = (sk_t *) sk; sk_t *l_sk = (sk_t *) sk;
pk_t *l_pk = (pk_t *) pk; pk_t *l_pk = (pk_t *) pk;
@ -390,7 +390,7 @@ EXIT:
// Encapsulate - pk is the public key, // Encapsulate - pk is the public key,
// ct is a key encapsulation message (ciphertext), // ct is a key encapsulation message (ciphertext),
// ss is the shared secret. // ss is the shared secret.
int encaps(OUT unsigned char *ct, OQS_API OQS_STATUS encaps(OUT unsigned char *ct,
OUT unsigned char *ss, OUT unsigned char *ss,
IN const unsigned char *pk) { IN const unsigned char *pk) {
DMSG(" Enter crypto_kem_enc.\n"); DMSG(" Enter crypto_kem_enc.\n");
@ -463,7 +463,7 @@ EXIT:
// Decapsulate - ct is a key encapsulation message (ciphertext), // Decapsulate - ct is a key encapsulation message (ciphertext),
// sk is the private key, // sk is the private key,
// ss is the shared secret // 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 *ct,
IN const unsigned char *sk) { IN const unsigned char *sk) {
OQS_STATUS res = OQS_SUCCESS; OQS_STATUS res = OQS_SUCCESS;

View File

@ -12,12 +12,12 @@
OQS_KEM *OQS_KEM_newhope_512_cca_kem_new(); 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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); const uint8_t *secret_key);
#endif #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_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); 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, uint8_t *shared_secret,
const uint8_t *public_key); 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 unsigned char *ciphertext,
const uint8_t *secret_key); const uint8_t *secret_key);
#endif #endif

View File

@ -19,7 +19,7 @@
* *
* Returns 0 (success) * 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; size_t i;
cpapke_keypair(pk, sk); 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 */ 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) * 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 k_coins_d[3 * NEWHOPE_SYMBYTES]; /* Will contain key, coins, qrom-hash */
unsigned char buf[2 * NEWHOPE_SYMBYTES]; unsigned char buf[2 * NEWHOPE_SYMBYTES];
int i; 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(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 */ 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. * 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; int i, fail;
unsigned char ct_cmp[NEWHOPE_CCAKEM_CIPHERTEXTBYTES]; unsigned char ct_cmp[NEWHOPE_CCAKEM_CIPHERTEXTBYTES];
unsigned char buf[2 * NEWHOPE_SYMBYTES]; 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 */ 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 */ 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 */ /* 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) { if (oqs_kem_sidh_p503_EphemeralKeyGeneration_A((unsigned char *) secret_key, (unsigned char *) public_key) != 0) {
return OQS_ERROR; return OQS_ERROR;
} }
return OQS_SUCCESS; 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; OQS_STATUS ret = OQS_ERROR;
unsigned char *secret_key = malloc(OQS_KEM_sidh_p503_length_secret_key); unsigned char *secret_key = malloc(OQS_KEM_sidh_p503_length_secret_key);
if (oqs_kem_sidh_p503_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) { if (oqs_kem_sidh_p503_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) {
@ -141,7 +141,7 @@ cleanup:
return ret; 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) { if (oqs_kem_sidh_p503_EphemeralSecretAgreement_A((unsigned char *) secret_key, (unsigned char *) ciphertext, (unsigned char *) shared_secret) != 0) {
return OQS_ERROR; return OQS_ERROR;
} }
@ -189,14 +189,14 @@ OQS_KEM *OQS_KEM_sidh_p751_new() {
} }
/* Forward KEM API calls to SIDH's API */ /* 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) { if (oqs_kem_sidh_p751_EphemeralKeyGeneration_A((unsigned char *) secret_key, (unsigned char *) public_key) != 0) {
return OQS_ERROR; return OQS_ERROR;
} }
return OQS_SUCCESS; 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; OQS_STATUS ret = OQS_ERROR;
unsigned char *secret_key = malloc(OQS_KEM_sidh_p751_length_secret_key); unsigned char *secret_key = malloc(OQS_KEM_sidh_p751_length_secret_key);
if (oqs_kem_sidh_p751_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) { if (oqs_kem_sidh_p751_EphemeralKeyGeneration_B(secret_key, (unsigned char *) ciphertext)) {
@ -219,7 +219,7 @@ cleanup:
return ret; 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) { if (oqs_kem_sidh_p751_EphemeralSecretAgreement_A((unsigned char *) secret_key, (unsigned char *) ciphertext, (unsigned char *) shared_secret) != 0) {
return OQS_ERROR; return OQS_ERROR;
} }

View File

@ -12,9 +12,9 @@
OQS_KEM *OQS_KEM_sike_p503_new(); OQS_KEM *OQS_KEM_sike_p503_new();
OQS_STATUS OQS_KEM_sike_p503_keypair(uint8_t *public_key, uint8_t *secret_key); OQS_API 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_API 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_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif #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_KEM *OQS_KEM_sike_p751_new();
OQS_STATUS OQS_KEM_sike_p751_keypair(uint8_t *public_key, uint8_t *secret_key); OQS_API 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_API 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_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key);
#endif #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_KEM *OQS_KEM_sidh_p503_new();
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);
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 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);
#endif #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_KEM *OQS_KEM_sidh_p751_new();
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);
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 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);
#endif #endif

View File

@ -8,7 +8,7 @@
#include <oqs/common.h> #include <oqs/common.h>
#include <oqs/sha3.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) // Outputs: secret key sk (CRYPTO_SECRETKEYBYTES = MSG_BYTES + SECRETKEY_B_BYTES + CRYPTO_PUBLICKEYBYTES bytes)
// public key pk (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; 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) // Input: public key pk (CRYPTO_PUBLICKEYBYTES bytes)
// Outputs: shared secret ss (CRYPTO_BYTES bytes) // Outputs: shared secret ss (CRYPTO_BYTES bytes)
// ciphertext message ct (CRYPTO_CIPHERTEXTBYTES = CRYPTO_PUBLICKEYBYTES + MSG_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; 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) // Input: secret key sk (CRYPTO_SECRETKEYBYTES = MSG_BYTES + SECRETKEY_B_BYTES + CRYPTO_PUBLICKEYBYTES bytes)
// ciphertext message ct (CRYPTO_CIPHERTEXTBYTES = CRYPTO_PUBLICKEYBYTES + MSG_BYTES bytes) // ciphertext message ct (CRYPTO_CIPHERTEXTBYTES = CRYPTO_PUBLICKEYBYTES + MSG_BYTES bytes)
// Outputs: shared secret ss (CRYPTO_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; 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); 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); 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); 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; 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); 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); 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); 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; 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); 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); 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); 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; 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); 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); 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); 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; 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); 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); 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); 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; 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); 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); 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); 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_SIG *OQS_SIG_picnic_L1_FS_new();
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);
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);
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);
#endif #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_SIG *OQS_SIG_picnic_L1_UR_new();
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);
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);
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);
#endif #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_SIG *OQS_SIG_picnic_L3_FS_new();
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);
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);
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);
#endif #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_SIG *OQS_SIG_picnic_L3_UR_new();
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);
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);
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);
#endif #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_SIG *OQS_SIG_picnic_L5_FS_new();
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);
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);
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);
#endif #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_SIG *OQS_SIG_picnic_L5_UR_new();
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);
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);
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);
#endif #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" #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); 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); 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); 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 *,
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 *, unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); 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, unsigned char *, unsigned long long,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); 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" #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); 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); 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); 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 *,
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 *, unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); 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, unsigned char *, unsigned long long,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); 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" #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); 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); 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); 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 *,
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 *, unsigned char *, unsigned long long *,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); 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, unsigned char *, unsigned long long,
const unsigned char *, unsigned long long, const unsigned char *, unsigned long long,
const unsigned char *); const unsigned char *);

View File

@ -9,7 +9,7 @@
* - unsigned char *sk: secret key * - unsigned char *sk: secret key
* Returns: 0 for successful execution * 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]; unsigned char randomness[CRYPTO_RANDOMBYTES], randomness_extended[4 * CRYPTO_SEEDBYTES];
poly s, e, a, t; poly s, e, a, t;
int nonce = 0; // Initialize domain separator for error and secret polynomials 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]); pack_sk(sk, s, e, &randomness_extended[2 * CRYPTO_SEEDBYTES]);
encode_pk(pk, t, &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* * - unsigned long long *smlen: signature length*
* Returns: 0 for successful execution * 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]; unsigned char c[CRYPTO_C_BYTES], randomness[CRYPTO_SEEDBYTES], randomness_input[CRYPTO_RANDOMBYTES + CRYPTO_SEEDBYTES + mlen];
uint32_t pos_list[PARAM_W]; uint32_t pos_list[PARAM_W];
int16_t sign_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; *smlen = CRYPTO_BYTES;
encode_sig(sm, c, z); 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 * Returns: 0 for valid signature
* <0 for invalid 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]; unsigned char c[CRYPTO_C_BYTES], c_sig[CRYPTO_C_BYTES], seed[CRYPTO_SEEDBYTES];
uint32_t pos_list[PARAM_W]; uint32_t pos_list[PARAM_W];
int16_t sign_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; poly w, z, a, Tc;
if (smlen < CRYPTO_BYTES) if (smlen < CRYPTO_BYTES)
return -1; return OQS_ERROR;
decode_sig(c, z, sm); decode_sig(c, z, sm);
if (test_z(z) != 0) 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); decode_pk((int32_t *) pk_t, seed, pk);
poly_uniform(a, seed); poly_uniform(a, seed);
encode_c(pos_list, sign_list, c); 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 // Check if the calculated c matches c from the signature
if (memcmp(c, c_sig, CRYPTO_C_BYTES)) 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 #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)); OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) { if (sig == NULL) {
@ -31,7 +31,7 @@ OQS_API OQS_SIG *OQS_SIG_qTESLA_I_new() {
#ifdef OQS_ENABLE_SIG_qTESLA_III_size #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)); OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) { if (sig == NULL) {
@ -58,7 +58,7 @@ OQS_API OQS_SIG *OQS_SIG_qTESLA_III_size_new() {
#ifdef OQS_ENABLE_SIG_qTESLA_III_speed #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)); OQS_SIG *sig = malloc(sizeof(OQS_SIG));
if (sig == NULL) { if (sig == NULL) {

View File

@ -9,7 +9,7 @@
#define OQS_SIG_qTESLA_I_length_secret_key 2112 #define OQS_SIG_qTESLA_I_length_secret_key 2112
#define OQS_SIG_qTESLA_I_length_signature 1376 #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_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); 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_secret_key 4160
#define OQS_SIG_qTESLA_III_size_length_signature 2720 #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_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); 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_secret_key 4160
#define OQS_SIG_qTESLA_III_speed_length_signature 2848 #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_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); 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);