pink072 1.0.0

PINK-072 specification implementation for embedding payloads in pink cover images
Documentation
use wasm_bindgen::prelude::*;

use crate::core::{pink072_unwrap, pink072_wrap, pink072_wrap_into};

#[wasm_bindgen]
pub struct UnwrapResult {
    payload_type: u8,
    payload: Vec<u8>,
}

#[wasm_bindgen]
impl UnwrapResult {
    #[wasm_bindgen(getter)]
    pub fn payload_type(&self) -> u8 {
        self.payload_type
    }

    #[wasm_bindgen(getter)]
    pub fn payload(&self) -> Vec<u8> {
        self.payload.clone()
    }
}

#[wasm_bindgen]
pub fn wasm_pink072_wrap(
    payload: &[u8],
    payload_type: u8,
    seed9: &[u8],
    strength: u8,
) -> Result<Vec<u8>, JsValue> {
    pink072_wrap(payload, payload_type, seed9, strength)
        .map_err(|e| JsValue::from_str(&e.to_string()))
}

#[wasm_bindgen]
pub fn wasm_pink072_wrap_into(
    payload: &[u8],
    payload_type: u8,
    seed9: &[u8],
    strength: u8,
    out_frame: &mut [u8],
) -> Result<usize, JsValue> {
    pink072_wrap_into(payload, payload_type, seed9, strength, out_frame)
        .map_err(|e| JsValue::from_str(&e.to_string()))
}

#[wasm_bindgen]
pub fn wasm_pink072_unwrap(frame: &[u8]) -> Result<UnwrapResult, JsValue> {
    let (payload_type, payload) =
        pink072_unwrap(frame).map_err(|e| JsValue::from_str(&e.to_string()))?;
    Ok(UnwrapResult {
        payload_type,
        payload,
    })
}