mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-04 00:02:01 -04:00
* add bitflip test to test_sig.c Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * format code Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * - add sig->suf_cma - add command-line argument to test_sig.c (the number of bitflips) - update CROSS upstream to SUF-CMA Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * %d to %ld for size_t bitflips Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * cast argument bitflips to size_t Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * replace atoi() with strtol() Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * cast bit_index to %llu Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * update bitflip tests: - revert CROSS to EUF-CMA - add test_bitflip_message - exclude stateful signatures for now Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * remove bitflips_as_str in printf Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * test_bitflip as a single function, add support for stateful signatures Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * add OQS_TEST_CT_DECLASSIFY after test_bitflip_stfl Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * [extended tests] Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * more OQS_TEST_CT_DECLASSIFY [extended tests] Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * patch dilithium to add suf-cma Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * run copy_from_upstream.py Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * SUF-CMA in dilithium docs, run copy_from_upstream.py Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * correct sizeof in OQS_randombytes call (thank you @SWilson4!) Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * factor bitflip testing functions out into test_helpers.c Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * --allow-multiple-definition for Windows .dll in test_kem_mem Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> * --allow-multiple-definition for Windows .dll in test_sig and test_sig_stfl Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com> --------- Signed-off-by: rtjk <47841774+rtjk@users.noreply.github.com>
109 lines
4.8 KiB
C
109 lines
4.8 KiB
C
// SPDX-License-Identifier: MIT
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <oqs/sig_cross.h>
|
|
|
|
#if defined(OQS_ENABLE_SIG_cross_rsdp_128_fast)
|
|
OQS_SIG *OQS_SIG_cross_rsdp_128_fast_new(void) {
|
|
|
|
OQS_SIG *sig = OQS_MEM_malloc(sizeof(OQS_SIG));
|
|
if (sig == NULL) {
|
|
return NULL;
|
|
}
|
|
sig->method_name = OQS_SIG_alg_cross_rsdp_128_fast;
|
|
sig->alg_version = "2.0 + PQClean and OQS patches";
|
|
|
|
sig->claimed_nist_level = 1;
|
|
sig->euf_cma = true;
|
|
sig->suf_cma = false;
|
|
sig->sig_with_ctx_support = false;
|
|
|
|
sig->length_public_key = OQS_SIG_cross_rsdp_128_fast_length_public_key;
|
|
sig->length_secret_key = OQS_SIG_cross_rsdp_128_fast_length_secret_key;
|
|
sig->length_signature = OQS_SIG_cross_rsdp_128_fast_length_signature;
|
|
|
|
sig->keypair = OQS_SIG_cross_rsdp_128_fast_keypair;
|
|
sig->sign = OQS_SIG_cross_rsdp_128_fast_sign;
|
|
sig->verify = OQS_SIG_cross_rsdp_128_fast_verify;
|
|
sig->sign_with_ctx_str = OQS_SIG_cross_rsdp_128_fast_sign_with_ctx_str;
|
|
sig->verify_with_ctx_str = OQS_SIG_cross_rsdp_128_fast_verify_with_ctx_str;
|
|
|
|
return sig;
|
|
}
|
|
|
|
extern int PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
|
extern int PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
|
extern int PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
|
|
|
#if defined(OQS_ENABLE_SIG_cross_rsdp_128_fast_avx2)
|
|
extern int PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
|
|
extern int PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
|
|
extern int PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
|
|
#endif
|
|
|
|
OQS_API OQS_STATUS OQS_SIG_cross_rsdp_128_fast_keypair(uint8_t *public_key, uint8_t *secret_key) {
|
|
#if defined(OQS_ENABLE_SIG_cross_rsdp_128_fast_avx2)
|
|
#if defined(OQS_DIST_BUILD)
|
|
if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
|
|
#endif /* OQS_DIST_BUILD */
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_keypair(public_key, secret_key);
|
|
#if defined(OQS_DIST_BUILD)
|
|
} else {
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
|
}
|
|
#endif /* OQS_DIST_BUILD */
|
|
#else
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_keypair(public_key, secret_key);
|
|
#endif
|
|
}
|
|
|
|
OQS_API OQS_STATUS OQS_SIG_cross_rsdp_128_fast_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
|
|
#if defined(OQS_ENABLE_SIG_cross_rsdp_128_fast_avx2)
|
|
#if defined(OQS_DIST_BUILD)
|
|
if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
|
|
#endif /* OQS_DIST_BUILD */
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
|
#if defined(OQS_DIST_BUILD)
|
|
} else {
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
|
}
|
|
#endif /* OQS_DIST_BUILD */
|
|
#else
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
|
|
#endif
|
|
}
|
|
|
|
OQS_API OQS_STATUS OQS_SIG_cross_rsdp_128_fast_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
|
|
#if defined(OQS_ENABLE_SIG_cross_rsdp_128_fast_avx2)
|
|
#if defined(OQS_DIST_BUILD)
|
|
if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
|
|
#endif /* OQS_DIST_BUILD */
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_AVX2_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
|
#if defined(OQS_DIST_BUILD)
|
|
} else {
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
|
}
|
|
#endif /* OQS_DIST_BUILD */
|
|
#else
|
|
return (OQS_STATUS) PQCLEAN_CROSSRSDP128FAST_CLEAN_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
|
|
#endif
|
|
}
|
|
|
|
OQS_API OQS_STATUS OQS_SIG_cross_rsdp_128_fast_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx_str, size_t ctx_str_len, const uint8_t *secret_key) {
|
|
if (ctx_str == NULL && ctx_str_len == 0) {
|
|
return OQS_SIG_cross_rsdp_128_fast_sign(signature, signature_len, message, message_len, secret_key);
|
|
} else {
|
|
return OQS_ERROR;
|
|
}
|
|
}
|
|
|
|
OQS_API OQS_STATUS OQS_SIG_cross_rsdp_128_fast_verify_with_ctx_str(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *ctx_str, size_t ctx_str_len, const uint8_t *public_key) {
|
|
if (ctx_str == NULL && ctx_str_len == 0) {
|
|
return OQS_SIG_cross_rsdp_128_fast_verify(message, message_len, signature, signature_len, public_key);
|
|
} else {
|
|
return OQS_ERROR;
|
|
}
|
|
}
|
|
#endif
|