macro_rules! define_security_level {
($struct_name:ident {
kappa_bits: $k:expr,
rsa_prime_bitlen: $rsa_prime_bitlen:expr,
rsa_pubkey_bitlen: $rsa_pubkey_bitlen:expr,
epsilon: $e:expr,
ell: $ell:expr,
ell_prime: $ell_prime:expr,
m: $m:tt,
}) => { ... };
($struct_name:ident {
rsa_prime_bitlen: $rsa_prime_bitlen:expr,
rsa_pubkey_bitlen: $rsa_pubkey_bitlen:expr,
epsilon: $e:expr,
ell: $ell:expr,
ell_prime: $ell_prime:expr,
m: 128,
}) => { ... };
($struct_name:ident {
rsa_prime_bitlen: $rsa_prime_bitlen:expr,
rsa_pubkey_bitlen: $rsa_pubkey_bitlen:expr,
epsilon: $e:expr,
ell: $ell:expr,
ell_prime: $ell_prime:expr,
m: $m:tt,
}) => { ... };
}Expand description
Defines security level
§Example
This code defines security level corresponding to $\kappa=1024$, RSA prime bitlen = 256, RSA public key bitlen = 511, $\varepsilon=128$, $\ell = \ell’ = 1024$, and $m = 128$ (note: choice of parameters is random, it does not correspond to meaningful security level):
use cggmp24::security_level::define_security_level;
#[derive(Clone)]
pub struct MyLevel;
define_security_level!(MyLevel {
kappa_bits: 1024,
rsa_prime_bitlen: 256,
rsa_pubkey_bitlen: 511,
epsilon: 128,
ell: 1024,
ell_prime: 1024,
m: 128,
});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.