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