[][src]Struct tide::http::cookies::PrivateJar

pub struct PrivateJar<'a> { /* fields omitted */ }
This is supported on crate feature private only.

A child cookie jar that provides authenticated encryption for its cookies.

A private child jar signs and encrypts all the cookies added to it and verifies and decrypts cookies retrieved from it. Any cookies stored in a PrivateJar are simultaneously assured confidentiality, integrity, and authenticity. In other words, clients cannot discover nor tamper with the contents of a cookie, nor can they fabricate cookie data.

Implementations

impl<'a> PrivateJar<'a>[src]

pub fn get(&self, name: &str) -> Option<Cookie<'static>>[src]

Returns a reference to the Cookie inside this jar with the name name and authenticates and decrypts the cookie's value, returning a Cookie with the decrypted value. If the cookie cannot be found, or the cookie fails to authenticate or decrypt, None is returned.

Example

use cookie::{CookieJar, Cookie, Key};

let key = Key::generate();
let mut jar = CookieJar::new();
let mut private_jar = jar.private(&key);
assert!(private_jar.get("name").is_none());

private_jar.add(Cookie::new("name", "value"));
assert_eq!(private_jar.get("name").unwrap().value(), "value");

pub fn add(&mut self, cookie: Cookie<'static>)[src]

Adds cookie to the parent jar. The cookie's value is encrypted with authenticated encryption assuring confidentiality, integrity, and authenticity.

Example

use cookie::{CookieJar, Cookie, Key};

let key = Key::generate();
let mut jar = CookieJar::new();
jar.private(&key).add(Cookie::new("name", "value"));

assert_ne!(jar.get("name").unwrap().value(), "value");
assert_eq!(jar.private(&key).get("name").unwrap().value(), "value");

pub fn add_original(&mut self, cookie: Cookie<'static>)[src]

Adds an "original" cookie to parent jar. The cookie's value is encrypted with authenticated encryption assuring confidentiality, integrity, and authenticity. Adding an original cookie does not affect the CookieJar::delta() computation. This method is intended to be used to seed the cookie jar with cookies received from a client's HTTP message.

For accurate delta computations, this method should not be called after calling remove.

Example

use cookie::{CookieJar, Cookie, Key};

let key = Key::generate();
let mut jar = CookieJar::new();
jar.private(&key).add_original(Cookie::new("name", "value"));

assert_eq!(jar.iter().count(), 1);
assert_eq!(jar.delta().count(), 0);

pub fn remove(&mut self, cookie: Cookie<'static>)[src]

Removes cookie from the parent jar.

For correct removal, the passed in cookie must contain the same path and domain as the cookie that was initially set.

See `CookieJar::remove() for more details.

Example

use cookie::{CookieJar, Cookie, Key};

let key = Key::generate();
let mut jar = CookieJar::new();
let mut private_jar = jar.private(&key);

private_jar.add(Cookie::new("name", "value"));
assert!(private_jar.get("name").is_some());

private_jar.remove(Cookie::named("name"));
assert!(private_jar.get("name").is_none());

Auto Trait Implementations

impl<'a> RefUnwindSafe for PrivateJar<'a>[src]

impl<'a> Send for PrivateJar<'a>[src]

impl<'a> Sync for PrivateJar<'a>[src]

impl<'a> Unpin for PrivateJar<'a>[src]

impl<'a> !UnwindSafe for PrivateJar<'a>[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> Same<T> for T

type Output = T

Should always be Self

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.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,