Struct detached_jws::decode::DeserializeJwsWriter[][src]

pub struct DeserializeJwsWriter<V: Write> { /* fields omitted */ }

A Write implementation 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, Value};
use detached_jws::{Verify, DeserializeJwsWriter};

#[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 jws =  "eyJhbGciOiJ0ZXN0X2FsZ29yaXRobSIsImN1c3RvbSI6ImN1c3RvbV92YWx1ZSJ9..ZXlKaGJHY2lPaUowWlhOMFgyRnNaMjl5YVhSb2JTSXNJbU4xYzNSdmJTSTZJbU4xYzNSdmJWOTJZV3gxWlNKOS5BQUVDQXdRRkJn".as_bytes();

let mut writer = DeserializeJwsWriter::new(&jws,
    |h| Some(DummyVerifier::default())
).unwrap();
writer.write_all(&[0, 1, 2, 3]);
writer.write_all(&[4, 5, 6]);

let verified_headers = writer.finish().unwrap();

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

Implementations

impl<V> DeserializeJwsWriter<V> where
    V: Verify
[src]

pub fn new<S>(jws: &impl AsRef<[u8]>, selector: S) -> Result<Self> where
    S: FnOnce(&Map<String, Value>) -> Option<V>, 
[src]

pub fn finish(&mut self) -> Result<Map<String, Value>>[src]

Trait Implementations

impl<V> Write for DeserializeJwsWriter<V> where
    V: Verify
[src]

Auto Trait Implementations

impl<V> RefUnwindSafe for DeserializeJwsWriter<V> where
    V: RefUnwindSafe
[src]

impl<V> Send for DeserializeJwsWriter<V> where
    V: Send
[src]

impl<V> Sync for DeserializeJwsWriter<V> where
    V: Sync
[src]

impl<V> Unpin for DeserializeJwsWriter<V> where
    V: Unpin
[src]

impl<V> UnwindSafe for DeserializeJwsWriter<V> where
    V: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.