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!(
21                "base64 transform returned invalid UTF-8: {error}"
22            ))
23        })
24    }
25
26    pub fn decode_base64(input: &[u8]) -> Result<Vec<u8>> {
27        let mut status = 0;
28        let mut error = std::ptr::null_mut();
29        let raw = unsafe {
30            bridge::security_transform_decode_base64(
31                input.as_ptr().cast(),
32                bridge::len_to_isize(input.len())?,
33                &mut status,
34                &mut error,
35            )
36        };
37        bridge::required_data("security_transform_decode_base64", raw, status, error)
38    }
39}