1 // SPDX-License-Identifier: MIT
2 
3 #ifndef OQS_SIG_SPHINCS_H
4 #define OQS_SIG_SPHINCS_H
5 
6 #include <oqs/oqs.h>
7 
8 #ifdef OQS_ENABLE_SIG_sphincs_haraka_128f_robust
9 #define OQS_SIG_sphincs_haraka_128f_robust_length_public_key 32
10 #define OQS_SIG_sphincs_haraka_128f_robust_length_secret_key 64
11 #define OQS_SIG_sphincs_haraka_128f_robust_length_signature 17088
12 
13 OQS_SIG *OQS_SIG_sphincs_haraka_128f_robust_new(void);
14 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
15 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
16 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
17 #endif
18 
19 #ifdef OQS_ENABLE_SIG_sphincs_haraka_128f_simple
20 #define OQS_SIG_sphincs_haraka_128f_simple_length_public_key 32
21 #define OQS_SIG_sphincs_haraka_128f_simple_length_secret_key 64
22 #define OQS_SIG_sphincs_haraka_128f_simple_length_signature 17088
23 
24 OQS_SIG *OQS_SIG_sphincs_haraka_128f_simple_new(void);
25 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
26 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
27 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
28 #endif
29 
30 #ifdef OQS_ENABLE_SIG_sphincs_haraka_128s_robust
31 #define OQS_SIG_sphincs_haraka_128s_robust_length_public_key 32
32 #define OQS_SIG_sphincs_haraka_128s_robust_length_secret_key 64
33 #define OQS_SIG_sphincs_haraka_128s_robust_length_signature 7856
34 
35 OQS_SIG *OQS_SIG_sphincs_haraka_128s_robust_new(void);
36 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
37 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
38 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
39 #endif
40 
41 #ifdef OQS_ENABLE_SIG_sphincs_haraka_128s_simple
42 #define OQS_SIG_sphincs_haraka_128s_simple_length_public_key 32
43 #define OQS_SIG_sphincs_haraka_128s_simple_length_secret_key 64
44 #define OQS_SIG_sphincs_haraka_128s_simple_length_signature 7856
45 
46 OQS_SIG *OQS_SIG_sphincs_haraka_128s_simple_new(void);
47 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
48 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
49 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
50 #endif
51 
52 #ifdef OQS_ENABLE_SIG_sphincs_haraka_192f_robust
53 #define OQS_SIG_sphincs_haraka_192f_robust_length_public_key 48
54 #define OQS_SIG_sphincs_haraka_192f_robust_length_secret_key 96
55 #define OQS_SIG_sphincs_haraka_192f_robust_length_signature 35664
56 
57 OQS_SIG *OQS_SIG_sphincs_haraka_192f_robust_new(void);
58 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
59 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
60 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
61 #endif
62 
63 #ifdef OQS_ENABLE_SIG_sphincs_haraka_192f_simple
64 #define OQS_SIG_sphincs_haraka_192f_simple_length_public_key 48
65 #define OQS_SIG_sphincs_haraka_192f_simple_length_secret_key 96
66 #define OQS_SIG_sphincs_haraka_192f_simple_length_signature 35664
67 
68 OQS_SIG *OQS_SIG_sphincs_haraka_192f_simple_new(void);
69 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
70 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
71 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
72 #endif
73 
74 #ifdef OQS_ENABLE_SIG_sphincs_haraka_192s_robust
75 #define OQS_SIG_sphincs_haraka_192s_robust_length_public_key 48
76 #define OQS_SIG_sphincs_haraka_192s_robust_length_secret_key 96
77 #define OQS_SIG_sphincs_haraka_192s_robust_length_signature 16224
78 
79 OQS_SIG *OQS_SIG_sphincs_haraka_192s_robust_new(void);
80 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
81 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
82 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
83 #endif
84 
85 #ifdef OQS_ENABLE_SIG_sphincs_haraka_192s_simple
86 #define OQS_SIG_sphincs_haraka_192s_simple_length_public_key 48
87 #define OQS_SIG_sphincs_haraka_192s_simple_length_secret_key 96
88 #define OQS_SIG_sphincs_haraka_192s_simple_length_signature 16224
89 
90 OQS_SIG *OQS_SIG_sphincs_haraka_192s_simple_new(void);
91 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
92 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
93 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
94 #endif
95 
96 #ifdef OQS_ENABLE_SIG_sphincs_haraka_256f_robust
97 #define OQS_SIG_sphincs_haraka_256f_robust_length_public_key 64
98 #define OQS_SIG_sphincs_haraka_256f_robust_length_secret_key 128
99 #define OQS_SIG_sphincs_haraka_256f_robust_length_signature 49856
100 
101 OQS_SIG *OQS_SIG_sphincs_haraka_256f_robust_new(void);
102 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
103 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
104 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
105 #endif
106 
107 #ifdef OQS_ENABLE_SIG_sphincs_haraka_256f_simple
108 #define OQS_SIG_sphincs_haraka_256f_simple_length_public_key 64
109 #define OQS_SIG_sphincs_haraka_256f_simple_length_secret_key 128
110 #define OQS_SIG_sphincs_haraka_256f_simple_length_signature 49856
111 
112 OQS_SIG *OQS_SIG_sphincs_haraka_256f_simple_new(void);
113 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
114 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
115 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
116 #endif
117 
118 #ifdef OQS_ENABLE_SIG_sphincs_haraka_256s_robust
119 #define OQS_SIG_sphincs_haraka_256s_robust_length_public_key 64
120 #define OQS_SIG_sphincs_haraka_256s_robust_length_secret_key 128
121 #define OQS_SIG_sphincs_haraka_256s_robust_length_signature 29792
122 
123 OQS_SIG *OQS_SIG_sphincs_haraka_256s_robust_new(void);
124 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
125 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
126 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
127 #endif
128 
129 #ifdef OQS_ENABLE_SIG_sphincs_haraka_256s_simple
130 #define OQS_SIG_sphincs_haraka_256s_simple_length_public_key 64
131 #define OQS_SIG_sphincs_haraka_256s_simple_length_secret_key 128
132 #define OQS_SIG_sphincs_haraka_256s_simple_length_signature 29792
133 
134 OQS_SIG *OQS_SIG_sphincs_haraka_256s_simple_new(void);
135 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
136 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
137 OQS_API OQS_STATUS OQS_SIG_sphincs_haraka_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
138 #endif
139 
140 #ifdef OQS_ENABLE_SIG_sphincs_sha256_128f_robust
141 #define OQS_SIG_sphincs_sha256_128f_robust_length_public_key 32
142 #define OQS_SIG_sphincs_sha256_128f_robust_length_secret_key 64
143 #define OQS_SIG_sphincs_sha256_128f_robust_length_signature 17088
144 
145 OQS_SIG *OQS_SIG_sphincs_sha256_128f_robust_new(void);
146 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
147 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
148 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
149 #endif
150 
151 #ifdef OQS_ENABLE_SIG_sphincs_sha256_128f_simple
152 #define OQS_SIG_sphincs_sha256_128f_simple_length_public_key 32
153 #define OQS_SIG_sphincs_sha256_128f_simple_length_secret_key 64
154 #define OQS_SIG_sphincs_sha256_128f_simple_length_signature 17088
155 
156 OQS_SIG *OQS_SIG_sphincs_sha256_128f_simple_new(void);
157 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
158 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
159 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
160 #endif
161 
162 #ifdef OQS_ENABLE_SIG_sphincs_sha256_128s_robust
163 #define OQS_SIG_sphincs_sha256_128s_robust_length_public_key 32
164 #define OQS_SIG_sphincs_sha256_128s_robust_length_secret_key 64
165 #define OQS_SIG_sphincs_sha256_128s_robust_length_signature 7856
166 
167 OQS_SIG *OQS_SIG_sphincs_sha256_128s_robust_new(void);
168 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
169 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
170 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
171 #endif
172 
173 #ifdef OQS_ENABLE_SIG_sphincs_sha256_128s_simple
174 #define OQS_SIG_sphincs_sha256_128s_simple_length_public_key 32
175 #define OQS_SIG_sphincs_sha256_128s_simple_length_secret_key 64
176 #define OQS_SIG_sphincs_sha256_128s_simple_length_signature 7856
177 
178 OQS_SIG *OQS_SIG_sphincs_sha256_128s_simple_new(void);
179 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
180 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
181 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
182 #endif
183 
184 #ifdef OQS_ENABLE_SIG_sphincs_sha256_192f_robust
185 #define OQS_SIG_sphincs_sha256_192f_robust_length_public_key 48
186 #define OQS_SIG_sphincs_sha256_192f_robust_length_secret_key 96
187 #define OQS_SIG_sphincs_sha256_192f_robust_length_signature 35664
188 
189 OQS_SIG *OQS_SIG_sphincs_sha256_192f_robust_new(void);
190 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
191 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
192 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
193 #endif
194 
195 #ifdef OQS_ENABLE_SIG_sphincs_sha256_192f_simple
196 #define OQS_SIG_sphincs_sha256_192f_simple_length_public_key 48
197 #define OQS_SIG_sphincs_sha256_192f_simple_length_secret_key 96
198 #define OQS_SIG_sphincs_sha256_192f_simple_length_signature 35664
199 
200 OQS_SIG *OQS_SIG_sphincs_sha256_192f_simple_new(void);
201 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
202 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
203 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
204 #endif
205 
206 #ifdef OQS_ENABLE_SIG_sphincs_sha256_192s_robust
207 #define OQS_SIG_sphincs_sha256_192s_robust_length_public_key 48
208 #define OQS_SIG_sphincs_sha256_192s_robust_length_secret_key 96
209 #define OQS_SIG_sphincs_sha256_192s_robust_length_signature 16224
210 
211 OQS_SIG *OQS_SIG_sphincs_sha256_192s_robust_new(void);
212 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
213 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
214 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
215 #endif
216 
217 #ifdef OQS_ENABLE_SIG_sphincs_sha256_192s_simple
218 #define OQS_SIG_sphincs_sha256_192s_simple_length_public_key 48
219 #define OQS_SIG_sphincs_sha256_192s_simple_length_secret_key 96
220 #define OQS_SIG_sphincs_sha256_192s_simple_length_signature 16224
221 
222 OQS_SIG *OQS_SIG_sphincs_sha256_192s_simple_new(void);
223 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
224 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
225 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
226 #endif
227 
228 #ifdef OQS_ENABLE_SIG_sphincs_sha256_256f_robust
229 #define OQS_SIG_sphincs_sha256_256f_robust_length_public_key 64
230 #define OQS_SIG_sphincs_sha256_256f_robust_length_secret_key 128
231 #define OQS_SIG_sphincs_sha256_256f_robust_length_signature 49856
232 
233 OQS_SIG *OQS_SIG_sphincs_sha256_256f_robust_new(void);
234 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
235 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
236 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
237 #endif
238 
239 #ifdef OQS_ENABLE_SIG_sphincs_sha256_256f_simple
240 #define OQS_SIG_sphincs_sha256_256f_simple_length_public_key 64
241 #define OQS_SIG_sphincs_sha256_256f_simple_length_secret_key 128
242 #define OQS_SIG_sphincs_sha256_256f_simple_length_signature 49856
243 
244 OQS_SIG *OQS_SIG_sphincs_sha256_256f_simple_new(void);
245 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
246 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
247 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
248 #endif
249 
250 #ifdef OQS_ENABLE_SIG_sphincs_sha256_256s_robust
251 #define OQS_SIG_sphincs_sha256_256s_robust_length_public_key 64
252 #define OQS_SIG_sphincs_sha256_256s_robust_length_secret_key 128
253 #define OQS_SIG_sphincs_sha256_256s_robust_length_signature 29792
254 
255 OQS_SIG *OQS_SIG_sphincs_sha256_256s_robust_new(void);
256 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
257 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
258 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
259 #endif
260 
261 #ifdef OQS_ENABLE_SIG_sphincs_sha256_256s_simple
262 #define OQS_SIG_sphincs_sha256_256s_simple_length_public_key 64
263 #define OQS_SIG_sphincs_sha256_256s_simple_length_secret_key 128
264 #define OQS_SIG_sphincs_sha256_256s_simple_length_signature 29792
265 
266 OQS_SIG *OQS_SIG_sphincs_sha256_256s_simple_new(void);
267 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
268 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
269 OQS_API OQS_STATUS OQS_SIG_sphincs_sha256_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
270 #endif
271 
272 #ifdef OQS_ENABLE_SIG_sphincs_shake256_128f_robust
273 #define OQS_SIG_sphincs_shake256_128f_robust_length_public_key 32
274 #define OQS_SIG_sphincs_shake256_128f_robust_length_secret_key 64
275 #define OQS_SIG_sphincs_shake256_128f_robust_length_signature 17088
276 
277 OQS_SIG *OQS_SIG_sphincs_shake256_128f_robust_new(void);
278 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
279 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
280 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
281 #endif
282 
283 #ifdef OQS_ENABLE_SIG_sphincs_shake256_128f_simple
284 #define OQS_SIG_sphincs_shake256_128f_simple_length_public_key 32
285 #define OQS_SIG_sphincs_shake256_128f_simple_length_secret_key 64
286 #define OQS_SIG_sphincs_shake256_128f_simple_length_signature 17088
287 
288 OQS_SIG *OQS_SIG_sphincs_shake256_128f_simple_new(void);
289 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
290 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
291 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
292 #endif
293 
294 #ifdef OQS_ENABLE_SIG_sphincs_shake256_128s_robust
295 #define OQS_SIG_sphincs_shake256_128s_robust_length_public_key 32
296 #define OQS_SIG_sphincs_shake256_128s_robust_length_secret_key 64
297 #define OQS_SIG_sphincs_shake256_128s_robust_length_signature 7856
298 
299 OQS_SIG *OQS_SIG_sphincs_shake256_128s_robust_new(void);
300 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
301 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
302 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
303 #endif
304 
305 #ifdef OQS_ENABLE_SIG_sphincs_shake256_128s_simple
306 #define OQS_SIG_sphincs_shake256_128s_simple_length_public_key 32
307 #define OQS_SIG_sphincs_shake256_128s_simple_length_secret_key 64
308 #define OQS_SIG_sphincs_shake256_128s_simple_length_signature 7856
309 
310 OQS_SIG *OQS_SIG_sphincs_shake256_128s_simple_new(void);
311 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
312 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
313 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_128s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
314 #endif
315 
316 #ifdef OQS_ENABLE_SIG_sphincs_shake256_192f_robust
317 #define OQS_SIG_sphincs_shake256_192f_robust_length_public_key 48
318 #define OQS_SIG_sphincs_shake256_192f_robust_length_secret_key 96
319 #define OQS_SIG_sphincs_shake256_192f_robust_length_signature 35664
320 
321 OQS_SIG *OQS_SIG_sphincs_shake256_192f_robust_new(void);
322 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
323 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
324 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
325 #endif
326 
327 #ifdef OQS_ENABLE_SIG_sphincs_shake256_192f_simple
328 #define OQS_SIG_sphincs_shake256_192f_simple_length_public_key 48
329 #define OQS_SIG_sphincs_shake256_192f_simple_length_secret_key 96
330 #define OQS_SIG_sphincs_shake256_192f_simple_length_signature 35664
331 
332 OQS_SIG *OQS_SIG_sphincs_shake256_192f_simple_new(void);
333 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
334 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
335 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
336 #endif
337 
338 #ifdef OQS_ENABLE_SIG_sphincs_shake256_192s_robust
339 #define OQS_SIG_sphincs_shake256_192s_robust_length_public_key 48
340 #define OQS_SIG_sphincs_shake256_192s_robust_length_secret_key 96
341 #define OQS_SIG_sphincs_shake256_192s_robust_length_signature 16224
342 
343 OQS_SIG *OQS_SIG_sphincs_shake256_192s_robust_new(void);
344 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
345 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
346 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
347 #endif
348 
349 #ifdef OQS_ENABLE_SIG_sphincs_shake256_192s_simple
350 #define OQS_SIG_sphincs_shake256_192s_simple_length_public_key 48
351 #define OQS_SIG_sphincs_shake256_192s_simple_length_secret_key 96
352 #define OQS_SIG_sphincs_shake256_192s_simple_length_signature 16224
353 
354 OQS_SIG *OQS_SIG_sphincs_shake256_192s_simple_new(void);
355 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
356 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
357 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_192s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
358 #endif
359 
360 #ifdef OQS_ENABLE_SIG_sphincs_shake256_256f_robust
361 #define OQS_SIG_sphincs_shake256_256f_robust_length_public_key 64
362 #define OQS_SIG_sphincs_shake256_256f_robust_length_secret_key 128
363 #define OQS_SIG_sphincs_shake256_256f_robust_length_signature 49856
364 
365 OQS_SIG *OQS_SIG_sphincs_shake256_256f_robust_new(void);
366 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
367 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
368 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
369 #endif
370 
371 #ifdef OQS_ENABLE_SIG_sphincs_shake256_256f_simple
372 #define OQS_SIG_sphincs_shake256_256f_simple_length_public_key 64
373 #define OQS_SIG_sphincs_shake256_256f_simple_length_secret_key 128
374 #define OQS_SIG_sphincs_shake256_256f_simple_length_signature 49856
375 
376 OQS_SIG *OQS_SIG_sphincs_shake256_256f_simple_new(void);
377 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
378 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
379 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256f_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
380 #endif
381 
382 #ifdef OQS_ENABLE_SIG_sphincs_shake256_256s_robust
383 #define OQS_SIG_sphincs_shake256_256s_robust_length_public_key 64
384 #define OQS_SIG_sphincs_shake256_256s_robust_length_secret_key 128
385 #define OQS_SIG_sphincs_shake256_256s_robust_length_signature 29792
386 
387 OQS_SIG *OQS_SIG_sphincs_shake256_256s_robust_new(void);
388 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_keypair(uint8_t *public_key, uint8_t *secret_key);
389 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
390 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_robust_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
391 #endif
392 
393 #ifdef OQS_ENABLE_SIG_sphincs_shake256_256s_simple
394 #define OQS_SIG_sphincs_shake256_256s_simple_length_public_key 64
395 #define OQS_SIG_sphincs_shake256_256s_simple_length_secret_key 128
396 #define OQS_SIG_sphincs_shake256_256s_simple_length_signature 29792
397 
398 OQS_SIG *OQS_SIG_sphincs_shake256_256s_simple_new(void);
399 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_keypair(uint8_t *public_key, uint8_t *secret_key);
400 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key);
401 OQS_API OQS_STATUS OQS_SIG_sphincs_shake256_256s_simple_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key);
402 #endif
403 
404 #endif
405