Skip to main content

security/
transform.rs

1use crate::bridge;
2use crate::error::{Result, SecurityError};
3
4/// Wraps Security Transforms helpers.
5pub struct Transform;
6
7impl Transform {
8    /// Wraps the corresponding Security Transforms operation.
9    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    /// Wraps the corresponding Security Transforms operation.
29    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}