42 lines
972 B
Rust
42 lines
972 B
Rust
#[warn(clippy::all, clippy::pedantic)]
|
|
pub mod decode;
|
|
pub mod encode;
|
|
pub mod error;
|
|
|
|
pub use {decode::Decoder, encode::Encoder, error::Error as B64Error};
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub struct B32Alphabet {
|
|
items: [u8; 32],
|
|
pad: Option<u8>,
|
|
}
|
|
|
|
pub static B32_RFC4648_ALPHABET: B32Alphabet = B32Alphabet {
|
|
items: [
|
|
b'A', b'B', b'C', b'D', b'E', b'F', b'G', b'H', b'I', b'J', b'K', b'L', b'M', b'N', b'O',
|
|
b'P', b'Q', b'R', b'S', b'T', b'U', b'V', b'W', b'X', b'Y', b'Z', b'2', b'3', b'4', b'5',
|
|
b'6', b'7',
|
|
],
|
|
pad: Some(b'='),
|
|
};
|
|
|
|
impl Default for B32Alphabet {
|
|
fn default() -> Self {
|
|
B32_RFC4648_ALPHABET
|
|
}
|
|
}
|
|
|
|
impl B32Alphabet {
|
|
pub(crate) fn idx(&self, c: u8) -> Option<usize> {
|
|
for (idx, x) in self.items.iter().enumerate() {
|
|
if *x == c {
|
|
return Some(idx);
|
|
}
|
|
}
|
|
None
|
|
}
|
|
|
|
pub(crate) fn pad(&self) -> Option<u8> {
|
|
self.pad
|
|
}
|
|
}
|