quantcrypt/dsa/common/config/
pk_len.rs1use crate::dsa::common::dsa_type::DsaType;
2pub trait PKLen {
5 fn get_pk_len(&self) -> Option<usize>;
6}
7
8impl PKLen for DsaType {
9 fn get_pk_len(&self) -> Option<usize> {
15 match self {
16 DsaType::Rsa2048Pkcs15SHA256 => None,
17 DsaType::Rsa2048PssSHA256 => None,
18 DsaType::Rsa3072Pkcs15SHA512 => None,
19 DsaType::Rsa3072PssSHA512 => None,
20
21 DsaType::EcdsaP256SHA256 => Some(65),
22 DsaType::EcdsaP256SHA512 => Some(65),
23 DsaType::EcdsaP384SHA512 => Some(97),
24 DsaType::EcdsaBrainpoolP256r1SHA256 => Some(65),
25 DsaType::EcdsaBrainpoolP256r1SHA512 => Some(65),
26 DsaType::EcdsaBrainpoolP384r1SHA512 => Some(97),
27 DsaType::Ed25519SHA512 => Some(32),
28 DsaType::Ed448SHA512 => Some(57),
29
30 DsaType::MlDsa44 => Some(1312),
31 DsaType::MlDsa65 => Some(1952),
32 DsaType::MlDsa87 => Some(2592),
33
34 DsaType::MlDsa44Rsa2048PssSha256 => None,
36 DsaType::MlDsa44Rsa2048Pkcs15Sha256 => None,
37 DsaType::MlDsa44Ed25519SHA512 => None,
38 DsaType::MlDsa44EcdsaP256SHA256 => None,
39 DsaType::MlDsa44EcdsaBrainpoolP256r1SHA256 => None,
40 DsaType::MlDsa65Rsa3072PssSHA512 => None,
41 DsaType::MlDsa65Rsa3072Pkcs15SHA512 => None,
42 DsaType::MlDsa65EcdsaP256SHA512 => None,
43 DsaType::MlDsa65EcdsaBrainpoolP256r1SHA512 => None,
44 DsaType::MlDsa65Ed25519SHA512 => None,
45 DsaType::MlDsa87EcdsaP384SHA512 => None,
46 DsaType::MlDsa87EcdsaBrainpoolP384r1SHA512 => None,
47 DsaType::MlDsa87Ed448SHA512 => None,
48
49 #[cfg(not(feature = "ipd"))]
50 DsaType::SlhDsaSha2_128s => Some(32),
51 #[cfg(not(feature = "ipd"))]
52 DsaType::SlhDsaSha2_128f => Some(32),
53 #[cfg(not(feature = "ipd"))]
54 DsaType::SlhDsaSha2_192s => Some(48),
55 #[cfg(not(feature = "ipd"))]
56 DsaType::SlhDsaSha2_192f => Some(48),
57 #[cfg(not(feature = "ipd"))]
58 DsaType::SlhDsaSha2_256s => Some(64),
59 #[cfg(not(feature = "ipd"))]
60 DsaType::SlhDsaSha2_256f => Some(64),
61 #[cfg(not(feature = "ipd"))]
62 DsaType::SlhDsaShake128s => Some(32),
63 #[cfg(not(feature = "ipd"))]
64 DsaType::SlhDsaShake128f => Some(32),
65 #[cfg(not(feature = "ipd"))]
66 DsaType::SlhDsaShake192s => Some(48),
67 #[cfg(not(feature = "ipd"))]
68 DsaType::SlhDsaShake192f => Some(48),
69 #[cfg(not(feature = "ipd"))]
70 DsaType::SlhDsaShake256s => Some(64),
71 #[cfg(not(feature = "ipd"))]
72 DsaType::SlhDsaShake256f => Some(64),
73 }
74 }
75}