new test for encode params

This commit is contained in:
shockrah 2020-05-20 02:05:43 -07:00
parent 97e6b026cc
commit 13ab387a93

View File

@ -1,35 +1,18 @@
// Generic functions used by pretty much everyone // Generic functions used by pretty much everyone
use base64::{self, encode_config, decode_config, URL_SAFE}; use base64::{self, encode_config};
use getrandom::getrandom; use getrandom::getrandom;
use std::str;
pub fn encode_param(raw: &str) -> String { pub fn encode_param(raw: &[u8]) -> String {
let cfg = base64::Config::new(base64::CharacterSet::UrlSafe, false); let cfg = base64::Config::new(base64::CharacterSet::UrlSafe, false);
encode_config(raw, cfg) encode_config(raw, cfg)
} }
pub fn decode_param(enc: &str) -> Result<String, i32> {
let cfg = base64::Config::new(base64::CharacterSet::UrlSafe, false);
let bytes = decode_config(enc, cfg).unwrap();
let res = str::from_utf8(&bytes);
match res {
Ok(data) => Ok(data.into()),
Err(_e) => Err(1)
}
}
pub fn new_key() -> String { pub fn new_key() -> [u8; 64] {
let mut raw_slice = [0u8; 64]; let mut raw_slice = [0u8; 64];
let _ignored = getrandom(&mut raw_slice).unwrap(); let _ignored = getrandom(&mut raw_slice).unwrap();
let mut buf = String::new(); return raw_slice;
for i in raw_slice.iter() {
let mut cv: u8 = *i;
if cv > 126 { cv %= 126; }
if cv < 33 { cv += 34; }
buf.push(cv as char);
}
buf
} }
#[cfg(test)] #[cfg(test)]
mod encoder_decoder_tests { mod encoder_decoder_tests {
@ -37,9 +20,8 @@ mod encoder_decoder_tests {
#[test] #[test]
fn encode_decode() { fn encode_decode() {
let raw = "some random bs"; let raw = new_key();
let enc = encode_param(raw); let enc = encode_param(&raw);
let dec = decode_param(&enc); print!("{}", enc);
assert_eq!(raw, dec.unwrap());
} }
} }