Merge pull request #1 from itsscb/chore--streamline-api
chore: streamline api
This commit is contained in:
commit
6aa417188f
@ -2,7 +2,7 @@
|
|||||||
name = "paseto_maker"
|
name = "paseto_maker"
|
||||||
authors = ["itsscb <dev@itsscb.de>"]
|
authors = ["itsscb <dev@itsscb.de>"]
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
repository = "https://github.com/itsscb/paseto_maker"
|
repository = "https://github.com/itsscb/paseto_maker"
|
||||||
description = "This library provides high-level functionality for creating, handling, and managing PASETO tokens."
|
description = "This library provides high-level functionality for creating, handling, and managing PASETO tokens."
|
||||||
|
20
README.md
20
README.md
@ -9,24 +9,14 @@ This library provides high-level functionality for creating, handling, and manag
|
|||||||
This library includes modules for defining claims, handling errors, and creating/verifying PASETO tokens.
|
This library includes modules for defining claims, handling errors, and creating/verifying PASETO tokens.
|
||||||
It leverages the `rusty_paseto` crate and currently supports PASETO Tokens V4.public.
|
It leverages the `rusty_paseto` crate and currently supports PASETO Tokens V4.public.
|
||||||
|
|
||||||
# Modules
|
|
||||||
|
|
||||||
- `claims`: Defines the structure and behavior of the claims that can be embedded in a PASETO token.
|
|
||||||
- `errors`: Provides error types and handling mechanisms for the library.
|
|
||||||
- `maker`: Contains the logic for creating and verifying PASETO tokens.
|
|
||||||
|
|
||||||
# Re-exports
|
|
||||||
|
|
||||||
- `Claims`: The struct representing the claims in a PASETO token.
|
|
||||||
- `Maker`: The struct used for creating and verifying PASETO tokens.
|
|
||||||
|
|
||||||
# Usage Example
|
# Usage Example
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let maker = Maker::new_with_keypair().unwrap();
|
let (priv_key, _public_key) = Maker::new_keypair();
|
||||||
|
let maker = Maker::new(&priv_key).expect("failed to create maker");
|
||||||
let claims = Claims::new().with_subject("example");
|
let claims = Claims::new().with_subject("example");
|
||||||
let token = maker.create_token(&claims).unwrap();
|
let token = maker.create_token(&claims).unwrap();
|
||||||
println!("Token: {}", token);
|
println!("Token: {}", token);
|
||||||
@ -37,10 +27,4 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The `claims` module defines the structure and behavior of the claims that can be embedded in a PASETO token.
|
|
||||||
The `errors` module provides error types and handling mechanisms for the library.
|
|
||||||
The `maker` module contains the logic for creating and verifying PASETO tokens.
|
|
||||||
|
|
||||||
The `Claims` struct and `Maker` struct are re-exported for ease of use.
|
|
||||||
|
|
||||||
This library uses the `rusty_paseto` crate underneath and currently only supports PASETO Tokens V4.public.
|
This library uses the `rusty_paseto` crate underneath and currently only supports PASETO Tokens V4.public.
|
||||||
|
24
src/lib.rs
24
src/lib.rs
@ -6,21 +6,13 @@
|
|||||||
//! This library includes modules for defining claims, handling errors, and creating/verifying PASETO tokens.
|
//! This library includes modules for defining claims, handling errors, and creating/verifying PASETO tokens.
|
||||||
//! It leverages the `rusty_paseto` crate and currently supports PASETO Tokens V4.public.
|
//! It leverages the `rusty_paseto` crate and currently supports PASETO Tokens V4.public.
|
||||||
//!
|
//!
|
||||||
//! # Modules
|
|
||||||
//! - `claims`: Defines the structure and behavior of the claims that can be embedded in a PASETO token.
|
|
||||||
//! - `errors`: Provides error types and handling mechanisms for the library.
|
|
||||||
//! - `maker`: Contains the logic for creating and verifying PASETO tokens.
|
|
||||||
//!
|
|
||||||
//! # Re-exports
|
|
||||||
//! - `Claims`: The struct representing the claims in a PASETO token.
|
|
||||||
//! - `Maker`: The struct used for creating and verifying PASETO tokens.
|
|
||||||
//!
|
|
||||||
//! # Usage Example
|
//! # Usage Example
|
||||||
//! ```rust
|
//! ```rust
|
||||||
//! use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
//! use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
||||||
//!
|
//!
|
||||||
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
|
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
//! let maker = Maker::new_with_keypair().unwrap();
|
//! let (priv_key, _) = Maker::new_keypair();
|
||||||
|
//! let maker = Maker::new(&priv_key).expect("failed to create maker");
|
||||||
//! let claims = Claims::new().with_subject("example");
|
//! let claims = Claims::new().with_subject("example");
|
||||||
//! let token = maker.create_token(&claims).unwrap();
|
//! let token = maker.create_token(&claims).unwrap();
|
||||||
//! println!("Token: {}", token);
|
//! println!("Token: {}", token);
|
||||||
@ -31,16 +23,10 @@
|
|||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! The `claims` module defines the structure and behavior of the claims that can be embedded in a PASETO token.
|
|
||||||
//! The `errors` module provides error types and handling mechanisms for the library.
|
|
||||||
//! The `maker` module contains the logic for creating and verifying PASETO tokens.
|
|
||||||
//!
|
|
||||||
//! The `Claims` struct and `Maker` struct are re-exported for ease of use.
|
|
||||||
//!
|
|
||||||
//! This library uses the `rusty_paseto` crate underneath and currently only supports PASETO Tokens V4.public.
|
//! This library uses the `rusty_paseto` crate underneath and currently only supports PASETO Tokens V4.public.
|
||||||
pub(crate) mod claims;
|
mod claims;
|
||||||
pub mod errors;
|
mod errors;
|
||||||
pub(crate) mod maker;
|
mod maker;
|
||||||
|
|
||||||
pub use claims::Claims;
|
pub use claims::Claims;
|
||||||
pub use maker::Maker;
|
pub use maker::Maker;
|
||||||
|
@ -35,22 +35,19 @@ pub struct Maker<V: Version, P: Purpose> {
|
|||||||
///
|
///
|
||||||
/// - `new(private_key: &[u8; 64]) -> Self`
|
/// - `new(private_key: &[u8; 64]) -> Self`
|
||||||
/// - Creates a new `Maker` instance with the given private and public keys.
|
/// - Creates a new `Maker` instance with the given private and public keys.
|
||||||
/// - `new_with_keypair() -> Self`
|
|
||||||
/// - Generates a new keypair and creates a new `Maker` instance with the generated keys.
|
|
||||||
/// - `new_keypair() -> ([u8; 64], [u8; 32])`
|
/// - `new_keypair() -> ([u8; 64], [u8; 32])`
|
||||||
/// - Generates a new Ed25519 keypair and returns the private and public keys.
|
/// - Generates a new Ed25519 keypair and returns the private and public keys.
|
||||||
/// - `private_key(&self) -> PasetoAsymmetricPrivateKey<V4, Public>`
|
|
||||||
/// - Returns the private key as a `PasetoAsymmetricPrivateKey`.
|
|
||||||
/// - `public_key(&self) -> PasetoAsymmetricPublicKey<V4, Public>`
|
|
||||||
/// - Returns the public key as a `PasetoAsymmetricPublicKey`.
|
|
||||||
/// - `create_token(&self, claims: &Claims) -> Result<String, TokenError>`
|
/// - `create_token(&self, claims: &Claims) -> Result<String, TokenError>`
|
||||||
/// - Creates a new PASETO token with the given claims. Returns the token as a `String` or an error if the token creation fails.
|
/// - Creates a new PASETO token with the given claims. Returns the token as a `String` or an error if the token creation fails.
|
||||||
|
/// - `verify_token(&self, token: &str) -> Result<Claims, TokenError>`
|
||||||
|
/// - Verifies a PASETO token. Returns the containing Claims or an error if the token verification fails.
|
||||||
///
|
///
|
||||||
/// # Example
|
/// # Example
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
/// use paseto_maker::{Maker, Claims, version::V4, purpose::Public};
|
||||||
/// let maker = Maker::new_with_keypair().unwrap();
|
/// let (priv_key, _) = Maker::new_keypair();
|
||||||
|
/// let maker = Maker::new(&priv_key).expect("failed to create maker");
|
||||||
/// let claims = Claims::new();
|
/// let claims = Claims::new();
|
||||||
/// let token = maker.create_token(&claims).unwrap();
|
/// let token = maker.create_token(&claims).unwrap();
|
||||||
/// ```
|
/// ```
|
||||||
@ -73,22 +70,6 @@ impl Maker<V4, Public> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Errors
|
|
||||||
///
|
|
||||||
/// This function will return an error if the key generation or Maker creation fails.
|
|
||||||
pub fn new_with_keypair() -> Result<Self, MakerError> {
|
|
||||||
// let (private_key, public_key) = Self::new_keypair();
|
|
||||||
let private_key = Self::new_private_key();
|
|
||||||
Self::new(&private_key)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
|
||||||
pub fn new_private_key() -> [u8; 64] {
|
|
||||||
let mut csprng = rand::rngs::OsRng;
|
|
||||||
let priv_key: ed25519_dalek::SigningKey = ed25519_dalek::SigningKey::generate(&mut csprng);
|
|
||||||
priv_key.to_keypair_bytes()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn new_keypair() -> ([u8; 64], [u8; 32]) {
|
pub fn new_keypair() -> ([u8; 64], [u8; 32]) {
|
||||||
let mut csprng = rand::rngs::OsRng;
|
let mut csprng = rand::rngs::OsRng;
|
||||||
@ -101,8 +82,7 @@ impl Maker<V4, Public> {
|
|||||||
PasetoAsymmetricPrivateKey::<pV4, pPublic>::from(&self.private_key)
|
PasetoAsymmetricPrivateKey::<pV4, pPublic>::from(&self.private_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
fn public_key(&self) -> PasetoAsymmetricPublicKey<pV4, pPublic> {
|
||||||
pub fn public_key(&self) -> PasetoAsymmetricPublicKey<pV4, pPublic> {
|
|
||||||
PasetoAsymmetricPublicKey::<pV4, pPublic>::from(&self.public_key)
|
PasetoAsymmetricPublicKey::<pV4, pPublic>::from(&self.public_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,7 +231,8 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_invalid_claims() {
|
fn test_invalid_claims() {
|
||||||
let maker = Maker::new_with_keypair().expect("failed to create maker");
|
let (priv_key, _) = Maker::new_keypair();
|
||||||
|
let maker = Maker::new(&priv_key).expect("failed to create maker");
|
||||||
|
|
||||||
let claims = Claims::new().with_issued_at("invalid RF3339 date");
|
let claims = Claims::new().with_issued_at("invalid RF3339 date");
|
||||||
let token = maker.create_token(&claims);
|
let token = maker.create_token(&claims);
|
||||||
@ -260,7 +241,9 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_create_token() {
|
fn test_create_token() {
|
||||||
let maker = Maker::new_with_keypair().expect("failed to create maker");
|
let (priv_key, _) = Maker::new_keypair();
|
||||||
|
let maker = Maker::new(&priv_key).expect("failed to create maker");
|
||||||
|
|
||||||
let public_key = maker.public_key();
|
let public_key = maker.public_key();
|
||||||
let mut claims = Claims::new().with_issued_at("2027-09-18T03:42:15+02:00");
|
let mut claims = Claims::new().with_issued_at("2027-09-18T03:42:15+02:00");
|
||||||
claims.set_claim("sub", "this is the subject").unwrap();
|
claims.set_claim("sub", "this is the subject").unwrap();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user