Metadata-Version: 2.4
Name: signifypy
Version: 0.4.1
Summary: SignifyPy: KERI Signing at the Edge
Project-URL: Documentation, https://signifypy.readthedocs.io/
Project-URL: Changelog, https://signifypy.readthedocs.io/en/latest/changelog.html
Project-URL: Issue Tracker, https://github.com/WebOfTrust/signifypy/issues
Project-URL: Source, https://github.com/WebOfTrust/signifypy
Author-email: "Philip S. Feairheller" <pfeairheller@gmail.com>, Kent Bull <kent@kentbull.com>
License: Apache Software License 2.0
License-File: LICENSE
Keywords: authentic data,discovery,resolver,secure attribution,signify,signing at the edge
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Requires-Python: >=3.12.3
Requires-Dist: http-sfv==0.9.9
Requires-Dist: keri<1.3.0,>=1.2.12
Requires-Dist: multicommand==1.0.0
Requires-Dist: requests==2.32.3
Requires-Dist: sseclient>=0.0.27
Provides-Extra: docs
Requires-Dist: myst-parser>=0.16.1; extra == 'docs'
Requires-Dist: sphinx-rtd-theme>=1.2.2; extra == 'docs'
Requires-Dist: sphinx>=4.3.2; extra == 'docs'
Provides-Extra: test
Requires-Dist: coverage>=7.6.10; extra == 'test'
Requires-Dist: mockito==1.5.3; extra == 'test'
Requires-Dist: pytest-cov>=6.1.1; extra == 'test'
Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
Requires-Dist: pytest>=8.3.4; extra == 'test'
Requires-Dist: responses>=0.25.6; extra == 'test'
Description-Content-Type: text/markdown

# Signifypy
Signify implementation in Python

[![Tests](https://github.com/WebOfTrust/signifypy/actions/workflows/test.yaml/badge.svg?branch=development)](https://github.com/WebOfTrust/signifypy/actions/workflows/test.yaml)
[![codecov](https://codecov.io/gh/WebOfTrust/signifypy/graph/badge.svg?token=E9VS4PNKTD)](https://codecov.io/gh/WebOfTrust/signifypy)
[![Documentation Status](https://readthedocs.org/projects/signifypy/badge/?version=latest)](https://signifypy.readthedocs.io/en/latest/?badge=latest)

## Signify - KERI Signing at the Edge

Of the five functions in a KERI agent, 

1. Key generation
2. Encrypted key storage
3. Event generation
4. Event signing
5. Event Validation

Signifypy provides key generation and event signing in a library to provide "signing at the edge".
It accomplishes this by using [libsodium](https://doc.libsodium.org/) to generate ed25519 key pairs for signing and x25519 key pairs for encrypting the
private keys, next public keys, and salts used to generate the private keys.  The encrypted private key and salts are then stored on a
remote cloud agent that never has access to the decryption keys.  New key pair sets (current and next) will be generated 
for inception and rotation events with only the public keys and blake3 hash of the next keys made available to the agent.

The communication protocol between a Signify client and [KERI](https://github.com/WebOfTrust/keri) agent will encode all cryptographic primitives as CESR base64
encoded strings for the initial implementation.  Support for binary CESR can be added in the future.

### Development

Install [uv](https://docs.astral.sh/uv/) first, then sync the local environment:

```bash
make sync
```

Run the fast test suite with:

```bash
make test
```

### Packaging

```bash
make build
```

### Installation

#### From PyPi

`pip install signifypy`

#### Local

```bash
make sync
```

#### Local Editable Install In An Existing Python Environment

If you already have a Python environment selected and want an editable install
inside that environment, `uv` still supports that flow directly:

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