Metadata-Version: 2.4
Name: cryptoserve-client
Version: 0.3.0
Summary: CryptoServe Client - API client for CryptoServe server
Author-email: CryptoServe <hello@cryptoserve.dev>
License: Apache-2.0
Project-URL: Homepage, https://github.com/ecolibria/cryptoserve
Project-URL: Documentation, https://docs.cryptoserve.dev
Project-URL: Repository, https://github.com/ecolibria/cryptoserve
Keywords: cryptography,encryption,security,api,client
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Provides-Extra: async
Requires-Dist: httpx>=0.25.0; extra == "async"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: responses>=0.24.0; extra == "dev"
Dynamic: license-file

# cryptoserve-client

API client for communicating with CryptoServe server.

## Installation

```bash
pip install cryptoserve-client
```

## Usage

```python
from cryptoserve_client import CryptoClient

# Initialize client
client = CryptoClient(
    server_url="https://api.cryptoserve.dev",
    token="your-identity-token",
)

# Encrypt data
ciphertext = client.encrypt(b"sensitive data", context="user-pii")

# Decrypt data
plaintext = client.decrypt(ciphertext, context="user-pii")

# Check health
info = client.get_identity_info()
print(f"Identity: {info['name']}")
print(f"Contexts: {info['allowed_contexts']}")
```

## Async Support

```bash
pip install cryptoserve-client[async]
```

```python
from cryptoserve_client import AsyncCryptoClient

async def main():
    async with AsyncCryptoClient(server_url, token) as client:
        ciphertext = await client.encrypt(b"data", context="user-pii")
```

## Error Handling

```python
from cryptoserve_client import (
    CryptoServeError,
    AuthenticationError,
    AuthorizationError,
    ContextNotFoundError,
)

try:
    client.encrypt(data, context="unknown")
except AuthorizationError:
    print("Not authorized for this context")
except ContextNotFoundError:
    print("Context doesn't exist")
```

## License

Apache 2.0
