diff --git a/server/src/utils.rs b/server/src/utils.rs index 67d851b..a18e95f 100644 --- a/server/src/utils.rs +++ b/server/src/utils.rs @@ -1,35 +1,18 @@ // 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 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); encode_config(raw, cfg) } -pub fn decode_param(enc: &str) -> Result { - 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 _ignored = getrandom(&mut raw_slice).unwrap(); - let mut buf = String::new(); - 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 + return raw_slice; } #[cfg(test)] mod encoder_decoder_tests { @@ -37,9 +20,8 @@ mod encoder_decoder_tests { #[test] fn encode_decode() { - let raw = "some random bs"; - let enc = encode_param(raw); - let dec = decode_param(&enc); - assert_eq!(raw, dec.unwrap()); + let raw = new_key(); + let enc = encode_param(&raw); + print!("{}", enc); } } \ No newline at end of file