Skip to content

diveprotocol/opendive-client

OpenDIVE: Python Client for Domain-based Integrity Verification Enforcement (DIVE)

License: MIT Python: 3.8+ Version: 0.1.1 Status: Alpha

OpenDIVE is a Python client library for the DIVE protocol (Domain-based Integrity Verification Enforcement), a cryptographic protocol that leverages DNSSEC to verify the integrity and authenticity of web resources. DIVE operates as an additional security layer above HTTP/HTTPS, ensuring that resources are signed and validated against DNS-published keys.


Features

  • DNSSEC-backed verification: Uses DNS TXT records (_dive, _divekey) to publish policies and public keys.
  • Cryptographic signatures: Supports Ed25519 and Ed448 for signing, and SHA-256/384/512 for hashing.
  • CLI tool: Includes commands for verification, key generation, signing, and DNS inspection.
  • Incremental deployment: Works alongside existing infrastructure without breaking non-DIVE clients.
  • Reporting: Sends verification failure reports to a configurable endpoint.

Installation

From PyPI (Alpha Release)

pip install opendive-client

From Source

git clone https://github.com/diveprotocol/opendive-client.git
cd opendive-client
pip install -e .

Dependencies

  • Python 3.8+
  • dnspython (DNSSEC resolution)
  • cryptography (Ed25519/Ed448 support)
  • httpx (HTTP client)
  • click (CLI)

Usage

CLI Commands

OpenDIVE provides a CLI for common operations:

# Verify a resource
opendive verify https://example.com/file.tar.gz

# Download a resource (only if DIVE verification passes)
opendive download https://example.com/file.tar.gz

# Generate a key pair
opendive keygen --alg ed25519 --key-id mykey --domain example.com

# Sign a file
opendive sign myfile.tar.gz --private-key <base64_private_key> --key-id mykey

# Inspect DNS records
opendive dns example.com --key-id mykey

Python Library

from dive.client import DiveClient

client = DiveClient(require_dnssec=True)
result = client.verify("https://example.com/file.tar.gz")

if result.accepted:
    print("Resource is authentic!")
else:
    print(f"DIVE rejected resource: {result.failure_reason}")

Documentation

DIVE Protocol

OpenDIVE API


Development

Running Tests

pytest tests/

Contributing

Pull requests are welcome! For major changes, please open an issue first.


License

MIT License. See LICENSE for details.


Security

For security issues, see SECURITY.md.


Contact

About

Python library and CLI for Domain-based Integrity Verification Enforcement (DIVE)

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors