Skip to main content

High-performance token and crypto utilities written in Rust with PyO3

Project description

CipherToken

CipherToken is a modern, high-performance Python library for cryptography and JWT (JSON Web Token) management.
It is implemented in Rust using PyO3, providing both speed and security for generating, encoding, decoding, and verifying tokens.

The library is designed to be modular, organized into submodules for secret management, time utilities, algorithms, and token handling.
It supports both synchronous and asynchronous operations


Library Overview

CipherToken is structured into the following main parts:

1. secret Module

Handles key generation for symmetric (HMAC) and asymmetric (RSA) algorithms:

  • secret_key() – Generate a random HMAC key (default 32 bytes)
  • secret_key_with_size(size: int) – Generate HMAC key with a custom size
  • generate_hmac_secret(size: int) – Generate an HMAC secret key
  • generate_hmac_secret_async(size: int) – Async version of HMAC key generation
  • generate_rsa_keypair(bits: Optional[int] = 2048) – Generate RSA private/public key pair

2. time Module

Provides utility functions for time conversion and timestamps:

  • now() – Current UNIX timestamp
  • seconds(n: int) – Convert n seconds to seconds
  • minutes(n: int) – Convert n minutes to seconds
  • hours(n: int) – Convert n hours to seconds
  • days(n: int) – Convert n days to seconds
  • weeks(n: int) – Convert n weeks to seconds

3. utils Module

Contains useful constants:

  • DEFAULT_SECRET_SIZE – Default key size
  • MIN_SECRET_SIZE – Minimum allowed key size
  • TOKEN_ACCESS – Access token type
  • TOKEN_REFRESH – Refresh token type

4. algorithms Module

Defines algorithm constants for token signing:

  • HMAC: HS256, HS384, HS512
  • RSA: RS256, RS384, RS512
  • ECDSA: ES256, ES384
  • RSA-PSS: PS256, PS384, PS512
  • Edwards Curve: EDDSA

5. CipherToken Class

Main class for managing JWTs:

  • Constructor:
from ciphertoken import CipherToken

CipherToken(secret: str, algorithm: str, access_ttl: int, refresh_ttl: int)

Synchronous methods:

access(user_id: int, extra_payload: Optional[dict] = None) -> str
refresh(user_id: int, extra_payload: Optional[dict] = None) -> str
decode(token: str) -> dict
verify(token: str) -> bool
rotation(refresh_token: str, extra_payload: Optional[dict] = None) -> Tuple[str, str]
inspect(token: str) -> dict
remaining_time(token: str) -> Optional[int]
algorithm_name() -> str

Asynchronous methods:

await access_async(user_id: int, extra_payload: Optional[dict] = None) -> str
await refresh_async(user_id: int, extra_payload: Optional[dict] = None) -> str
await decode_async(token: str) -> dict
await verify_async(token: str) -> bool
await rotation_async(refresh_token: str, extra_payload: Optional[dict] = None) -> Tuple[str, str]

Helper Functions:

is_jwt_format(token: str) – Check if a string is a valid JWT

validate_jwt_format(token: str) – Validate JWT structure

Installation

CipherToken is available via PyPI. Install it with:

pip install ciphertoken


Usage Example

from ciphertoken.secret import secret_key
from ciphertoken import CipherToken
from ciphertoken.time import minutes, days
from ciphertoken.utils import TOKEN_REFRESH
from ciphertoken.algorithms import HS256

# Generate a secret key
key = secret_key()

# Create a CipherToken instance
token = CipherToken(secret=key, algorithm=HS256, access_ttl=minutes(10), refresh_ttl=days(7))

# Generate access and refresh tokens
access_token = token.access(user_id=123)
refresh_token = token.refresh(user_id=123)

# Verify and decode tokens
payload = token.decode(access_token)
is_valid = token.verify(access_token)

# Async usage
import asyncio

async def generate_async_token():
    access_token = await token.access_async(user_id=123)
    payload = await token.decode_async(access_token)
    return payload

asyncio.run(generate_async_token())

Implementation Notes

  • Built in Rust using PyO3 for maximum speed and memory safety

  • Supports synchronous and asynchronous workflows

  • Fully modular: secret, time, utils, algorithms, and CipherToken class

  • Secure key handling with HMAC and RSA support

  • Easily extendable for additional algorithms

Summary

CipherToken is a modern, Rust-backed Python library for authentication and JWT management. It is ideal for web APIs, microservices, or any system that requires secure token generation, verification, and rotation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ciphertoken-0.1.6.tar.gz (3.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ciphertoken-0.1.6-cp38-abi3-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.8+Windows x86-64

ciphertoken-0.1.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

ciphertoken-0.1.6-cp38-abi3-macosx_11_0_arm64.whl (999.2 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file ciphertoken-0.1.6.tar.gz.

File metadata

  • Download URL: ciphertoken-0.1.6.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciphertoken-0.1.6.tar.gz
Algorithm Hash digest
SHA256 b24a8d38ce3094a8c0b6a70d71611c66512e97acb41e6bbb155909dc17f0904c
MD5 824122a01004a12c59987724f4439a4b
BLAKE2b-256 aa538e84faa0296084a780a02de6a17c2fb65e1e47b1ddbacd882a1eac36ba6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.6.tar.gz:

Publisher: build.yml on cipherunits/CipherToken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciphertoken-0.1.6-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: ciphertoken-0.1.6-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciphertoken-0.1.6-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b13eee150507434dd29b6683c3b96ea8815cb95e61ffd7a8b4db2f1f2208ea1f
MD5 22dfcf3ae1d15b8c2a767e82f2581df4
BLAKE2b-256 960d0920cbec67e3a7da1b8e6ae4d61506aa9823f95a13e2b296efa6c191deff

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.6-cp38-abi3-win_amd64.whl:

Publisher: build.yml on cipherunits/CipherToken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciphertoken-0.1.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 602b4b22cba002b18e225b15eb47f3cef296a082c3ac1e19cbbf6dba8f8bb85b
MD5 1db4160405ed198037b6119895634c15
BLAKE2b-256 f6afea5c4f9e34dd1b8e5111c012e2758d1828df46c59770406e240142a9c0c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on cipherunits/CipherToken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciphertoken-0.1.6-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.6-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 182334f38a2222de6379fd7d1c52c325229b02d0576017cb423edc2183cd2711
MD5 d58c9e76bad3e677ae7b90fe421b662e
BLAKE2b-256 f9f3f0660a97aef52f76f6c89c9bfe5b99c39bef655e01af8d5d74ffbc76a625

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.6-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: build.yml on cipherunits/CipherToken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page