use super::ThotpError;
pub use data_encoding;
use data_encoding::Encoding;
pub fn encode(buffer: &[u8], encoding: Encoding) -> String {
encoding.encode(buffer)
}
pub fn decode(key: &str, encoding: Encoding) -> Result<Vec<u8>, ThotpError> {
let decoded = encoding.decode(key.as_bytes())?;
Ok(decoded)
}
#[cfg(test)]
mod tests {
use super::super::{generate_secret, ThotpError};
use super::{decode, encode};
#[test]
fn encode_decode() -> Result<(), ThotpError> {
let buffer = generate_secret(160);
let encoded = encode(&buffer, data_encoding::BASE32);
let decoded: [u8; 160] = decode(&encoded, data_encoding::BASE32)?.try_into().unwrap();
assert_eq!(buffer, decoded);
Ok(())
}
}