pqcrypto_sphincsplus/
lib.rs

1//! # sphincsplus
2//!
3//! This crate provides bindings to and wrappers around the following
4//! implementations from [PQClean][pqc]:
5//!
6//! * sphincs-shake-128f-simple - clean
7//! * sphincs-shake-128s-simple - clean
8//! * sphincs-shake-192f-simple - clean
9//! * sphincs-shake-192s-simple - clean
10//! * sphincs-shake-256f-simple - clean
11//! * sphincs-shake-256s-simple - clean
12//! * sphincs-sha2-128f-simple - clean
13//! * sphincs-sha2-128s-simple - clean
14//! * sphincs-sha2-192f-simple - clean
15//! * sphincs-sha2-192s-simple - clean
16//! * sphincs-sha2-256f-simple - clean
17//! * sphincs-sha2-256s-simple - clean
18//!
19//! [pqc]: https://github.com/pqclean/pqclean/
20//!
21
22#![no_std]
23#![allow(clippy::len_without_is_empty)]
24
25// For no-std vectors
26extern crate alloc;
27
28// For tests
29#[cfg(feature = "std")]
30extern crate std;
31
32pub mod ffi;
33pub mod sphincssha2128fsimple;
34pub mod sphincssha2128ssimple;
35pub mod sphincssha2192fsimple;
36pub mod sphincssha2192ssimple;
37pub mod sphincssha2256fsimple;
38pub mod sphincssha2256ssimple;
39pub mod sphincsshake128fsimple;
40pub mod sphincsshake128ssimple;
41pub mod sphincsshake192fsimple;
42pub mod sphincsshake192ssimple;
43pub mod sphincsshake256fsimple;
44pub mod sphincsshake256ssimple;
45
46pub use crate::sphincssha2128fsimple::{
47    detached_sign as sphincssha2128fsimple_detached_sign, keypair as sphincssha2128fsimple_keypair,
48    open as sphincssha2128fsimple_open, public_key_bytes as sphincssha2128fsimple_public_key_bytes,
49    secret_key_bytes as sphincssha2128fsimple_secret_key_bytes, sign as sphincssha2128fsimple_sign,
50    signature_bytes as sphincssha2128fsimple_signature_bytes,
51    verify_detached_signature as sphincssha2128fsimple_verify_detached_signature,
52};
53pub use crate::sphincssha2128ssimple::{
54    detached_sign as sphincssha2128ssimple_detached_sign, keypair as sphincssha2128ssimple_keypair,
55    open as sphincssha2128ssimple_open, public_key_bytes as sphincssha2128ssimple_public_key_bytes,
56    secret_key_bytes as sphincssha2128ssimple_secret_key_bytes, sign as sphincssha2128ssimple_sign,
57    signature_bytes as sphincssha2128ssimple_signature_bytes,
58    verify_detached_signature as sphincssha2128ssimple_verify_detached_signature,
59};
60pub use crate::sphincssha2192fsimple::{
61    detached_sign as sphincssha2192fsimple_detached_sign, keypair as sphincssha2192fsimple_keypair,
62    open as sphincssha2192fsimple_open, public_key_bytes as sphincssha2192fsimple_public_key_bytes,
63    secret_key_bytes as sphincssha2192fsimple_secret_key_bytes, sign as sphincssha2192fsimple_sign,
64    signature_bytes as sphincssha2192fsimple_signature_bytes,
65    verify_detached_signature as sphincssha2192fsimple_verify_detached_signature,
66};
67pub use crate::sphincssha2192ssimple::{
68    detached_sign as sphincssha2192ssimple_detached_sign, keypair as sphincssha2192ssimple_keypair,
69    open as sphincssha2192ssimple_open, public_key_bytes as sphincssha2192ssimple_public_key_bytes,
70    secret_key_bytes as sphincssha2192ssimple_secret_key_bytes, sign as sphincssha2192ssimple_sign,
71    signature_bytes as sphincssha2192ssimple_signature_bytes,
72    verify_detached_signature as sphincssha2192ssimple_verify_detached_signature,
73};
74pub use crate::sphincssha2256fsimple::{
75    detached_sign as sphincssha2256fsimple_detached_sign, keypair as sphincssha2256fsimple_keypair,
76    open as sphincssha2256fsimple_open, public_key_bytes as sphincssha2256fsimple_public_key_bytes,
77    secret_key_bytes as sphincssha2256fsimple_secret_key_bytes, sign as sphincssha2256fsimple_sign,
78    signature_bytes as sphincssha2256fsimple_signature_bytes,
79    verify_detached_signature as sphincssha2256fsimple_verify_detached_signature,
80};
81pub use crate::sphincssha2256ssimple::{
82    detached_sign as sphincssha2256ssimple_detached_sign, keypair as sphincssha2256ssimple_keypair,
83    open as sphincssha2256ssimple_open, public_key_bytes as sphincssha2256ssimple_public_key_bytes,
84    secret_key_bytes as sphincssha2256ssimple_secret_key_bytes, sign as sphincssha2256ssimple_sign,
85    signature_bytes as sphincssha2256ssimple_signature_bytes,
86    verify_detached_signature as sphincssha2256ssimple_verify_detached_signature,
87};
88pub use crate::sphincsshake128fsimple::{
89    detached_sign as sphincsshake128fsimple_detached_sign,
90    keypair as sphincsshake128fsimple_keypair, open as sphincsshake128fsimple_open,
91    public_key_bytes as sphincsshake128fsimple_public_key_bytes,
92    secret_key_bytes as sphincsshake128fsimple_secret_key_bytes,
93    sign as sphincsshake128fsimple_sign, signature_bytes as sphincsshake128fsimple_signature_bytes,
94    verify_detached_signature as sphincsshake128fsimple_verify_detached_signature,
95};
96pub use crate::sphincsshake128ssimple::{
97    detached_sign as sphincsshake128ssimple_detached_sign,
98    keypair as sphincsshake128ssimple_keypair, open as sphincsshake128ssimple_open,
99    public_key_bytes as sphincsshake128ssimple_public_key_bytes,
100    secret_key_bytes as sphincsshake128ssimple_secret_key_bytes,
101    sign as sphincsshake128ssimple_sign, signature_bytes as sphincsshake128ssimple_signature_bytes,
102    verify_detached_signature as sphincsshake128ssimple_verify_detached_signature,
103};
104pub use crate::sphincsshake192fsimple::{
105    detached_sign as sphincsshake192fsimple_detached_sign,
106    keypair as sphincsshake192fsimple_keypair, open as sphincsshake192fsimple_open,
107    public_key_bytes as sphincsshake192fsimple_public_key_bytes,
108    secret_key_bytes as sphincsshake192fsimple_secret_key_bytes,
109    sign as sphincsshake192fsimple_sign, signature_bytes as sphincsshake192fsimple_signature_bytes,
110    verify_detached_signature as sphincsshake192fsimple_verify_detached_signature,
111};
112pub use crate::sphincsshake192ssimple::{
113    detached_sign as sphincsshake192ssimple_detached_sign,
114    keypair as sphincsshake192ssimple_keypair, open as sphincsshake192ssimple_open,
115    public_key_bytes as sphincsshake192ssimple_public_key_bytes,
116    secret_key_bytes as sphincsshake192ssimple_secret_key_bytes,
117    sign as sphincsshake192ssimple_sign, signature_bytes as sphincsshake192ssimple_signature_bytes,
118    verify_detached_signature as sphincsshake192ssimple_verify_detached_signature,
119};
120pub use crate::sphincsshake256fsimple::{
121    detached_sign as sphincsshake256fsimple_detached_sign,
122    keypair as sphincsshake256fsimple_keypair, open as sphincsshake256fsimple_open,
123    public_key_bytes as sphincsshake256fsimple_public_key_bytes,
124    secret_key_bytes as sphincsshake256fsimple_secret_key_bytes,
125    sign as sphincsshake256fsimple_sign, signature_bytes as sphincsshake256fsimple_signature_bytes,
126    verify_detached_signature as sphincsshake256fsimple_verify_detached_signature,
127};
128pub use crate::sphincsshake256ssimple::{
129    detached_sign as sphincsshake256ssimple_detached_sign,
130    keypair as sphincsshake256ssimple_keypair, open as sphincsshake256ssimple_open,
131    public_key_bytes as sphincsshake256ssimple_public_key_bytes,
132    secret_key_bytes as sphincsshake256ssimple_secret_key_bytes,
133    sign as sphincsshake256ssimple_sign, signature_bytes as sphincsshake256ssimple_signature_bytes,
134    verify_detached_signature as sphincsshake256ssimple_verify_detached_signature,
135};