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
|
// 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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user