zeroproof


Namezeroproof JSON
Version 0.2.5 PyPI version JSON
download
home_pageNone
SummaryPython SDK for ZeroProof AI verification API - Secure your agentic e-commerce ecosystem
upload_time2025-10-06 03:09:53
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords agent ai ecommerce security verification zero-knowledge-proof zeroproof zkp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ZeroProof Python SDK

[![PyPI version](https://badge.fury.io/py/zeroproof.svg)](https://badge.fury.io/py/zeroproof)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Python SDK for the ZeroProof AI verification API. Secure your agentic e-commerce ecosystem with zero-knowledge proofs.

## Installation

```bash
pip install zeroproof
```

## Quick Start

```python
from zeroproof import ZeroProof

# Initialize the client with your API key
client = ZeroProof(api_key="zkp_your_api_key_here")

# Create a verification challenge
challenge = client.create_challenge(
    agent_id="shopping-assistant-v1",
    action="add_to_cart",
    context={"item_id": "laptop-123", "price": 999.99}
)

print(f"Challenge ID: {challenge.challenge_id}")
print(f"Nonce: {challenge.nonce}")
print(f"Expires in: {challenge.expires_in} seconds")

# Verify the proof (in production, this would be generated by your agent)
result = client.verify_proof(
    challenge_id=challenge.challenge_id,
    proof="your_cryptographic_proof_here",
    agent_signature="optional_signature_here"
)

if result.verified:
    print(f"✅ Verification successful!")
    print(f"   Agent: {result.agent_id}")
    print(f"   Action: {result.action}")
    print(f"   Confidence: {result.confidence * 100}%")
    # Now execute the actual e-commerce action
else:
    print("❌ Verification failed")
```

## Features

- 🔐 **Zero-Knowledge Proof Verification**: Verify agent authenticity without revealing sensitive data
- 🔒 **Encrypted Messaging**: Secure agent-to-agent communication with AES-256-GCM
- 🚀 **Simple API**: Easy-to-use Python interface
- ⚡ **Fast**: Low-latency operations (< 100ms for encryption)
- 🛡️ **Secure**: End-to-end encryption with automatic key management

## Use Cases

### Encrypted Agent Communication

```python
from zeroproof import ZeroProof

client = ZeroProof(api_key="zkp_...")

# Agent 1 sends encrypted message
result = client.send_encrypted(
    to_agent_id="checkout-agent",
    message={
        "action": "process_order",
        "order_id": "ORD-12345",
        "amount": 299.99
    },
    ttl_minutes=60
)

print(f"Message ID: {result.message_id}")

# Agent 2 receives and decrypts
message = client.receive_encrypted(message_id=result.message_id)
print(f"Order: {message.message['order_id']}")
print(f"Amount: ${message.message['amount']}")
```

### E-Commerce Agent Authorization

```python
from zeroproof import ZeroProof

client = ZeroProof(api_key="zkp_...")

# Before allowing an agent to make a purchase
challenge = client.create_challenge(
    agent_id="checkout-agent-v2",
    action="initiate_purchase",
    context={
        "amount": 1499.99,
        "merchant": "TechStore",
        "items": ["laptop", "mouse", "keyboard"]
    }
)

# Agent generates proof
proof = your_agent.generate_proof(challenge)

# Verify before processing payment
result = client.verify_proof(challenge.challenge_id, proof)

if result.verified and result.confidence > 0.95:
    process_payment(1499.99)
else:
    log_security_incident(result)
```

### Refund Authorization

```python
# Verify agent before approving refund
challenge = client.create_challenge(
    agent_id="refund-processor",
    action="approve_refund",
    context={"order_id": "ORD-12345", "amount": 299.99}
)

result = client.verify_proof(challenge.challenge_id, proof)

if result.verified:
    approve_refund(order_id="ORD-12345")
```

### Inventory Management

```python
# Verify agent before updating inventory
challenge = client.create_challenge(
    agent_id="inventory-manager",
    action="update_stock",
    context={"product_id": "PROD-789", "quantity_change": -50}
)

result = client.verify_proof(challenge.challenge_id, proof)

if result.verified:
    update_inventory("PROD-789", quantity=-50)
```

## API Reference

### ZeroProof

The main client class for interacting with the API.

#### `__init__(api_key: str, base_url: Optional[str] = None)`

Initialize the ZeroProof client.

**Parameters:**
- `api_key` (str): Your ZeroProof API key (starts with 'zkp_')
- `base_url` (str, optional): Custom API base URL (defaults to production)

**Raises:**
- `ValueError`: If API key is invalid or missing

#### `create_challenge(agent_id: str, action: str, context: Optional[Dict] = None) -> Challenge`

Create a new verification challenge.

**Parameters:**
- `agent_id` (str): Unique identifier for the AI agent
- `action` (str): The action the agent wants to perform
- `context` (dict, optional): Additional context for the action

**Returns:**
- `Challenge`: Object containing challenge_id, nonce, expires_in, timestamp

**Raises:**
- `ZeroProofError`: If the request fails

#### `verify_proof(challenge_id: str, proof: str, agent_signature: Optional[str] = None) -> VerificationResult`

Verify a proof for a given challenge.

**Parameters:**
- `challenge_id` (str): The challenge ID from create_challenge()
- `proof` (str): The cryptographic proof data
- `agent_signature` (str, optional): Optional agent signature

**Returns:**
- `VerificationResult`: Object containing verification details

**Raises:**
- `ZeroProofError`: If verification fails

#### `get_status(session_id: str) -> Dict`

Get the status of a verification session.

**Parameters:**
- `session_id` (str): The session/challenge ID to check

**Returns:**
- `dict`: Session status details

**Raises:**
- `ZeroProofError`: If the request fails

### Encrypted Messaging

#### `send_encrypted(to_agent_id: str, message: Any, ttl_minutes: int = 60) -> EncryptedMessage`

Send an encrypted message to another agent.

**Parameters:**
- `to_agent_id` (str): Target agent identifier
- `message` (Any): Message content (string, dict, or JSON-serializable data)
- `ttl_minutes` (int, optional): Time-to-live in minutes (default: 60, max: 1440)

**Returns:**
- `EncryptedMessage`: Object containing message_id, expires_at, status, ttl_minutes

**Example:**
```python
result = client.send_encrypted(
    to_agent_id="agent_456",
    message="Hello, secure world!",
    ttl_minutes=30
)
```

#### `receive_encrypted(message_id: str) -> DecryptedMessage`

Receive and decrypt an encrypted message.

**Parameters:**
- `message_id` (str): The message ID from send_encrypted()

**Returns:**
- `DecryptedMessage`: Object with decrypted message and metadata

**Raises:**
- `ZeroProofError`: If message not found, expired, or decryption fails

**Example:**
```python
message = client.receive_encrypted(message_id="msg_abc123...")
print(f"Content: {message.message}")
print(f"Read count: {message.read_count}")
```

### Data Classes

#### Challenge

Represents a verification challenge.

**Attributes:**
- `challenge_id` (str): Unique challenge identifier
- `nonce` (str): Random nonce for this challenge
- `expires_in` (int): Time until expiration in seconds
- `timestamp` (int): Challenge creation timestamp

#### VerificationResult

Represents the result of proof verification.

**Attributes:**
- `verified` (bool): Whether the proof was verified
- `agent_id` (str): The agent that was verified
- `action` (str): The action that was authorized
- `confidence` (float): Confidence score (0.0 to 1.0)
- `timestamp` (str): Verification timestamp
- `session_id` (str): Session identifier

#### EncryptedMessage

Represents an encrypted message response.

**Attributes:**
- `message_id` (str): Unique message identifier
- `expires_at` (str): Expiration timestamp (ISO 8601)
- `status` (str): Message status ("ready")
- `ttl_minutes` (int): Time-to-live in minutes

#### DecryptedMessage

Represents a decrypted message.

**Attributes:**
- `message_id` (str): Message identifier
- `from_agent_id` (str): Sender's API key (partial)
- `to_agent_id` (str): Recipient identifier
- `message` (Any): Decrypted message content
- `read_count` (int): Number of times message was read
- `created_at` (str): Creation timestamp
- `expires_at` (str): Expiration timestamp

### Exceptions

#### ZeroProofError

Base exception for SDK errors.

**Attributes:**
- `message` (str): Error message
- `status_code` (int, optional): HTTP status code
- `response` (dict, optional): Full API response

## Context Manager Support

The SDK supports context managers for automatic resource cleanup:

```python
with ZeroProof(api_key="zkp_...") as client:
    challenge = client.create_challenge("agent-1", "purchase")
    result = client.verify_proof(challenge.challenge_id, proof)
# Session is automatically closed
```

## Error Handling

```python
from zeroproof import ZeroProof, ZeroProofError

client = ZeroProof(api_key="zkp_...")

try:
    challenge = client.create_challenge("agent", "action")
    result = client.verify_proof(challenge.challenge_id, "invalid_proof")
except ZeroProofError as e:
    print(f"Error: {e.message}")
    print(f"Status Code: {e.status_code}")
    print(f"Response: {e.response}")
```

### Handling Message Expiration

```python
try:
    message = client.receive_encrypted(message_id="msg_...")
except ZeroProofError as e:
    if e.status_code == 410:
        print("Message expired")
    elif e.status_code == 404:
        print("Message not found")
    else:
        print(f"Error: {e.message}")
```

## Configuration

### Custom API Endpoint

For testing or self-hosted deployments:

```python
client = ZeroProof(
    api_key="zkp_...",
    base_url="https://api.custom-domain.com/v1"
)
```

### Environment Variables

You can set your API key via environment variable:

```python
import os
from zeroproof import ZeroProof

api_key = os.getenv("ZEROPROOF_API_KEY")
client = ZeroProof(api_key=api_key)
```

## Requirements

- Python 3.8+
- requests >= 2.25.0

## Examples

See the [examples](examples/) directory for complete examples:

- `shopping_agent_demo.py` - ZKP verification demo
- `encrypted_messaging_demo.py` - Encrypted messaging demo with multiple scenarios

Run an example:

```bash
export ZEROPROOF_API_KEY="zkp_your_key_here"
python examples/encrypted_messaging_demo.py
```

## Getting an API Key

1. Sign up at [https://zeroproofai.com](https://zeroproofai.com)
2. Navigate to your dashboard
3. Generate a new API key
4. Copy the key (starts with `zkp_`)

## Development

### Installing for Development

```bash
git clone https://github.com/jacobweiss2305/zeroproof.git
cd zeroproof/python-sdk
pip install -e ".[dev]"
```

### Running Tests

```bash
pytest tests/
```

### Code Formatting

```bash
black zeroproof/
flake8 zeroproof/
mypy zeroproof/
```

## Support

- **Documentation**: [https://docs.zeroproofai.com](https://docs.zeroproofai.com)
- **Issues**: [GitHub Issues](https://github.com/jacobweiss2305/zeroproof/issues)
- **Email**: support@zeroproofai.com

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Changelog

### 0.2.0 (2025-10-02)

- ✨ Added encrypted messaging service
- 🔒 AES-256-GCM encryption for agent-to-agent communication
- ⏰ TTL-based message expiration with auto-cleanup
- 📖 Multiple reads supported until expiration
- 📝 New example: encrypted_messaging_demo.py

### 0.1.0 (2025-01-10)

- Initial release
- Basic challenge/proof verification flow
- Context manager support
- Comprehensive error handling
- Full type hints

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "zeroproof",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "ZeroProof AI <support@zeroproofai.com>",
    "keywords": "agent, ai, ecommerce, security, verification, zero-knowledge-proof, zeroproof, zkp",
    "author": null,
    "author_email": "ZeroProof AI <support@zeroproofai.com>",
    "download_url": "https://files.pythonhosted.org/packages/47/02/451057980bdb14d361ef51f8159614ae819dd106ba0f5c90e33828af8856/zeroproof-0.2.5.tar.gz",
    "platform": null,
    "description": "# ZeroProof Python SDK\n\n[![PyPI version](https://badge.fury.io/py/zeroproof.svg)](https://badge.fury.io/py/zeroproof)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nPython SDK for the ZeroProof AI verification API. Secure your agentic e-commerce ecosystem with zero-knowledge proofs.\n\n## Installation\n\n```bash\npip install zeroproof\n```\n\n## Quick Start\n\n```python\nfrom zeroproof import ZeroProof\n\n# Initialize the client with your API key\nclient = ZeroProof(api_key=\"zkp_your_api_key_here\")\n\n# Create a verification challenge\nchallenge = client.create_challenge(\n    agent_id=\"shopping-assistant-v1\",\n    action=\"add_to_cart\",\n    context={\"item_id\": \"laptop-123\", \"price\": 999.99}\n)\n\nprint(f\"Challenge ID: {challenge.challenge_id}\")\nprint(f\"Nonce: {challenge.nonce}\")\nprint(f\"Expires in: {challenge.expires_in} seconds\")\n\n# Verify the proof (in production, this would be generated by your agent)\nresult = client.verify_proof(\n    challenge_id=challenge.challenge_id,\n    proof=\"your_cryptographic_proof_here\",\n    agent_signature=\"optional_signature_here\"\n)\n\nif result.verified:\n    print(f\"\u2705 Verification successful!\")\n    print(f\"   Agent: {result.agent_id}\")\n    print(f\"   Action: {result.action}\")\n    print(f\"   Confidence: {result.confidence * 100}%\")\n    # Now execute the actual e-commerce action\nelse:\n    print(\"\u274c Verification failed\")\n```\n\n## Features\n\n- \ud83d\udd10 **Zero-Knowledge Proof Verification**: Verify agent authenticity without revealing sensitive data\n- \ud83d\udd12 **Encrypted Messaging**: Secure agent-to-agent communication with AES-256-GCM\n- \ud83d\ude80 **Simple API**: Easy-to-use Python interface\n- \u26a1 **Fast**: Low-latency operations (< 100ms for encryption)\n- \ud83d\udee1\ufe0f **Secure**: End-to-end encryption with automatic key management\n\n## Use Cases\n\n### Encrypted Agent Communication\n\n```python\nfrom zeroproof import ZeroProof\n\nclient = ZeroProof(api_key=\"zkp_...\")\n\n# Agent 1 sends encrypted message\nresult = client.send_encrypted(\n    to_agent_id=\"checkout-agent\",\n    message={\n        \"action\": \"process_order\",\n        \"order_id\": \"ORD-12345\",\n        \"amount\": 299.99\n    },\n    ttl_minutes=60\n)\n\nprint(f\"Message ID: {result.message_id}\")\n\n# Agent 2 receives and decrypts\nmessage = client.receive_encrypted(message_id=result.message_id)\nprint(f\"Order: {message.message['order_id']}\")\nprint(f\"Amount: ${message.message['amount']}\")\n```\n\n### E-Commerce Agent Authorization\n\n```python\nfrom zeroproof import ZeroProof\n\nclient = ZeroProof(api_key=\"zkp_...\")\n\n# Before allowing an agent to make a purchase\nchallenge = client.create_challenge(\n    agent_id=\"checkout-agent-v2\",\n    action=\"initiate_purchase\",\n    context={\n        \"amount\": 1499.99,\n        \"merchant\": \"TechStore\",\n        \"items\": [\"laptop\", \"mouse\", \"keyboard\"]\n    }\n)\n\n# Agent generates proof\nproof = your_agent.generate_proof(challenge)\n\n# Verify before processing payment\nresult = client.verify_proof(challenge.challenge_id, proof)\n\nif result.verified and result.confidence > 0.95:\n    process_payment(1499.99)\nelse:\n    log_security_incident(result)\n```\n\n### Refund Authorization\n\n```python\n# Verify agent before approving refund\nchallenge = client.create_challenge(\n    agent_id=\"refund-processor\",\n    action=\"approve_refund\",\n    context={\"order_id\": \"ORD-12345\", \"amount\": 299.99}\n)\n\nresult = client.verify_proof(challenge.challenge_id, proof)\n\nif result.verified:\n    approve_refund(order_id=\"ORD-12345\")\n```\n\n### Inventory Management\n\n```python\n# Verify agent before updating inventory\nchallenge = client.create_challenge(\n    agent_id=\"inventory-manager\",\n    action=\"update_stock\",\n    context={\"product_id\": \"PROD-789\", \"quantity_change\": -50}\n)\n\nresult = client.verify_proof(challenge.challenge_id, proof)\n\nif result.verified:\n    update_inventory(\"PROD-789\", quantity=-50)\n```\n\n## API Reference\n\n### ZeroProof\n\nThe main client class for interacting with the API.\n\n#### `__init__(api_key: str, base_url: Optional[str] = None)`\n\nInitialize the ZeroProof client.\n\n**Parameters:**\n- `api_key` (str): Your ZeroProof API key (starts with 'zkp_')\n- `base_url` (str, optional): Custom API base URL (defaults to production)\n\n**Raises:**\n- `ValueError`: If API key is invalid or missing\n\n#### `create_challenge(agent_id: str, action: str, context: Optional[Dict] = None) -> Challenge`\n\nCreate a new verification challenge.\n\n**Parameters:**\n- `agent_id` (str): Unique identifier for the AI agent\n- `action` (str): The action the agent wants to perform\n- `context` (dict, optional): Additional context for the action\n\n**Returns:**\n- `Challenge`: Object containing challenge_id, nonce, expires_in, timestamp\n\n**Raises:**\n- `ZeroProofError`: If the request fails\n\n#### `verify_proof(challenge_id: str, proof: str, agent_signature: Optional[str] = None) -> VerificationResult`\n\nVerify a proof for a given challenge.\n\n**Parameters:**\n- `challenge_id` (str): The challenge ID from create_challenge()\n- `proof` (str): The cryptographic proof data\n- `agent_signature` (str, optional): Optional agent signature\n\n**Returns:**\n- `VerificationResult`: Object containing verification details\n\n**Raises:**\n- `ZeroProofError`: If verification fails\n\n#### `get_status(session_id: str) -> Dict`\n\nGet the status of a verification session.\n\n**Parameters:**\n- `session_id` (str): The session/challenge ID to check\n\n**Returns:**\n- `dict`: Session status details\n\n**Raises:**\n- `ZeroProofError`: If the request fails\n\n### Encrypted Messaging\n\n#### `send_encrypted(to_agent_id: str, message: Any, ttl_minutes: int = 60) -> EncryptedMessage`\n\nSend an encrypted message to another agent.\n\n**Parameters:**\n- `to_agent_id` (str): Target agent identifier\n- `message` (Any): Message content (string, dict, or JSON-serializable data)\n- `ttl_minutes` (int, optional): Time-to-live in minutes (default: 60, max: 1440)\n\n**Returns:**\n- `EncryptedMessage`: Object containing message_id, expires_at, status, ttl_minutes\n\n**Example:**\n```python\nresult = client.send_encrypted(\n    to_agent_id=\"agent_456\",\n    message=\"Hello, secure world!\",\n    ttl_minutes=30\n)\n```\n\n#### `receive_encrypted(message_id: str) -> DecryptedMessage`\n\nReceive and decrypt an encrypted message.\n\n**Parameters:**\n- `message_id` (str): The message ID from send_encrypted()\n\n**Returns:**\n- `DecryptedMessage`: Object with decrypted message and metadata\n\n**Raises:**\n- `ZeroProofError`: If message not found, expired, or decryption fails\n\n**Example:**\n```python\nmessage = client.receive_encrypted(message_id=\"msg_abc123...\")\nprint(f\"Content: {message.message}\")\nprint(f\"Read count: {message.read_count}\")\n```\n\n### Data Classes\n\n#### Challenge\n\nRepresents a verification challenge.\n\n**Attributes:**\n- `challenge_id` (str): Unique challenge identifier\n- `nonce` (str): Random nonce for this challenge\n- `expires_in` (int): Time until expiration in seconds\n- `timestamp` (int): Challenge creation timestamp\n\n#### VerificationResult\n\nRepresents the result of proof verification.\n\n**Attributes:**\n- `verified` (bool): Whether the proof was verified\n- `agent_id` (str): The agent that was verified\n- `action` (str): The action that was authorized\n- `confidence` (float): Confidence score (0.0 to 1.0)\n- `timestamp` (str): Verification timestamp\n- `session_id` (str): Session identifier\n\n#### EncryptedMessage\n\nRepresents an encrypted message response.\n\n**Attributes:**\n- `message_id` (str): Unique message identifier\n- `expires_at` (str): Expiration timestamp (ISO 8601)\n- `status` (str): Message status (\"ready\")\n- `ttl_minutes` (int): Time-to-live in minutes\n\n#### DecryptedMessage\n\nRepresents a decrypted message.\n\n**Attributes:**\n- `message_id` (str): Message identifier\n- `from_agent_id` (str): Sender's API key (partial)\n- `to_agent_id` (str): Recipient identifier\n- `message` (Any): Decrypted message content\n- `read_count` (int): Number of times message was read\n- `created_at` (str): Creation timestamp\n- `expires_at` (str): Expiration timestamp\n\n### Exceptions\n\n#### ZeroProofError\n\nBase exception for SDK errors.\n\n**Attributes:**\n- `message` (str): Error message\n- `status_code` (int, optional): HTTP status code\n- `response` (dict, optional): Full API response\n\n## Context Manager Support\n\nThe SDK supports context managers for automatic resource cleanup:\n\n```python\nwith ZeroProof(api_key=\"zkp_...\") as client:\n    challenge = client.create_challenge(\"agent-1\", \"purchase\")\n    result = client.verify_proof(challenge.challenge_id, proof)\n# Session is automatically closed\n```\n\n## Error Handling\n\n```python\nfrom zeroproof import ZeroProof, ZeroProofError\n\nclient = ZeroProof(api_key=\"zkp_...\")\n\ntry:\n    challenge = client.create_challenge(\"agent\", \"action\")\n    result = client.verify_proof(challenge.challenge_id, \"invalid_proof\")\nexcept ZeroProofError as e:\n    print(f\"Error: {e.message}\")\n    print(f\"Status Code: {e.status_code}\")\n    print(f\"Response: {e.response}\")\n```\n\n### Handling Message Expiration\n\n```python\ntry:\n    message = client.receive_encrypted(message_id=\"msg_...\")\nexcept ZeroProofError as e:\n    if e.status_code == 410:\n        print(\"Message expired\")\n    elif e.status_code == 404:\n        print(\"Message not found\")\n    else:\n        print(f\"Error: {e.message}\")\n```\n\n## Configuration\n\n### Custom API Endpoint\n\nFor testing or self-hosted deployments:\n\n```python\nclient = ZeroProof(\n    api_key=\"zkp_...\",\n    base_url=\"https://api.custom-domain.com/v1\"\n)\n```\n\n### Environment Variables\n\nYou can set your API key via environment variable:\n\n```python\nimport os\nfrom zeroproof import ZeroProof\n\napi_key = os.getenv(\"ZEROPROOF_API_KEY\")\nclient = ZeroProof(api_key=api_key)\n```\n\n## Requirements\n\n- Python 3.8+\n- requests >= 2.25.0\n\n## Examples\n\nSee the [examples](examples/) directory for complete examples:\n\n- `shopping_agent_demo.py` - ZKP verification demo\n- `encrypted_messaging_demo.py` - Encrypted messaging demo with multiple scenarios\n\nRun an example:\n\n```bash\nexport ZEROPROOF_API_KEY=\"zkp_your_key_here\"\npython examples/encrypted_messaging_demo.py\n```\n\n## Getting an API Key\n\n1. Sign up at [https://zeroproofai.com](https://zeroproofai.com)\n2. Navigate to your dashboard\n3. Generate a new API key\n4. Copy the key (starts with `zkp_`)\n\n## Development\n\n### Installing for Development\n\n```bash\ngit clone https://github.com/jacobweiss2305/zeroproof.git\ncd zeroproof/python-sdk\npip install -e \".[dev]\"\n```\n\n### Running Tests\n\n```bash\npytest tests/\n```\n\n### Code Formatting\n\n```bash\nblack zeroproof/\nflake8 zeroproof/\nmypy zeroproof/\n```\n\n## Support\n\n- **Documentation**: [https://docs.zeroproofai.com](https://docs.zeroproofai.com)\n- **Issues**: [GitHub Issues](https://github.com/jacobweiss2305/zeroproof/issues)\n- **Email**: support@zeroproofai.com\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Changelog\n\n### 0.2.0 (2025-10-02)\n\n- \u2728 Added encrypted messaging service\n- \ud83d\udd12 AES-256-GCM encryption for agent-to-agent communication\n- \u23f0 TTL-based message expiration with auto-cleanup\n- \ud83d\udcd6 Multiple reads supported until expiration\n- \ud83d\udcdd New example: encrypted_messaging_demo.py\n\n### 0.1.0 (2025-01-10)\n\n- Initial release\n- Basic challenge/proof verification flow\n- Context manager support\n- Comprehensive error handling\n- Full type hints\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python SDK for ZeroProof AI verification API - Secure your agentic e-commerce ecosystem",
    "version": "0.2.5",
    "project_urls": {
        "Bug Tracker": "https://github.com/jacobweiss2305/zeroproof/issues",
        "Documentation": "https://docs.zeroproofai.com",
        "Homepage": "https://github.com/jacobweiss2305/zeroproof",
        "Repository": "https://github.com/jacobweiss2305/zeroproof"
    },
    "split_keywords": [
        "agent",
        " ai",
        " ecommerce",
        " security",
        " verification",
        " zero-knowledge-proof",
        " zeroproof",
        " zkp"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bc30e26804df83f0af99fb2f9cfb09ec67e56b77b7c7762215565b7584cb6259",
                "md5": "cd0dc901c94c8edb1ea5ef0732f4c62b",
                "sha256": "7cbc97b0b7c783f9794d1129686677d172d3bb71cb949b84bc78de59a28006c0"
            },
            "downloads": -1,
            "filename": "zeroproof-0.2.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cd0dc901c94c8edb1ea5ef0732f4c62b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 10798,
            "upload_time": "2025-10-06T03:09:52",
            "upload_time_iso_8601": "2025-10-06T03:09:52.317590Z",
            "url": "https://files.pythonhosted.org/packages/bc/30/e26804df83f0af99fb2f9cfb09ec67e56b77b7c7762215565b7584cb6259/zeroproof-0.2.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4702451057980bdb14d361ef51f8159614ae819dd106ba0f5c90e33828af8856",
                "md5": "420b364a1b9a3863790b9097618584d2",
                "sha256": "a7f93dcaef3179dcf764826f02573832ae97247ec2a91944743f36b99db9d72a"
            },
            "downloads": -1,
            "filename": "zeroproof-0.2.5.tar.gz",
            "has_sig": false,
            "md5_digest": "420b364a1b9a3863790b9097618584d2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 17107,
            "upload_time": "2025-10-06T03:09:53",
            "upload_time_iso_8601": "2025-10-06T03:09:53.446427Z",
            "url": "https://files.pythonhosted.org/packages/47/02/451057980bdb14d361ef51f8159614ae819dd106ba0f5c90e33828af8856/zeroproof-0.2.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-06 03:09:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jacobweiss2305",
    "github_project": "zeroproof",
    "github_not_found": true,
    "lcname": "zeroproof"
}
        
Elapsed time: 1.63097s