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.5.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.5-cp38-abi3-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.8+Windows x86-64

ciphertoken-0.1.5-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.5-cp38-abi3-macosx_11_0_arm64.whl (997.7 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ciphertoken-0.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 e1f91f2b81345f09c623f169c58fb0b729b8284994272282cce1944a5db1cd0c
MD5 874df47be947ad85e7f3121eb8df4ad5
BLAKE2b-256 7ee34b172c4296324f4e58e748213bd8972eb05e0086bf7273c79f3d0fc40805

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.5.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.5-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: ciphertoken-0.1.5-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.5-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 bce4d0ac0d3882255d80ff2904d020f787b1e540d46497dbea2f9b4c32d046f9
MD5 70a1b363cd945009e7d7e87300d51e2b
BLAKE2b-256 89ece46b02d4611b4ec86919d85a277f3abfa7a66051b0c9a57586b5551e092b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.5-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.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21a29ccf199bf417b6e66762b8c496145fb0bfef386f45ea1f020d5383aaa725
MD5 4eb65270b0f00ecb53b20e108ddbd53f
BLAKE2b-256 187b7f789099d9d371c6c3711f08591180e67449cc07dbe0de12513ab8f5259a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.5-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.5-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9439b5a246dbec4ed34427b478a1a5408a276ea2aea2adb5b3940bbd758598f
MD5 adb079a0a708a898c07c09a7c55a7d29
BLAKE2b-256 0ec01c071dcab34b7c0f3f58d4d3ae39d8d59b760ea2ce2ff92229d6064d4982

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.5-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