/src/liboqs/src/sig/uov/sig_uov_ov_V_pkc_skc.c
Line | Count | Source (jump to first uncovered line) |
1 | | // SPDX-License-Identifier: MIT |
2 | | |
3 | | #include <stdlib.h> |
4 | | |
5 | | #include <oqs/sig_uov.h> |
6 | | |
7 | | #if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc) |
8 | 4 | OQS_SIG *OQS_SIG_uov_ov_V_pkc_skc_new(void) { |
9 | | |
10 | 4 | OQS_SIG *sig = OQS_MEM_malloc(sizeof(OQS_SIG)); |
11 | 4 | if (sig == NULL) { |
12 | 0 | return NULL; |
13 | 0 | } |
14 | 4 | sig->method_name = OQS_SIG_alg_uov_ov_V_pkc_skc; |
15 | 4 | sig->alg_version = "Round 2"; |
16 | | |
17 | 4 | sig->claimed_nist_level = 5; |
18 | 4 | sig->euf_cma = true; |
19 | 4 | sig->suf_cma = false; |
20 | 4 | sig->sig_with_ctx_support = false; |
21 | | |
22 | 4 | sig->length_public_key = OQS_SIG_uov_ov_V_pkc_skc_length_public_key; |
23 | 4 | sig->length_secret_key = OQS_SIG_uov_ov_V_pkc_skc_length_secret_key; |
24 | 4 | sig->length_signature = OQS_SIG_uov_ov_V_pkc_skc_length_signature; |
25 | | |
26 | 4 | sig->keypair = OQS_SIG_uov_ov_V_pkc_skc_keypair; |
27 | 4 | sig->sign = OQS_SIG_uov_ov_V_pkc_skc_sign; |
28 | 4 | sig->verify = OQS_SIG_uov_ov_V_pkc_skc_verify; |
29 | 4 | sig->sign_with_ctx_str = OQS_SIG_uov_ov_V_pkc_skc_sign_with_ctx_str; |
30 | 4 | sig->verify_with_ctx_str = OQS_SIG_uov_ov_V_pkc_skc_verify_with_ctx_str; |
31 | | |
32 | 4 | return sig; |
33 | 4 | } |
34 | | |
35 | | extern int pqov_uov_V_pkc_skc_ref_keypair(uint8_t *pk, uint8_t *sk); |
36 | | extern int pqov_uov_V_pkc_skc_ref_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
37 | | extern int pqov_uov_V_pkc_skc_ref_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_uov_ov_V_pkc_skc_neon) |
40 | | extern int pqov_uov_V_pkc_skc_neon_keypair(uint8_t *pk, uint8_t *sk); |
41 | | extern int pqov_uov_V_pkc_skc_neon_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
42 | | extern int pqov_uov_V_pkc_skc_neon_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_uov_ov_V_pkc_skc_avx2) |
46 | | extern int pqov_uov_V_pkc_skc_avx2_keypair(uint8_t *pk, uint8_t *sk); |
47 | | extern int pqov_uov_V_pkc_skc_avx2_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk); |
48 | | extern int pqov_uov_V_pkc_skc_avx2_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk); |
49 | | #endif |
50 | | |
51 | 4 | OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_keypair(uint8_t *public_key, uint8_t *secret_key) { |
52 | | #if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon) |
53 | | #if defined(OQS_DIST_BUILD) |
54 | | if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { |
55 | | #endif /* OQS_DIST_BUILD */ |
56 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_keypair(public_key, secret_key); |
57 | | #if defined(OQS_DIST_BUILD) |
58 | | } else { |
59 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key); |
60 | | } |
61 | | #endif /* OQS_DIST_BUILD */ |
62 | | #elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2) |
63 | | #if defined(OQS_DIST_BUILD) |
64 | 4 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) { |
65 | 4 | #endif /* OQS_DIST_BUILD */ |
66 | 4 | return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_keypair(public_key, secret_key); |
67 | 4 | #if defined(OQS_DIST_BUILD) |
68 | 4 | } else { |
69 | 0 | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key); |
70 | 0 | } |
71 | 4 | #endif /* OQS_DIST_BUILD */ |
72 | | #else |
73 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key); |
74 | | #endif |
75 | 4 | } |
76 | | |
77 | 4 | OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) { |
78 | | #if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon) |
79 | | #if defined(OQS_DIST_BUILD) |
80 | | if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { |
81 | | #endif /* OQS_DIST_BUILD */ |
82 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_signature(signature, signature_len, message, message_len, secret_key); |
83 | | #if defined(OQS_DIST_BUILD) |
84 | | } else { |
85 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key); |
86 | | } |
87 | | #endif /* OQS_DIST_BUILD */ |
88 | | #elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2) |
89 | | #if defined(OQS_DIST_BUILD) |
90 | 4 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) { |
91 | 4 | #endif /* OQS_DIST_BUILD */ |
92 | 4 | return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_signature(signature, signature_len, message, message_len, secret_key); |
93 | 4 | #if defined(OQS_DIST_BUILD) |
94 | 4 | } else { |
95 | 0 | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key); |
96 | 0 | } |
97 | 4 | #endif /* OQS_DIST_BUILD */ |
98 | | #else |
99 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key); |
100 | | #endif |
101 | 4 | } |
102 | | |
103 | 4 | OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) { |
104 | | #if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon) |
105 | | #if defined(OQS_DIST_BUILD) |
106 | | if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { |
107 | | #endif /* OQS_DIST_BUILD */ |
108 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_verify(signature, signature_len, message, message_len, public_key); |
109 | | #if defined(OQS_DIST_BUILD) |
110 | | } else { |
111 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key); |
112 | | } |
113 | | #endif /* OQS_DIST_BUILD */ |
114 | | #elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2) |
115 | | #if defined(OQS_DIST_BUILD) |
116 | 4 | if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) { |
117 | 4 | #endif /* OQS_DIST_BUILD */ |
118 | 4 | return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_verify(signature, signature_len, message, message_len, public_key); |
119 | 4 | #if defined(OQS_DIST_BUILD) |
120 | 4 | } else { |
121 | 0 | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key); |
122 | 0 | } |
123 | 4 | #endif /* OQS_DIST_BUILD */ |
124 | | #else |
125 | | return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key); |
126 | | #endif |
127 | 4 | } |
128 | | |
129 | 0 | OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_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) { |
130 | 0 | if (ctx_str == NULL && ctx_str_len == 0) { |
131 | 0 | return OQS_SIG_uov_ov_V_pkc_skc_sign(signature, signature_len, message, message_len, secret_key); |
132 | 0 | } else { |
133 | 0 | return OQS_ERROR; |
134 | 0 | } |
135 | 0 | } |
136 | | |
137 | 0 | OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_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) { |
138 | 0 | if (ctx_str == NULL && ctx_str_len == 0) { |
139 | 0 | return OQS_SIG_uov_ov_V_pkc_skc_verify(message, message_len, signature, signature_len, public_key); |
140 | 0 | } else { |
141 | 0 | return OQS_ERROR; |
142 | 0 | } |
143 | 0 | } |
144 | | #endif |