Macro cggmp21::define_security_level
source · macro_rules! define_security_level { ($struct_name:ident { security_bits = $k:expr, epsilon = $e:expr, ell = $ell:expr, ell_prime = $ell_prime:expr, m = $m:tt, q = $q:expr, }) => { ... }; ($struct_name:ident { epsilon = $e:expr, ell = $ell:expr, ell_prime = $ell_prime:expr, m = 128, q = $q:expr, }) => { ... }; ($struct_name:ident { epsilon = $e:expr, ell = $ell:expr, ell_prime = $ell_prime:expr, m = $m:tt, q = $q:expr, }) => { ... }; }
Expand description
Defines security level
§Example
This code defines security level corresponding to $\kappa=1024$, $\varepsilon=128$, $\ell = \ell’ = 1024$, $m = 128$, and $q = 2^{48}-1$ (note: choice of parameters is random, it does not correspond to meaningful security level):
use cggmp21::security_level::define_security_level;
use cggmp21::rug::Integer;
#[derive(Clone)]
pub struct MyLevel;
define_security_level!(MyLevel{
security_bits = 1024,
epsilon = 128,
ell = 1024,
ell_prime = 1024,
m = 128,
q = (Integer::ONE.clone() << 48_u32) - 1,
});Note: currently, security parameter $m$ is hardcoded to the M = 128 due to compiler limitations.
Setting any other value of $m$ results into compilation error. We’re going to fix that once generic_const_exprs
feature is stable.