azure_core/
base64.rs

1use base64::{
2    alphabet,
3    engine::{
4        general_purpose::{GeneralPurpose, GeneralPurposeConfig},
5        DecodePaddingMode,
6    },
7    Engine,
8};
9
10const STANDARD: GeneralPurpose = GeneralPurpose::new(
11    &alphabet::STANDARD,
12    GeneralPurposeConfig::new().with_decode_padding_mode(DecodePaddingMode::Indifferent),
13);
14
15const URL_SAFE: GeneralPurpose = GeneralPurpose::new(
16    &alphabet::URL_SAFE,
17    GeneralPurposeConfig::new()
18        .with_decode_padding_mode(DecodePaddingMode::Indifferent)
19        .with_encode_padding(false),
20);
21
22pub fn encode<T>(input: T) -> String
23where
24    T: AsRef<[u8]>,
25{
26    STANDARD.encode(input)
27}
28
29pub fn decode<T>(input: T) -> crate::Result<Vec<u8>>
30where
31    T: AsRef<[u8]>,
32{
33    Ok(STANDARD.decode(input)?)
34}
35
36pub fn encode_url_safe<T>(input: T) -> String
37where
38    T: AsRef<[u8]>,
39{
40    URL_SAFE.encode(input)
41}
42
43pub fn decode_url_safe<T>(input: T) -> crate::Result<Vec<u8>>
44where
45    T: AsRef<[u8]>,
46{
47    Ok(URL_SAFE.decode(input)?)
48}