1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
//! # sphincsplus
//!
//! This crate provides bindings to and wrappers around the following
//! implementations from [PQClean][pqc]:
//!
//! * sphincs-haraka-128f-robust - clean
//! * sphincs-haraka-128f-simple - clean
//! * sphincs-haraka-128s-robust - clean
//! * sphincs-haraka-128s-simple - clean
//! * sphincs-haraka-192f-robust - clean
//! * sphincs-haraka-192f-simple - clean
//! * sphincs-haraka-192s-robust - clean
//! * sphincs-haraka-192s-simple - clean
//! * sphincs-haraka-256f-robust - clean
//! * sphincs-haraka-256f-simple - clean
//! * sphincs-haraka-256s-robust - clean
//! * sphincs-haraka-256s-simple - clean
//! * sphincs-shake256-128f-robust - clean
//! * sphincs-shake256-128f-simple - clean
//! * sphincs-shake256-128s-robust - clean
//! * sphincs-shake256-128s-simple - clean
//! * sphincs-shake256-192f-robust - clean
//! * sphincs-shake256-192f-simple - clean
//! * sphincs-shake256-192s-robust - clean
//! * sphincs-shake256-192s-simple - clean
//! * sphincs-shake256-256f-robust - clean
//! * sphincs-shake256-256f-simple - clean
//! * sphincs-shake256-256s-robust - clean
//! * sphincs-shake256-256s-simple - clean
//! * sphincs-sha256-128f-robust - clean
//! * sphincs-sha256-128f-simple - clean
//! * sphincs-sha256-128s-robust - clean
//! * sphincs-sha256-128s-simple - clean
//! * sphincs-sha256-192f-robust - clean
//! * sphincs-sha256-192f-simple - clean
//! * sphincs-sha256-192s-robust - clean
//! * sphincs-sha256-192s-simple - clean
//! * sphincs-sha256-256f-robust - clean
//! * sphincs-sha256-256f-simple - clean
//! * sphincs-sha256-256s-robust - clean
//! * sphincs-sha256-256s-simple - clean
//!
//! [pqc]: https://github.com/pqclean/pqclean/
//!

#![no_std]
#![allow(clippy::len_without_is_empty)]

// For no-std vectors
extern crate alloc;

// For tests
#[cfg(feature = "std")]
extern crate std;

pub mod ffi;
pub mod sphincsharaka128frobust;
pub mod sphincsharaka128fsimple;
pub mod sphincsharaka128srobust;
pub mod sphincsharaka128ssimple;
pub mod sphincsharaka192frobust;
pub mod sphincsharaka192fsimple;
pub mod sphincsharaka192srobust;
pub mod sphincsharaka192ssimple;
pub mod sphincsharaka256frobust;
pub mod sphincsharaka256fsimple;
pub mod sphincsharaka256srobust;
pub mod sphincsharaka256ssimple;
pub mod sphincssha256128frobust;
pub mod sphincssha256128fsimple;
pub mod sphincssha256128srobust;
pub mod sphincssha256128ssimple;
pub mod sphincssha256192frobust;
pub mod sphincssha256192fsimple;
pub mod sphincssha256192srobust;
pub mod sphincssha256192ssimple;
pub mod sphincssha256256frobust;
pub mod sphincssha256256fsimple;
pub mod sphincssha256256srobust;
pub mod sphincssha256256ssimple;
pub mod sphincsshake256128frobust;
pub mod sphincsshake256128fsimple;
pub mod sphincsshake256128srobust;
pub mod sphincsshake256128ssimple;
pub mod sphincsshake256192frobust;
pub mod sphincsshake256192fsimple;
pub mod sphincsshake256192srobust;
pub mod sphincsshake256192ssimple;
pub mod sphincsshake256256frobust;
pub mod sphincsshake256256fsimple;
pub mod sphincsshake256256srobust;
pub mod sphincsshake256256ssimple;

