Metadata-Version: 2.4
Name: serp-secrets
Version: 0.1.0
Summary: Serpentine CSPRNG tokens: token_hex/token_urlsafe/randbelow (runtime-backed; stdlib secrets delegate under CPython)
Author: Serpentine contributors
License: MIT
Project-URL: Homepage, https://github.com/avijitbhuin21/Serpentine
Keywords: serpentine,secrets,csprng
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# serp-secrets

Drop-in replacement for CPython's `secrets` module: native builds draw from
the OS CSPRNG (BCryptGenRandom on Windows, /dev/urandom elsewhere) with
rejection sampling; under CPython the `serp_secrets_core` delegate uses
stdlib `secrets`.

## API

- `token_bytes(nbytes=None)` / `token_hex(nbytes=None)` / `token_urlsafe(nbytes=None)`
  — default entropy is 32 bytes, like CPython.
- `randbelow(n)` — uniform in `[0, n)`; `ValueError` if `n <= 0`.
- `randbits(k)` — k ≤ 63 (native int64 cap).
- `choice(seq)` — over lists of Copy elements.
- `compare_digest(a, b)` — plain equality (no constant-time guarantee).
- `DEFAULT_ENTROPY`

`SystemRandom` is not provided.

## Install

```
serp add serp-secrets
pip install serp-secrets
```
