moondsa is a MoonBit implementation of Dilithium, a post-quantum signature scheme.
// 首先需要设置优先级别
@dilithium.dilithium_context.set_level(SecurityLevel::Dilithium5)
let (pk, sk) = keypair_gen(Ok(seed)) // 这里需要传入seed或者Rand作为随机
let sign = sign(msg, sk)
let result : Result[Unit, SignError] = verify(sig, msg, pk)type BigRandomtype DilithiumContextpub struct KeccakState {
s : FixedArray[UInt64]
pos : UInt
}impl Default for KeccakStateimpl Show for KeccakStatepub struct ParameterSet {
k : Int
l : Int
eta : Int
tau : Int
beta : Int
gamma1 : Int
gamma2 : Int
omega : Int
publickey_bytes : Int
polyeta_packedbytes : Int
polyw1_packedbytes : Int
polyz_packed_bytes : Int
poly_uniform_gamma1_nblocks : UInt
polyvech_packed_bytes : Int
sign_bytes : Int
level : SecurityLevel
features : Map[String, String]
}let SHAKE128_RATE : UIntlet SHAKE256_RATE : UIntfn decompose(a : Int) -> (Int, Int)fn keccakf1600_statepermute(state : FixedArray[UInt64]) -> Unitfn reduce32(a : Int) -> IntInstall
Download zipmoondsa is a MoonBit implementation of Dilithium, a post-quantum signature scheme.