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}