Function detached_jws::decode::deserialize[][src]

pub fn deserialize<V>(
    jws: &impl AsRef<[u8]>,
    payload: &mut impl Read,
    verifier: V
) -> Result<Map<String, Value>> where
    V: Verify

Deserialize and verify detached jws.

Examples

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

use std::io::{Write};
use anyhow::Result;
use serde_json::{Map};
use detached_jws::{Verify};

#[derive(Default)]
pub struct DummyVerifier;

impl Verify for DummyVerifier {
    fn verify(&self, signature: &[u8]) -> Result<bool> {
        Ok(true)
    }
}

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

let detached_jws =  "eyJhbGciOiJ0ZXN0X2FsZ29yaXRobSIsImN1c3RvbSI6ImN1c3RvbV92YWx1ZSJ9..ZXlKaGJHY2lPaUowWlhOMFgyRnNaMjl5YVhSb2JTSXNJbU4xYzNSdmJTSTZJbU4xYzNSdmJWOTJZV3gxWlNKOS5BQUVDQXdRRkJn".as_bytes();

let verified_headers = detached_jws::deserialize(
    &detached_jws,
    &mut vec![0, 1, 2, 3, 4, 5, 6].as_slice(),
    DummyVerifier::default()).unwrap();

assert_eq!(
    verified_headers.get("custom").unwrap().as_str().unwrap(),
    "custom_value"
);