Metadata-Version: 2.4
Name: eep-signer
Version: 0.1.0
Summary: Standard Webhooks HMAC-SHA256 signing and verification for EEP
License-Expression: Apache-2.0
Project-URL: Homepage, https://eep.dev
Project-URL: Source, https://github.com/eep-dev/EEP
Project-URL: Issues, https://github.com/eep-dev/EEP/issues
Project-URL: Documentation, https://github.com/eep-dev/EEP#readme
Project-URL: Changelog, https://github.com/eep-dev/EEP/blob/main/CHANGELOG.md
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Dynamic: license-file

# eep-signer (Python)

Python port of [`@eep-dev/signer`](../../packages/@eep-dev/signer) — Standard Webhooks HMAC-SHA256 signing and verification for EEP.

## Install

```bash
pip install -e .
```

## Usage

```python
from eep_signer import EEPSigner, verify_eep_webhook

# Sign a webhook
signer = EEPSigner(secret)
signature = signer.sign(webhook_id, timestamp, raw_body)

# Verify a webhook (low-level)
is_valid = signer.verify(webhook_id, timestamp, signature, raw_body)

# Verify a webhook (convenience — FastAPI / Flask)
from eep_signer import verify_eep_webhook
is_valid = verify_eep_webhook(raw_body, request.headers, secret)
```

## Tests

```bash
pip install -e ".[dev]"
pytest
```

## License

Apache-2.0
