fips205-source/src/lib.rs

277 lines
5.6 KiB
Rust
Raw Normal View History

2024-01-11 23:49:25 +00:00
#![no_std]
#![deny(clippy::pedantic)]
#![deny(warnings)]
#![deny(missing_docs)]
#![allow(dead_code)]
//! TKTK crate doc
extern crate alloc;
mod algs;
mod traits;
/// to be deleted
#[must_use]
pub fn add(left: usize, right: usize) -> usize { left + right }
struct Params {
w: usize
}
macro_rules! functionality {
() => {
use zeroize::{Zeroize, ZeroizeOnDrop};
use crate::traits::PK;
// ----- 'EXTERNAL' DATA TYPES -----
/// Correctly sized private key specific to the target security parameter set. <br>
#[derive(Clone, Zeroize, ZeroizeOnDrop)]
pub struct PrivateKey {
pub(crate) sk_seed: [u8; N],
sk_prf: [u8; N],
pk_seed: [u8; N],
pk_root: [u8; N],
}
impl PK for PrivateKey {
type Seed = [u8; N];
fn seed(&self) -> [u8; N] {self.sk_seed}
}
};
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_128s")]
pub mod slh_dsa_sha2_128s {
const N: usize = 16;
const H: u32 = 63;
const D: u32 = 7;
const H_PRIME: u32 = 9;
const A: u32 = 12;
const K: u32 = 14;
const LGW: u32 = 4;
const M: u32 = 30;
const PK_LEN: usize = 32;
const SIG_LEN: usize = 7856;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_shake_128s")]
pub mod slh_dsa_shake_128s {
const N: usize = 16;
const H: u32 = 63;
const D: u32 = 7;
const H_PRIME: u32 = 9;
const A: u32 = 12;
const K: u32 = 14;
const LGW: u32 = 4;
const M: u32 = 30;
const PK_LEN: usize = 32;
const SIG_LEN: usize = 7856;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_128f")]
pub mod slh_dsa_sha2_128f {
const N: usize = 16;
const H: u32 = 66;
const D: u32 = 22;
const H_PRIME: u32 = 3;
const A: u32 = 6;
const K: u32 = 33;
const LGW: u32 = 4;
const M: u32 = 34;
const PK_LEN: usize = 32;
const SIG_LEN: usize = 17088;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_shake_128f")]
pub mod slh_dsa_shake_128f {
const N: usize = 16;
const H: u32 = 66;
const D: u32 = 22;
const H_PRIME: u32 = 3;
const A: u32 = 6;
const K: u32 = 33;
const LGW: u32 = 4;
const M: u32 = 34;
const PK_LEN: usize = 32;
const SIG_LEN: usize = 17088;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_192s")]
pub mod slh_dsa_sha2_192s {
const N: usize = 24;
const H: u32 = 63;
const D: u32 = 7;
const H_PRIME: u32 = 9;
const A: u32 = 14;
const K: u32 = 17;
const LGW: u32 = 4;
const M: u32 = 39;
const PK_LEN: usize = 48;
const SIG_LEN: usize = 16224;
const SK_LEN: usize = 00000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_shake_192s")]
pub mod slh_dsa_shake_192s {
const N: usize = 24;
const H: u32 = 63;
const D: u32 = 7;
const H_PRIME: u32 = 9;
const A: u32 = 14;
const K: u32 = 17;
const LGW: u32 = 4;
const M: u32 = 39;
const PK_LEN: usize = 48;
const SIG_LEN: usize = 16224;
const SK_LEN: usize = 00000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_192f")]
pub mod slh_dsa_sha2_192f {
const N: usize = 24;
const H: u32 = 66;
const D: u32 = 22;
const H_PRIME: u32 = 3;
const A: u32 = 8;
const K: u32 = 33;
const LGW: u32 = 4;
const M: u32 = 42;
const PK_LEN: usize = 48;
const SIG_LEN: usize = 35664;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_shake_192f")]
pub mod slh_dsa_shake_192f {
const N: usize = 24;
const H: u32 = 66;
const D: u32 = 22;
const H_PRIME: u32 = 3;
const A: u32 = 8;
const K: u32 = 33;
const LGW: u32 = 4;
const M: u32 = 42;
const PK_LEN: usize = 48;
const SIG_LEN: usize = 35664;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_256s")]
pub mod slh_dsa_sha2_256s {
const N: usize = 32;
const H: u32 = 64;
const D: u32 = 8;
const H_PRIME: u32 = 8;
const A: u32 = 14;
const K: u32 = 22;
const LGW: u32 = 4;
const M: u32 = 47;
const PK_LEN: usize = 64;
const SIG_LEN: usize = 29792;
const SK_LEN: usize = 0000;
functionality!();
2023-11-26 20:18:22 +00:00
}
2024-01-11 23:49:25 +00:00
/// TKTK
#[cfg(feature = "slh_dsa_shake_256s")]
pub mod slh_dsa_shake_256s {
const N: usize = 32;
const H: u32 = 64;
const D: u32 = 8;
const H_PRIME: u32 = 8;
const A: u32 = 14;
const K: u32 = 22;
const LGW: u32 = 4;
const M: u32 = 47;
const PK_LEN: usize = 64;
const SIG_LEN: usize = 29792;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_sha2_256f")]
pub mod slh_dsa_sha2_256f {
const N: usize = 32;
const H: u32 = 68;
const D: u32 = 17;
const H_PRIME: u32 = 4;
const A: u32 = 9;
const K: u32 = 35;
const LGW: u32 = 4;
const M: u32 = 49;
const PK_LEN: usize = 64;
const SIG_LEN: usize = 49856;
const SK_LEN: usize = 0000;
functionality!();
}
/// TKTK
#[cfg(feature = "slh_dsa_shake_256f")]
pub mod slh_dsa_shake_256f {
const N: usize = 32;
const H: u32 = 68;
const D: u32 = 17;
const H_PRIME: u32 = 4;
const A: u32 = 9;
const K: u32 = 35;
const LGW: u32 = 4;
const M: u32 = 49;
const PK_LEN: usize = 64;
const SIG_LEN: usize = 49856;
const SK_LEN: usize = 0000;
functionality!();
}
2023-11-26 20:18:22 +00:00
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}