Function detached_jws::encode::serialize[][src]

pub fn serialize(
    algorithm: String,
    mut header: JwsHeader,
    payload: &mut impl Read,
    signer: &mut impl Sign
) -> Result<Vec<u8>>

Serialize to detached jws

Examples

extern crate detached_jws;
extern crate anyhow;
extern crate serde_json;

use std::io::{Write};
use anyhow::Result;
use serde_json::{json, Map};
use detached_jws::{Sign};

#[derive(Default)]
pub struct DummySigner(Vec<u8>);

impl Sign for DummySigner {
    fn get_sign(&self) -> Result<Vec<u8>> {
        Ok(self.0.clone())
    }
}

impl Write for DummySigner {
    fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
        self.0.write(buf)
    }
    fn flush(&mut self) -> std::io::Result<()> {
       Ok(())
    }
}

let mut header = Map::new();
header.insert("custom".to_owned(), json!("custom_value"));

let detached_jws = detached_jws::serialize(
       "test_algorithm".to_owned(),
       header,
       &mut vec![0, 1, 2, 3, 4, 5, 6].as_slice(),
       &mut DummySigner::default()).unwrap();

assert_eq!(
       String::from_utf8(detached_jws).unwrap(),
       "eyJhbGciOiJ0ZXN0X2FsZ29yaXRobSIsImN1c3RvbSI6ImN1c3RvbV92YWx1ZSJ9..ZXlKaGJHY2lPaUowWlhOMFgyRnNaMjl5YVhSb2JTSXNJbU4xYzNSdmJTSTZJbU4xYzNSdmJWOTJZV3gxWlNKOS5BQUVDQXdRRkJn");