1use zeroize::Zeroizing;
4
5use self::hash::HashAlgorithm;
6use crate::types::SignatureBytes;
7
8pub mod aead;
11pub mod aes_kw;
12pub mod sym;
13
14pub mod dsa;
17pub mod ecdh;
18pub mod ecdsa;
19pub mod ed25519;
20pub mod ed448;
21pub mod elgamal;
22pub mod rsa;
23pub mod x25519;
24pub mod x448;
25
26#[cfg(feature = "draft-pqc")]
29pub mod ml_dsa65_ed25519;
30#[cfg(feature = "draft-pqc")]
31pub mod ml_dsa87_ed448;
32#[cfg(feature = "draft-pqc")]
33pub mod ml_kem1024_x448;
34#[cfg(feature = "draft-pqc")]
35pub mod ml_kem768_x25519;
36#[cfg(feature = "draft-pqc")]
37pub mod slh_dsa_shake128f;
38#[cfg(feature = "draft-pqc")]
39pub mod slh_dsa_shake128s;
40#[cfg(feature = "draft-pqc")]
41pub mod slh_dsa_shake256s;
42
43pub mod checksum;
46pub mod ecc_curve;
47pub mod hash;
48pub mod public_key;
49
50pub trait Decryptor {
52 type EncryptionFields<'a>;
53
54 fn decrypt(
55 &self,
56 data: Self::EncryptionFields<'_>,
57 ) -> crate::errors::Result<Zeroizing<Vec<u8>>>;
58}
59
60pub trait Signer {
62 fn sign(&self, hash: HashAlgorithm, digest: &[u8]) -> crate::errors::Result<SignatureBytes>;
63}