Skip to main content

security/
transform.rs

1use crate::bridge;
2use crate::error::{Result, SecurityError};
3
4pub struct Transform;
5
6impl Transform {
7    pub fn encode_base64(input: &[u8]) -> Result<String> {
8        let mut status = 0;
9        let mut error = std::ptr::null_mut();
10        let raw = unsafe {
11            bridge::security_transform_encode_base64(
12                input.as_ptr().cast(),
13                bridge::len_to_isize(input.len())?,
14                &mut status,
15                &mut error,
16            )
17        };
18        let bytes = bridge::required_data("security_transform_encode_base64", raw, status, error)?;
19        String::from_utf8(bytes).map_err(|error| {
20            SecurityError::Serialization(format!("base64 transform returned invalid UTF-8: {error}"))
21        })
22    }
23
24    pub fn decode_base64(input: &[u8]) -> Result<Vec<u8>> {
25        let mut status = 0;
26        let mut error = std::ptr::null_mut();
27        let raw = unsafe {
28            bridge::security_transform_decode_base64(
29                input.as_ptr().cast(),
30                bridge::len_to_isize(input.len())?,
31                &mut status,
32                &mut error,
33            )
34        };
35        bridge::required_data("security_transform_decode_base64", raw, status, error)
36    }
37}