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.3.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.3-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

ciphertoken-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ciphertoken-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (996.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ciphertoken-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 490ab87b27ac9b56b4a9db3e6885d3e969e3f7ca2a79922c2d460f0ad51648d6
MD5 40b8dc20ac20a9369af37d7b02c04130
BLAKE2b-256 bf44dd6b1cfebdee9d911cd8ac514d7c571691bf76ddf1731cf7c8d0cdf0abc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.3.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.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b40f58e51b04b528d55c8d3d580cd79da1ce712dbad974936ae6094da568ff06
MD5 d4da6917ba152f0901c9896cb0ffd1fc
BLAKE2b-256 849262192ae95774a290ee0693dd69c1decae2c2fa96ec6a14cb591028140f05

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.3-cp312-cp312-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.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1edc170863397f0a666cb16eccffc9c3f165a00672d74cc4e6c5446f59bc7ce
MD5 140e14f0e3120fdfe193fac37a203593
BLAKE2b-256 8961e1fa5aaa18ca4c4235ed2b5c7407e0d811ad35453f5fd1bb2a9246cbe6d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciphertoken-0.1.3-cp312-cp312-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.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciphertoken-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c544fffa36952c9cf203740ad3c2f395fbce29f4eece84b52aa5fbbeb04c15dc
MD5 c3c4025b4335935e95c502e0834a0537
BLAKE2b-256 abe8759429c174eaf1952cfa3bb78bf76c8ff90033a589b7b78ef93afe023464

See more details on using hashes here.

Provenance

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