1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//! JWE (JSON Web Encryption) key management algorithms.
//!
//! This module provides implementations of various JWE key management algorithms
//! as specified in RFC 7518. Each key type is strongly typed to prevent misuse.
//!
//! # Supported Algorithms
//!
//! ## RSA Key Management
//! - `RSA-OAEP` - RSA with OAEP using SHA-1
//!
//! Note: RSA-OAEP-256 (with SHA-256) is not currently supported because the underlying
//! boring/superboring crates do not expose the API to specify the OAEP hash function.
//!
//! ## Symmetric Key Wrap
//! - `A256KW` - AES-256 Key Wrap (recommended)
//! - `A128KW` - AES-128 Key Wrap
//!
//! ## ECDH Key Agreement
//! - `ECDH-ES+A256KW` - ECDH with AES-256 Key Wrap (recommended)
//! - `ECDH-ES+A128KW` - ECDH with AES-128 Key Wrap
//!
//! # Content Encryption
//!
//! All key management algorithms support these content encryption algorithms:
//! - `A256GCM` - AES-256-GCM (default, recommended)
//! - `A128GCM` - AES-128-GCM
//!
//! # Examples
//!
//! ## RSA-OAEP
//!
//! ```rust
//! use jwt_simple::prelude::*;
//!
//! // Generate a key pair
//! let decryption_key = RsaOaepDecryptionKey::generate(2048).unwrap();
//! let encryption_key = decryption_key.encryption_key();
//!
//! // Encrypt
//! let claims = Claims::create(Duration::from_hours(1))
//! .with_subject("user@example.com");
//! let token = encryption_key.encrypt(claims).unwrap();
//!
//! // Decrypt
//! let claims = decryption_key.decrypt_token::<NoCustomClaims>(&token, None).unwrap();
//! ```
//!
//! ## AES Key Wrap
//!
//! ```rust
//! use jwt_simple::prelude::*;
//!
//! // Generate a symmetric key
//! let key = A256KWKey::generate();
//!
//! // Encrypt
//! let claims = Claims::create(Duration::from_hours(1));
//! let token = key.encrypt(claims).unwrap();
//!
//! // Decrypt
//! let claims = key.decrypt_token::<NoCustomClaims>(&token, None).unwrap();
//! ```
//!
//! ## ECDH-ES+A256KW
//!
//! ```rust
//! use jwt_simple::prelude::*;
//!
//! // Generate a key pair
//! let decryption_key = EcdhEsA256KWDecryptionKey::generate();
//! let encryption_key = decryption_key.encryption_key();
//!
//! // Encrypt
//! let claims = Claims::create(Duration::from_hours(1));
//! let token = encryption_key.encrypt(claims).unwrap();
//!
//! // Decrypt
//! let claims = decryption_key.decrypt_token::<NoCustomClaims>(&token, None).unwrap();
//! ```
pub use ;
pub use ContentEncryption;
pub use ;
pub use ;