/src/liboqs/src/sig/qruov/sig_qruov_5q127L10aes.c
Line | Count | Source |
1 | | // SPDX-License-Identifier: MIT |
2 | | |
3 | | #include <stdlib.h> |
4 | | |
5 | | #include <oqs/sig_qruov.h> |
6 | | |
7 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes) |
8 | 123 | OQS_SIG *OQS_SIG_qruov_5q127L10aes_new(void) { |
9 | | |
10 | 123 | OQS_SIG *sig = OQS_MEM_calloc(1, sizeof(OQS_SIG)); |
11 | 123 | if (sig == NULL) { |
12 | 0 | return NULL; |
13 | 0 | } |
14 | 123 | sig->method_name = OQS_SIG_alg_qruov_5q127L10aes; |
15 | 123 | sig->alg_version = "Round 3"; |
16 | | |
17 | 123 | sig->claimed_nist_level = 5; |
18 | 123 | sig->euf_cma = true; |
19 | 123 | sig->suf_cma = false; |
20 | 123 | sig->sig_with_ctx_support = false; |
21 | | |
22 | 123 | sig->length_public_key = OQS_SIG_qruov_5q127L10aes_length_public_key; |
23 | 123 | sig->length_secret_key = OQS_SIG_qruov_5q127L10aes_length_secret_key; |
24 | 123 | sig->length_signature = OQS_SIG_qruov_5q127L10aes_length_signature; |
25 | | |
26 | 123 | sig->keypair = OQS_SIG_qruov_5q127L10aes_keypair; |
27 | 123 | sig->sign = OQS_SIG_qruov_5q127L10aes_sign; |
28 | 123 | sig->verify = OQS_SIG_qruov_5q127L10aes_verify; |
29 | 123 | sig->sign_with_ctx_str = OQS_SIG_qruov_5q127L10aes_sign_with_ctx_str; |
30 | 123 | sig->verify_with_ctx_str = OQS_SIG_qruov_5q127L10aes_verify_with_ctx_str; |
31 | | |
32 | 123 | return sig; |
33 | 123 | } |
34 | | |
35 | | extern int qruov_5q127L10_aes_ref_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); |
36 | | extern int qruov_5q127L10_aes_ref_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
37 | | extern int qruov_5q127L10_aes_ref_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); |
38 | | |
39 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes_opt) |
40 | | extern int qruov_5q127L10_aes_opt_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); |
41 | | extern int qruov_5q127L10_aes_opt_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
42 | | extern int qruov_5q127L10_aes_opt_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); |
43 | | #endif |
44 | | |
45 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes_avx2) |
46 | | extern int qruov_5q127L10_aes_avx2_crypto_sign_keypair(uint8_t *pk, uint8_t *sk); |
47 | | extern int qruov_5q127L10_aes_avx2_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
48 | | extern int qruov_5q127L10_aes_avx2_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); |
49 | | #endif |
50 | | |
51 | 123 | OQS_API OQS_STATUS OQS_SIG_qruov_5q127L10aes_keypair(uint8_t *public_key, uint8_t *secret_key) { |
52 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes_opt) |
53 | | return (OQS_STATUS) qruov_5q127L10_aes_opt_crypto_sign_keypair(public_key, secret_key); |
54 | | #elif defined(OQS_ENABLE_SIG_qruov_5q127L10aes_avx2) |
55 | | #if defined(OQS_DIST_BUILD) |
56 | 123 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_AES)) { |
57 | 123 | #endif /* OQS_DIST_BUILD */ |
58 | 123 | return (OQS_STATUS) qruov_5q127L10_aes_avx2_crypto_sign_keypair(public_key, secret_key); |
59 | 123 | #if defined(OQS_DIST_BUILD) |
60 | 123 | } else { |
61 | 0 | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_keypair(public_key, secret_key); |
62 | 0 | } |
63 | 123 | #endif /* OQS_DIST_BUILD */ |
64 | | #else |
65 | | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_keypair(public_key, secret_key); |
66 | | #endif |
67 | 123 | } |
68 | | |
69 | 123 | OQS_API OQS_STATUS OQS_SIG_qruov_5q127L10aes_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { |
70 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes_opt) |
71 | | return (OQS_STATUS) qruov_5q127L10_aes_opt_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); |
72 | | #elif defined(OQS_ENABLE_SIG_qruov_5q127L10aes_avx2) |
73 | | #if defined(OQS_DIST_BUILD) |
74 | 123 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_AES)) { |
75 | 123 | #endif /* OQS_DIST_BUILD */ |
76 | 123 | return (OQS_STATUS) qruov_5q127L10_aes_avx2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); |
77 | 123 | #if defined(OQS_DIST_BUILD) |
78 | 123 | } else { |
79 | 0 | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); |
80 | 0 | } |
81 | 123 | #endif /* OQS_DIST_BUILD */ |
82 | | #else |
83 | | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_signature(signature, signature_len, message, message_len, secret_key); |
84 | | #endif |
85 | 123 | } |
86 | | |
87 | 123 | OQS_API OQS_STATUS OQS_SIG_qruov_5q127L10aes_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { |
88 | | #if defined(OQS_ENABLE_SIG_qruov_5q127L10aes_opt) |
89 | | return (OQS_STATUS) qruov_5q127L10_aes_opt_crypto_sign_verify(signature, signature_len, message, message_len, public_key); |
90 | | #elif defined(OQS_ENABLE_SIG_qruov_5q127L10aes_avx2) |
91 | | #if defined(OQS_DIST_BUILD) |
92 | 123 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_AES)) { |
93 | 123 | #endif /* OQS_DIST_BUILD */ |
94 | 123 | return (OQS_STATUS) qruov_5q127L10_aes_avx2_crypto_sign_verify(signature, signature_len, message, message_len, public_key); |
95 | 123 | #if defined(OQS_DIST_BUILD) |
96 | 123 | } else { |
97 | 0 | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_verify(signature, signature_len, message, message_len, public_key); |
98 | 0 | } |
99 | 123 | #endif /* OQS_DIST_BUILD */ |
100 | | #else |
101 | | return (OQS_STATUS) qruov_5q127L10_aes_ref_crypto_sign_verify(signature, signature_len, message, message_len, public_key); |
102 | | #endif |
103 | 123 | } |
104 | | |
105 | 0 | OQS_API OQS_STATUS OQS_SIG_qruov_5q127L10aes_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) { |
106 | 0 | if (ctx_str == NULL && ctx_str_len == 0) { |
107 | 0 | return OQS_SIG_qruov_5q127L10aes_sign(signature, signature_len, message, message_len, secret_key); |
108 | 0 | } else { |
109 | 0 | return OQS_ERROR; |
110 | 0 | } |
111 | 0 | } |
112 | | |
113 | 0 | OQS_API OQS_STATUS OQS_SIG_qruov_5q127L10aes_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) { |
114 | 0 | if (ctx_str == NULL && ctx_str_len == 0) { |
115 | 0 | return OQS_SIG_qruov_5q127L10aes_verify(message, message_len, signature, signature_len, public_key); |
116 | 0 | } else { |
117 | 0 | return OQS_ERROR; |
118 | 0 | } |
119 | 0 | } |
120 | | #endif |