new test for encode params
This commit is contained in:
parent
97e6b026cc
commit
13ab387a93
@ -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<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 _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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user