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}