cypheron_core/
lib.rs

1// Copyright 2025 Cypheron Labs, Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15pub mod hybrid;
16pub mod kat;
17pub mod kem;
18#[cfg(feature = "optimized-variants")]
19pub mod optimization;
20pub mod platform;
21pub mod security;
22pub mod sig;
23
24pub use platform::{get_platform_info, secure_random_bytes, secure_zero, PlatformInfo};
25
26pub use hybrid::traits::{HybridEngine, HybridKemEngine, VerificationPolicy};
27pub use kem::{Kem, KemVariant};
28pub use sig::traits::{SignatureEngine, SignatureScheme};
29
30pub use kem::{MlKem1024, MlKem512, MlKem768};
31
32pub use sig::{Falcon1024, Falcon512, MlDsa44, MlDsa65, MlDsa87};
33
34pub use hybrid::{
35    CompositeKeypair, CompositeSignature, EccDilithium, EccFalcon, EccSphincs, HybridCiphertext,
36    HybridSharedSecret, P256MlKem768,
37};
38
39pub mod sphincs {
40    pub use crate::sig::sphincs::haraka_192f;
41    pub use crate::sig::sphincs::sha2_256s;
42    pub use crate::sig::sphincs::shake_128f;
43}
44
45pub mod kyber {
46    #[deprecated(
47        since = "0.2.0",
48        note = "Use MlKem1024 instead for NIST FIPS 203 compliance"
49    )]
50    pub use crate::kem::MlKem1024 as Kyber1024;
51    #[deprecated(
52        since = "0.2.0",
53        note = "Use MlKem512 instead for NIST FIPS 203 compliance"
54    )]
55    pub use crate::kem::MlKem512 as Kyber512;
56    #[deprecated(
57        since = "0.2.0",
58        note = "Use MlKem768 instead for NIST FIPS 203 compliance"
59    )]
60    pub use crate::kem::MlKem768 as Kyber768;
61}
62
63pub mod prelude {
64
65    pub use crate::{HybridEngine, HybridKemEngine, Kem, SignatureEngine, VerificationPolicy};
66
67    pub use crate::{EccDilithium, MlDsa44, MlKem768, P256MlKem768};
68
69    pub use crate::{MlKem1024, MlKem512};
70
71    pub use crate::{Falcon1024, Falcon512, MlDsa65, MlDsa87};
72
73    pub use crate::{EccFalcon, EccSphincs};
74
75    pub use crate::{secure_random_bytes, secure_zero};
76
77    pub use crate::{CompositeKeypair, CompositeSignature, HybridCiphertext, HybridSharedSecret};
78}
79
80pub mod security_levels {
81
82    pub mod level1 {
83        pub use crate::sphincs::sha2_256s;
84        pub use crate::sphincs::shake_128f;
85        pub use crate::{Falcon512, MlKem512};
86    }
87
88    pub mod level2 {
89        pub use crate::MlDsa44;
90    }
91
92    pub mod level3 {
93        pub use crate::sphincs::haraka_192f;
94        pub use crate::{MlDsa65, MlKem768};
95    }
96
97    pub mod level5 {
98        pub use crate::{Falcon1024, MlDsa87, MlKem1024};
99    }
100
101    pub mod recommended {
102
103        pub mod balanced {
104            pub use crate::{EccDilithium, MlDsa44, MlKem768};
105        }
106
107        pub mod high_security {
108            pub use crate::{MlDsa87, MlKem1024};
109        }
110
111        pub mod low_latency {
112            pub use crate::{MlDsa44, MlKem512};
113        }
114    }
115}