liboqs
Loading...
Searching...
No Matches
sig.h
Go to the documentation of this file.
1
20
21#ifndef OQS_SIG_H
22#define OQS_SIG_H
23
24#include <stdbool.h>
25#include <stddef.h>
26#include <stdint.h>
27
28#include <oqs/oqs.h>
29
30#if defined(__cplusplus)
31extern "C" {
32#endif
33
35
36#define OQS_SIG_alg_dilithium_2 "Dilithium2"
38#define OQS_SIG_alg_dilithium_3 "Dilithium3"
40#define OQS_SIG_alg_dilithium_5 "Dilithium5"
42#define OQS_SIG_alg_ml_dsa_44 "ML-DSA-44"
44#define OQS_SIG_alg_ml_dsa_65 "ML-DSA-65"
46#define OQS_SIG_alg_ml_dsa_87 "ML-DSA-87"
48#define OQS_SIG_alg_falcon_512 "Falcon-512"
50#define OQS_SIG_alg_falcon_1024 "Falcon-1024"
52#define OQS_SIG_alg_falcon_padded_512 "Falcon-padded-512"
54#define OQS_SIG_alg_falcon_padded_1024 "Falcon-padded-1024"
56#define OQS_SIG_alg_sphincs_sha2_128f_simple "SPHINCS+-SHA2-128f-simple"
58#define OQS_SIG_alg_sphincs_sha2_128s_simple "SPHINCS+-SHA2-128s-simple"
60#define OQS_SIG_alg_sphincs_sha2_192f_simple "SPHINCS+-SHA2-192f-simple"
62#define OQS_SIG_alg_sphincs_sha2_192s_simple "SPHINCS+-SHA2-192s-simple"
64#define OQS_SIG_alg_sphincs_sha2_256f_simple "SPHINCS+-SHA2-256f-simple"
66#define OQS_SIG_alg_sphincs_sha2_256s_simple "SPHINCS+-SHA2-256s-simple"
68#define OQS_SIG_alg_sphincs_shake_128f_simple "SPHINCS+-SHAKE-128f-simple"
70#define OQS_SIG_alg_sphincs_shake_128s_simple "SPHINCS+-SHAKE-128s-simple"
72#define OQS_SIG_alg_sphincs_shake_192f_simple "SPHINCS+-SHAKE-192f-simple"
74#define OQS_SIG_alg_sphincs_shake_192s_simple "SPHINCS+-SHAKE-192s-simple"
76#define OQS_SIG_alg_sphincs_shake_256f_simple "SPHINCS+-SHAKE-256f-simple"
78#define OQS_SIG_alg_sphincs_shake_256s_simple "SPHINCS+-SHAKE-256s-simple"
80#define OQS_SIG_alg_mayo_1 "MAYO-1"
82#define OQS_SIG_alg_mayo_2 "MAYO-2"
84#define OQS_SIG_alg_mayo_3 "MAYO-3"
86#define OQS_SIG_alg_mayo_5 "MAYO-5"
88#define OQS_SIG_alg_cross_rsdp_128_balanced "cross-rsdp-128-balanced"
90#define OQS_SIG_alg_cross_rsdp_128_fast "cross-rsdp-128-fast"
92#define OQS_SIG_alg_cross_rsdp_128_small "cross-rsdp-128-small"
94#define OQS_SIG_alg_cross_rsdp_192_balanced "cross-rsdp-192-balanced"
96#define OQS_SIG_alg_cross_rsdp_192_fast "cross-rsdp-192-fast"
98#define OQS_SIG_alg_cross_rsdp_192_small "cross-rsdp-192-small"
100#define OQS_SIG_alg_cross_rsdp_256_balanced "cross-rsdp-256-balanced"
102#define OQS_SIG_alg_cross_rsdp_256_fast "cross-rsdp-256-fast"
104#define OQS_SIG_alg_cross_rsdp_256_small "cross-rsdp-256-small"
106#define OQS_SIG_alg_cross_rsdpg_128_balanced "cross-rsdpg-128-balanced"
108#define OQS_SIG_alg_cross_rsdpg_128_fast "cross-rsdpg-128-fast"
110#define OQS_SIG_alg_cross_rsdpg_128_small "cross-rsdpg-128-small"
112#define OQS_SIG_alg_cross_rsdpg_192_balanced "cross-rsdpg-192-balanced"
114#define OQS_SIG_alg_cross_rsdpg_192_fast "cross-rsdpg-192-fast"
116#define OQS_SIG_alg_cross_rsdpg_192_small "cross-rsdpg-192-small"
118#define OQS_SIG_alg_cross_rsdpg_256_balanced "cross-rsdpg-256-balanced"
120#define OQS_SIG_alg_cross_rsdpg_256_fast "cross-rsdpg-256-fast"
122#define OQS_SIG_alg_cross_rsdpg_256_small "cross-rsdpg-256-small"
124#define OQS_SIG_alg_uov_ov_Is "OV-Is"
126#define OQS_SIG_alg_uov_ov_Ip "OV-Ip"
128#define OQS_SIG_alg_uov_ov_III "OV-III"
130#define OQS_SIG_alg_uov_ov_V "OV-V"
132#define OQS_SIG_alg_uov_ov_Is_pkc "OV-Is-pkc"
134#define OQS_SIG_alg_uov_ov_Ip_pkc "OV-Ip-pkc"
136#define OQS_SIG_alg_uov_ov_III_pkc "OV-III-pkc"
138#define OQS_SIG_alg_uov_ov_V_pkc "OV-V-pkc"
140#define OQS_SIG_alg_uov_ov_Is_pkc_skc "OV-Is-pkc-skc"
142#define OQS_SIG_alg_uov_ov_Ip_pkc_skc "OV-Ip-pkc-skc"
144#define OQS_SIG_alg_uov_ov_III_pkc_skc "OV-III-pkc-skc"
146#define OQS_SIG_alg_uov_ov_V_pkc_skc "OV-V-pkc-skc"
148// EDIT-WHEN-ADDING-SIG
150
152#define OQS_SIG_algs_length 56
154
164OQS_API const char *OQS_SIG_alg_identifier(size_t i);
165
175
182OQS_API int OQS_SIG_alg_is_enabled(const char *method_name);
183
187typedef struct OQS_SIG {
188
190 const char *method_name;
191
198 const char *alg_version;
199
202
205
208
211
218
230 OQS_STATUS (*keypair)(uint8_t *public_key, uint8_t *secret_key);
231
246 OQS_STATUS (*sign)(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
247
264 OQS_STATUS (*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);
265
276 OQS_STATUS (*verify)(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
277
290 OQS_STATUS (*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);
291
292
294
304OQS_API OQS_SIG *OQS_SIG_new(const char *method_name);
305
318OQS_API OQS_STATUS OQS_SIG_keypair(const OQS_SIG *sig, uint8_t *public_key, uint8_t *secret_key);
319
335OQS_API OQS_STATUS OQS_SIG_sign(const OQS_SIG *sig, uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
336
354OQS_API OQS_STATUS OQS_SIG_sign_with_ctx_str(const OQS_SIG *sig, 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);
355
367OQS_API OQS_STATUS OQS_SIG_verify(const OQS_SIG *sig, const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
368
382OQS_API OQS_STATUS OQS_SIG_verify_with_ctx_str(const OQS_SIG *sig, 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);
383
390
392#ifdef OQS_ENABLE_SIG_DILITHIUM
393#include <oqs/sig_dilithium.h>
394#endif /* OQS_ENABLE_SIG_DILITHIUM */
395#ifdef OQS_ENABLE_SIG_ML_DSA
396#include <oqs/sig_ml_dsa.h>
397#endif /* OQS_ENABLE_SIG_ML_DSA */
398#ifdef OQS_ENABLE_SIG_FALCON
399#include <oqs/sig_falcon.h>
400#endif /* OQS_ENABLE_SIG_FALCON */
401#ifdef OQS_ENABLE_SIG_SPHINCS
402#include <oqs/sig_sphincs.h>
403#endif /* OQS_ENABLE_SIG_SPHINCS */
404#ifdef OQS_ENABLE_SIG_MAYO
405#include <oqs/sig_mayo.h>
406#endif /* OQS_ENABLE_SIG_MAYO */
407#ifdef OQS_ENABLE_SIG_CROSS
408#include <oqs/sig_cross.h>
409#endif /* OQS_ENABLE_SIG_CROSS */
410#ifdef OQS_ENABLE_SIG_UOV
411#include <oqs/sig_uov.h>
412#endif /* OQS_ENABLE_SIG_UOV */
414// EDIT-WHEN-ADDING-SIG
415
416#if defined(__cplusplus)
417} // extern "C"
418#endif
419
420#endif // OQS_SIG_H
#define OQS_API
Definition common.h:94
OQS_STATUS
Definition common.h:116
OQS_API int OQS_SIG_alg_count(void)
OQS_API void OQS_SIG_free(OQS_SIG *sig)
OQS_API const char * OQS_SIG_alg_identifier(size_t i)
OQS_API OQS_STATUS OQS_SIG_sign_with_ctx_str(const OQS_SIG *sig, 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)
OQS_API OQS_STATUS OQS_SIG_verify_with_ctx_str(const OQS_SIG *sig, 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)
OQS_API OQS_SIG * OQS_SIG_new(const char *method_name)
OQS_API int OQS_SIG_alg_is_enabled(const char *method_name)
OQS_API OQS_STATUS OQS_SIG_sign(const OQS_SIG *sig, 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_keypair(const OQS_SIG *sig, uint8_t *public_key, uint8_t *secret_key)
OQS_API OQS_STATUS OQS_SIG_verify(const OQS_SIG *sig, const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key)
Definition sig.h:187
size_t length_secret_key
Definition sig.h:215
size_t length_signature
Definition sig.h:217
bool euf_cma
Definition sig.h:204
OQS_STATUS(* keypair)(uint8_t *public_key, uint8_t *secret_key)
Definition sig.h:230
const char * method_name
Definition sig.h:190
size_t length_public_key
Definition sig.h:213
OQS_STATUS(* 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)
Definition sig.h:290
OQS_STATUS(* 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)
Definition sig.h:264
const char * alg_version
Definition sig.h:198
OQS_STATUS(* sign)(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key)
Definition sig.h:246
OQS_STATUS(* verify)(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key)
Definition sig.h:276
bool suf_cma
Definition sig.h:207
bool sig_with_ctx_support
Definition sig.h:210
uint8_t claimed_nist_level
Definition sig.h:201