Crate cookie

source ·
Expand description

HTTP cookie parsing and cookie jar management.

This crates provides the Cookie type, representing an HTTP cookie, and the CookieJar type, which manages a collection of cookies for session management, recording changes as they are made, and optional automatic cookie encryption and signing.

Usage

Add the following to the [dependencies] section of your Cargo.toml:

cookie = "0.17"

Features

This crate exposes several features, all of which are disabled by default:

  • percent-encode

    Enables percent encoding and decoding of names and values in cookies.

    When this feature is enabled, the Cookie::encoded() and Cookie::parse_encoded() methods are available. The encoded method returns a wrapper around a Cookie whose Display implementation percent-encodes the name and value of the cookie. The parse_encoded method percent-decodes the name and value of a Cookie during parsing.

  • signed

    Enables signed cookies via CookieJar::signed().

    When this feature is enabled, the CookieJar::signed() method, SignedJar type, and Key type are available. The jar acts as “child jar”; operations on the jar automatically sign and verify cookies as they are added and retrieved from the parent jar.

  • private

    Enables private (authenticated, encrypted) cookies via CookieJar::private().

    When this feature is enabled, the CookieJar::private() method, PrivateJar type, and Key type are available. The jar acts as “child jar”; operations on the jar automatically encrypt and decrypt/authenticate cookies as they are added and retrieved from the parent jar.

  • key-expansion

    Enables key expansion or key derivation via Key::derive_from().

    When this feature is enabled, and either signed or private are also enabled, the Key::derive_from() method is available. The method can be used to derive a Key structure appropriate for use with signed and private jars from cryptographically valid key material that is shorter in length than the full key.

  • secure

    A meta-feature that simultaneously enables signed, private, and key-expansion.

You can enable features via Cargo.toml:

[dependencies.cookie]
features = ["secure", "percent-encode"]

Re-exports

pub use time;

Structs

Representation of an HTTP cookie.
Structure that follows the builder pattern for building Cookie structs.
A collection of cookies that tracks its modifications.
Iterator over the changes to a cookie jar.
Wrapper around Cookie whose Display implementation either percent-encodes the cookie’s name and value, skips displaying the cookie’s parameters (only displaying it’s name and value), or both.
Iterator over all of the cookies in a jar.
Keyprivate or signed
A cryptographic master key for use with Signed and/or Private jars.
PrivateJarprivate
A child cookie jar that provides authenticated encryption for its cookies.
SignedJarsigned
A child cookie jar that authenticates its cookies.
An iterator over cookie parse Results: Result<Cookie, ParseError>.

Enums

A cookie’s expiration: either session or a date-time.
KeyErrorprivate or signed
An error indicating an issue with generating or constructing a key.
Enum corresponding to a parsing error.
The SameSite cookie attribute.