pub use crate::sphincsharaka128frobust::{
    detached_sign as sphincsharaka128frobust_detached_sign,
    keypair as sphincsharaka128frobust_keypair, open as sphincsharaka128frobust_open,
    public_key_bytes as sphincsharaka128frobust_public_key_bytes,
    secret_key_bytes as sphincsharaka128frobust_secret_key_bytes,
    sign as sphincsharaka128frobust_sign,
    signature_bytes as sphincsharaka128frobust_signature_bytes,
    verify_detached_signature as sphincsharaka128frobust_verify_detached_signature,
};
pub use crate::sphincsharaka128fsimple::{
    detached_sign as sphincsharaka128fsimple_detached_sign,
    keypair as sphincsharaka128fsimple_keypair, open as sphincsharaka128fsimple_open,
    public_key_bytes as sphincsharaka128fsimple_public_key_bytes,
    secret_key_bytes as sphincsharaka128fsimple_secret_key_bytes,
    sign as sphincsharaka128fsimple_sign,
    signature_bytes as sphincsharaka128fsimple_signature_bytes,
    verify_detached_signature as sphincsharaka128fsimple_verify_detached_signature,
};
pub use crate::sphincsharaka128srobust::{
    detached_sign as sphincsharaka128srobust_detached_sign,
    keypair as sphincsharaka128srobust_keypair, open as sphincsharaka128srobust_open,
    public_key_bytes as sphincsharaka128srobust_public_key_bytes,
    secret_key_bytes as sphincsharaka128srobust_secret_key_bytes,
    sign as sphincsharaka128srobust_sign,
    signature_bytes as sphincsharaka128srobust_signature_bytes,
    verify_detached_signature as sphincsharaka128srobust_verify_detached_signature,
};
pub use crate::sphincsharaka128ssimple::{
    detached_sign as sphincsharaka128ssimple_detached_sign,
    keypair as sphincsharaka128ssimple_keypair, open as sphincsharaka128ssimple_open,
    public_key_bytes as sphincsharaka128ssimple_public_key_bytes,
    secret_key_bytes as sphincsharaka128ssimple_secret_key_bytes,
    sign as sphincsharaka128ssimple_sign,
    signature_bytes as sphincsharaka128ssimple_signature_bytes,
    verify_detached_signature as sphincsharaka128ssimple_verify_detached_signature,
};
pub use crate::sphincsharaka192frobust::{
    detached_sign as sphincsharaka192frobust_detached_sign,
    keypair as sphincsharaka192frobust_keypair, open as sphincsharaka192frobust_open,
    public_key_bytes as sphincsharaka192frobust_public_key_bytes,
    secret_key_bytes as sphincsharaka192frobust_secret_key_bytes,
    sign as sphincsharaka192frobust_sign,
    signature_bytes as sphincsharaka192frobust_signature_bytes,
    verify_detached_signature as sphincsharaka192frobust_verify_detached_signature,
};
pub use crate::sphincsharaka192fsimple::{
    detached_sign as sphincsharaka192fsimple_detached_sign,
    keypair as sphincsharaka192fsimple_keypair, open as sphincsharaka192fsimple_open,
    public_key_bytes as sphincsharaka192fsimple_public_key_bytes,
    secret_key_bytes as sphincsharaka192fsimple_secret_key_bytes,
    sign as sphincsharaka192fsimple_sign,
    signature_bytes as sphincsharaka192fsimple_signature_bytes,
    verify_detached_signature as sphincsharaka192fsimple_verify_detached_signature,
};
pub use crate::sphincsharaka192srobust::{
    detached_sign as sphincsharaka192srobust_detached_sign,
    keypair as sphincsharaka192srobust_keypair, open as sphincsharaka192srobust_open,
    public_key_bytes as sphincsharaka192srobust_public_key_bytes,
    secret_key_bytes as sphincsharaka192srobust_secret_key_bytes,
    sign as sphincsharaka192srobust_sign,
    signature_bytes as sphincsharaka192srobust_signature_bytes,
    verify_detached_signature as sphincsharaka192srobust_verify_detached_signature,
};
pub use crate::sphincsharaka192ssimple::{
    detached_sign as sphincsharaka192ssimple_detached_sign,
    keypair as sphincsharaka192ssimple_keypair, open as sphincsharaka192ssimple_open,
    public_key_bytes as sphincsharaka192ssimple_public_key_bytes,
    secret_key_bytes as sphincsharaka192ssimple_secret_key_bytes,
    sign as sphincsharaka192ssimple_sign,
    signature_bytes as sphincsharaka192ssimple_signature_bytes,
    verify_detached_signature as sphincsharaka192ssimple_verify_detached_signature,
};
pub use crate::sphincsharaka256frobust::{
    detached_sign as sphincsharaka256frobust_detached_sign,
    keypair as sphincsharaka256frobust_keypair, open as sphincsharaka256frobust_open,
    public_key_bytes as sphincsharaka256frobust_public_key_bytes,
    secret_key_bytes as sphincsharaka256frobust_secret_key_bytes,
    sign as sphincsharaka256frobust_sign,
    signature_bytes as sphincsharaka256frobust_signature_bytes,
    verify_detached_signature as sphincsharaka256frobust_verify_detached_signature,
};
pub use crate::sphincsharaka256fsimple::{
    detached_sign as sphincsharaka256fsimple_detached_sign,
    keypair as sphincsharaka256fsimple_keypair, open as sphincsharaka256fsimple_open,
    public_key_bytes as sphincsharaka256fsimple_public_key_bytes,
    secret_key_bytes as sphincsharaka256fsimple_secret_key_bytes,
    sign as sphincsharaka256fsimple_sign,
    signature_bytes as sphincsharaka256fsimple_signature_bytes,
    verify_detached_signature as sphincsharaka256fsimple_verify_detached_signature,
};
pub use crate::sphincsharaka256srobust::{
    detached_sign as sphincsharaka256srobust_detached_sign,
    keypair as sphincsharaka256srobust_keypair, open as sphincsharaka256srobust_open,
    public_key_bytes as sphincsharaka256srobust_public_key_bytes,
    secret_key_bytes as sphincsharaka256srobust_secret_key_bytes,
    sign as sphincsharaka256srobust_sign,
    signature_bytes as sphincsharaka256srobust_signature_bytes,
    verify_detached_signature as sphincsharaka256srobust_verify_detached_signature,
};
pub use crate::sphincsharaka256ssimple::{
    detached_sign as sphincsharaka256ssimple_detached_sign,
    keypair as sphincsharaka256ssimple_keypair, open as sphincsharaka256ssimple_open,
    public_key_bytes as sphincsharaka256ssimple_public_key_bytes,
    secret_key_bytes as sphincsharaka256ssimple_secret_key_bytes,
    sign as sphincsharaka256ssimple_sign,
    signature_bytes as sphincsharaka256ssimple_signature_bytes,
    verify_detached_signature as sphincsharaka256ssimple_verify_detached_signature,
};
pub use crate::sphincssha256128frobust::{
    detached_sign as sphincssha256128frobust_detached_sign,
    keypair as sphincssha256128frobust_keypair, open as sphincssha256128frobust_open,
    public_key_bytes as sphincssha256128frobust_public_key_bytes,
    secret_key_bytes as sphincssha256128frobust_secret_key_bytes,
    sign as sphincssha256128frobust_sign,
    signature_bytes as sphincssha256128frobust_signature_bytes,
    verify_detached_signature as sphincssha256128frobust_verify_detached_signature,
};
pub use crate::sphincssha256128fsimple::{
    detached_sign as sphincssha256128fsimple_detached_sign,
    keypair as sphincssha256128fsimple_keypair, open as sphincssha256128fsimple_open,
    public_key_bytes as sphincssha256128fsimple_public_key_bytes,
    secret_key_bytes as sphincssha256128fsimple_secret_key_bytes,
    sign as sphincssha256128fsimple_sign,
    signature_bytes as sphincssha256128fsimple_signature_bytes,
    verify_detached_signature as sphincssha256128fsimple_verify_detached_signature,
};
pub use crate::sphincssha256128srobust::{
    detached_sign as sphincssha256128srobust_detached_sign,
    keypair as sphincssha256128srobust_keypair, open as sphincssha256128srobust_open,
    public_key_bytes as sphincssha256128srobust_public_key_bytes,
    secret_key_bytes as sphincssha256128srobust_secret_key_bytes,
    sign as sphincssha256128srobust_sign,
    signature_bytes as sphincssha256128srobust_signature_bytes,
    verify_detached_signature as sphincssha256128srobust_verify_detached_signature,
};
pub use crate::sphincssha256128ssimple::{
    detached_sign as sphincssha256128ssimple_detached_sign,
    keypair as sphincssha256128ssimple_keypair, open as sphincssha256128ssimple_open,
    public_key_bytes as sphincssha256128ssimple_public_key_bytes,
    secret_key_bytes as sphincssha256128ssimple_secret_key_bytes,
    sign as sphincssha256128ssimple_sign,
    signature_bytes as sphincssha256128ssimple_signature_bytes,
    verify_detached_signature as sphincssha256128ssimple_verify_detached_signature,
};
pub use crate::sphincssha256192frobust::{
    detached_sign as sphincssha256192frobust_detached_sign,
    keypair as sphincssha256192frobust_keypair, open as sphincssha256192frobust_open,
    public_key_bytes as sphincssha256192frobust_public_key_bytes,
    secret_key_bytes as sphincssha256192frobust_secret_key_bytes,
    sign as sphincssha256192frobust_sign,
    signature_bytes as sphincssha256192frobust_signature_bytes,
    verify_detached_signature as sphincssha256192frobust_verify_detached_signature,
};
pub use crate::sphincssha256192fsimple::{
    detached_sign as sphincssha256192fsimple_detached_sign,
    keypair as sphincssha256192fsimple_keypair, open as sphincssha256192fsimple_open,
    public_key_bytes as sphincssha256192fsimple_public_key_bytes,
    secret_key_bytes as sphincssha256192fsimple_secret_key_bytes,
    sign as sphincssha256192fsimple_sign,
    signature_bytes as sphincssha256192fsimple_signature_bytes,
    verify_detached_signature as sphincssha256192fsimple_verify_detached_signature,
};
pub use crate::sphincssha256192srobust::{
    detached_sign as sphincssha256192srobust_detached_sign,
    keypair as sphincssha256192srobust_keypair, open as sphincssha256192srobust_open,
    public_key_bytes as sphincssha256192srobust_public_key_bytes,
    secret_key_bytes as sphincssha256192srobust_secret_key_bytes,
    sign as sphincssha256192srobust_sign,
    signature_bytes as sphincssha256192srobust_signature_bytes,
    verify_detached_signature as sphincssha256192srobust_verify_detached_signature,
};
pub use crate::sphincssha256192ssimple::{
    detached_sign as sphincssha256192ssimple_detached_sign,
    keypair as sphincssha256192ssimple_keypair, open as sphincssha256192ssimple_open,
    public_key_bytes as sphincssha256192ssimple_public_key_bytes,
    secret_key_bytes as sphincssha256192ssimple_secret_key_bytes,
    sign as sphincssha256192ssimple_sign,
    signature_bytes as sphincssha256192ssimple_signature_bytes,
    verify_detached_signature as sphincssha256192ssimple_verify_detached_signature,
};
pub use crate::sphincssha256256frobust::{
    detached_sign as sphincssha256256frobust_detached_sign,
    keypair as sphincssha256256frobust_keypair, open as sphincssha256256frobust_open,
    public_key_bytes as sphincssha256256frobust_public_key_bytes,
    secret_key_bytes as sphincssha256256frobust_secret_key_bytes,
    sign as sphincssha256256frobust_sign,
    signature_bytes as sphincssha256256frobust_signature_bytes,
    verify_detached_signature as sphincssha256256frobust_verify_detached_signature,
};
pub use crate::sphincssha256256fsimple::{
    detached_sign as sphincssha256256fsimple_detached_sign,
    keypair as sphincssha256256fsimple_keypair, open as sphincssha256256fsimple_open,
    public_key_bytes as sphincssha256256fsimple_public_key_bytes,
    secret_key_bytes as sphincssha256256fsimple_secret_key_bytes,
    sign as sphincssha256256fsimple_sign,
    signature_bytes as sphincssha256256fsimple_signature_bytes,
    verify_detached_signature as sphincssha256256fsimple_verify_detached_signature,
};
pub use crate::sphincssha256256srobust::{
    detached_sign as sphincssha256256srobust_detached_sign,
    keypair as sphincssha256256srobust_keypair, open as sphincssha256256srobust_open,
    public_key_bytes as sphincssha256256srobust_public_key_bytes,
    secret_key_bytes as sphincssha256256srobust_secret_key_bytes,
    sign as sphincssha256256srobust_sign,
    signature_bytes as sphincssha256256srobust_signature_bytes,
    verify_detached_signature as sphincssha256256srobust_verify_detached_signature,
};
pub use crate::sphincssha256256ssimple::{
    detached_sign as sphincssha256256ssimple_detached_sign,
    keypair as sphincssha256256ssimple_keypair, open as sphincssha256256ssimple_open,
    public_key_bytes as sphincssha256256ssimple_public_key_bytes,
    secret_key_bytes as sphincssha256256ssimple_secret_key_bytes,
    sign as sphincssha256256ssimple_sign,
    signature_bytes as sphincssha256256ssimple_signature_bytes,
    verify_detached_signature as sphincssha256256ssimple_verify_detached_signature,
};
pub use crate::sphincsshake256128frobust::{
    detached_sign as sphincsshake256128frobust_detached_sign,
    keypair as sphincsshake256128frobust_keypair, open as sphincsshake256128frobust_open,
    public_key_bytes as sphincsshake256128frobust_public_key_bytes,
    secret_key_bytes as sphincsshake256128frobust_secret_key_bytes,
    sign as sphincsshake256128frobust_sign,
    signature_bytes as sphincsshake256128frobust_signature_bytes,
    verify_detached_signature as sphincsshake256128frobust_verify_detached_signature,
};
pub use crate::sphincsshake256128fsimple::{
    detached_sign as sphincsshake256128fsimple_detached_sign,
    keypair as sphincsshake256128fsimple_keypair, open as sphincsshake256128fsimple_open,
    public_key_bytes as sphincsshake256128fsimple_public_key_bytes,
    secret_key_bytes as sphincsshake256128fsimple_secret_key_bytes,
    sign as sphincsshake256128fsimple_sign,
    signature_bytes as sphincsshake256128fsimple_signature_bytes,
    verify_detached_signature as sphincsshake256128fsimple_verify_detached_signature,
};
pub use crate::sphincsshake256128srobust::{
    detached_sign as sphincsshake256128srobust_detached_sign,
    keypair as sphincsshake256128srobust_keypair, open as sphincsshake256128srobust_open,
    public_key_bytes as sphincsshake256128srobust_public_key_bytes,
    secret_key_bytes as sphincsshake256128srobust_secret_key_bytes,
    sign as sphincsshake256128srobust_sign,
    signature_bytes as sphincsshake256128srobust_signature_bytes,
    verify_detached_signature as sphincsshake256128srobust_verify_detached_signature,
};
pub use crate::sphincsshake256128ssimple::{
    detached_sign as sphincsshake256128ssimple_detached_sign,
    keypair as sphincsshake256128ssimple_keypair, open as sphincsshake256128ssimple_open,
    public_key_bytes as sphincsshake256128ssimple_public_key_bytes,
    secret_key_bytes as sphincsshake256128ssimple_secret_key_bytes,
    sign as sphincsshake256128ssimple_sign,
    signature_bytes as sphincsshake256128ssimple_signature_bytes,
    verify_detached_signature as sphincsshake256128ssimple_verify_detached_signature,
};
pub use crate::sphincsshake256192frobust::{
    detached_sign as sphincsshake256192frobust_detached_sign,
    keypair as sphincsshake256192frobust_keypair, open as sphincsshake256192frobust_open,
    public_key_bytes as sphincsshake256192frobust_public_key_bytes,
    secret_key_bytes as sphincsshake256192frobust_secret_key_bytes,
    sign as sphincsshake256192frobust_sign,
    signature_bytes as sphincsshake256192frobust_signature_bytes,
    verify_detached_signature as sphincsshake256192frobust_verify_detached_signature,
};
pub use crate::sphincsshake256192fsimple::{
    detached_sign as sphincsshake256192fsimple_detached_sign,
    keypair as sphincsshake256192fsimple_keypair, open as sphincsshake256192fsimple_open,
    public_key_bytes as sphincsshake256192fsimple_public_key_bytes,
    secret_key_bytes as sphincsshake256192fsimple_secret_key_bytes,
    sign as sphincsshake256192fsimple_sign,
    signature_bytes as sphincsshake256192fsimple_signature_bytes,
    verify_detached_signature as sphincsshake256192fsimple_verify_detached_signature,
};
pub use crate::sphincsshake256192srobust::{
    detached_sign as sphincsshake256192srobust_detached_sign,
    keypair as sphincsshake256192srobust_keypair, open as sphincsshake256192srobust_open,
    public_key_bytes as sphincsshake256192srobust_public_key_bytes,
    secret_key_bytes as sphincsshake256192srobust_secret_key_bytes,
    sign as sphincsshake256192srobust_sign,
    signature_bytes as sphincsshake256192srobust_signature_bytes,
    verify_detached_signature as sphincsshake256192srobust_verify_detached_signature,
};
pub use crate::sphincsshake256192ssimple::{
    detached_sign as sphincsshake256192ssimple_detached_sign,
    keypair as sphincsshake256192ssimple_keypair, open as sphincsshake256192ssimple_open,
    public_key_bytes as sphincsshake256192ssimple_public_key_bytes,
    secret_key_bytes as sphincsshake256192ssimple_secret_key_bytes,
    sign as sphincsshake256192ssimple_sign,
    signature_bytes as sphincsshake256192ssimple_signature_bytes,
    verify_detached_signature as sphincsshake256192ssimple_verify_detached_signature,
};
pub use crate::sphincsshake256256frobust::{
    detached_sign as sphincsshake256256frobust_detached_sign,
    keypair as sphincsshake256256frobust_keypair, open as sphincsshake256256frobust_open,
    public_key_bytes as sphincsshake256256frobust_public_key_bytes,
    secret_key_bytes as sphincsshake256256frobust_secret_key_bytes,
    sign as sphincsshake256256frobust_sign,
    signature_bytes as sphincsshake256256frobust_signature_bytes,
    verify_detached_signature as sphincsshake256256frobust_verify_detached_signature,
};
pub use crate::sphincsshake256256fsimple::{
    detached_sign as sphincsshake256256fsimple_detached_sign,
    keypair as sphincsshake256256fsimple_keypair, open as sphincsshake256256fsimple_open,
    public_key_bytes as sphincsshake256256fsimple_public_key_bytes,
    secret_key_bytes as sphincsshake256256fsimple_secret_key_bytes,
    sign as sphincsshake256256fsimple_sign,
    signature_bytes as sphincsshake256256fsimple_signature_bytes,
    verify_detached_signature as sphincsshake256256fsimple_verify_detached_signature,
};
pub use crate::sphincsshake256256srobust::{
    detached_sign as sphincsshake256256srobust_detached_sign,
    keypair as sphincsshake256256srobust_keypair, open as sphincsshake256256srobust_open,
    public_key_bytes as sphincsshake256256srobust_public_key_bytes,
    secret_key_bytes as sphincsshake256256srobust_secret_key_bytes,
    sign as sphincsshake256256srobust_sign,
    signature_bytes as sphincsshake256256srobust_signature_bytes,
    verify_detached_signature as sphincsshake256256srobust_verify_detached_signature,
};
pub use crate::sphincsshake256256ssimple::{
    detached_sign as sphincsshake256256ssimple_detached_sign,
    keypair as sphincsshake256256ssimple_keypair, open as sphincsshake256256ssimple_open,
    public_key_bytes as sphincsshake256256ssimple_public_key_bytes,
    secret_key_bytes as sphincsshake256256ssimple_secret_key_bytes,
    sign as sphincsshake256256ssimple_sign,
    signature_bytes as sphincsshake256256ssimple_signature_bytes,
    verify_detached_signature as sphincsshake256256ssimple_verify_detached_signature,
};