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