pub const HRP: &str = "ms";
pub const SEPARATOR: char = '1';
pub const RESERVED_PREFIX: u8 = 0x00;
pub const THRESHOLD_V01: u8 = b'0';
pub const SHARE_INDEX_V01: u8 = b's';
pub const CHECKSUM_LEN_SHORT: usize = 13;
pub const VALID_ENTR_LENGTHS: &[usize] = &[16, 20, 24, 28, 32];
pub const VALID_STR_LENGTHS: &[usize] = &[50, 56, 62, 69, 75];
pub const TAG_ENTR: [u8; 4] = *b"entr";
pub const RESERVED_NOT_EMITTED_V01: &[[u8; 4]] = &[*b"seed", *b"xprv", *b"mnem", *b"prvk"];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn valid_str_lengths_match_entr_lengths_via_bijection() {
assert_eq!(VALID_ENTR_LENGTHS.len(), VALID_STR_LENGTHS.len());
for (i, &entropy_bytes) in VALID_ENTR_LENGTHS.iter().enumerate() {
let data_bits = (entropy_bytes + 1) * 8; let payload_symbols = data_bits.div_ceil(5);
let total = 9 + payload_symbols + CHECKSUM_LEN_SHORT;
assert_eq!(
total, VALID_STR_LENGTHS[i],
"entropy {} B -> expected str.len {}, got {} (bijection drift)",
entropy_bytes, VALID_STR_LENGTHS[i], total
);
}
}
}