Skip to main content

qids — Python client for QIDS quantum digital signatures

qids is the Python client SDK for a QIDS Gateway. The gateway signs documents with one-time universal hashing (OTUH), a quantum digital signature scheme, and verifies them for the designated recipients. This package sends the requests; the gateway holds the one-time key material, and the client never sees it.

pip install qids

Python 3.10 or later. It depends on nothing outside the standard library.

The gateway itself is not on PyPI. It is delivered as a licensed container image. For access, contact raunakg2005@gmail.com.

Sign and verify

from qids import QIDSClient

client = QIDSClient(
    node_id="bank_node_alpha",
    qids_service_url="https://your-gateway.example.com",
    api_key="sk_live_...",   # from <gateway>/signup
)

signature = client.sign(
    document_id="DOC-98104",
    payload=b"TRANSFER 1,000,000 USD TO ACCT-48910",
    recipient_ids=["bank_node_beta"],
)
print(signature.document_id, len(signature.signature_tags), "tag(s)")
print(signature.entropy_source, "qkd_backed =", signature.qkd_backed)

verification = client.verify(
    document_id=signature.document_id,
    payload=b"TRANSFER 1,000,000 USD TO ACCT-48910",
    sender_id="bank_node_alpha",
    signature_tag=signature.signature_tags[0],
)
print(verification.is_valid, verification.reason, verification.threat)

A changed payload is rejected, and the result names the threat (forgery).

What a signature guarantees

The forgery bound returned with each signature (signature.otuh) is information-theoretic for a one-time key that is uniformly random and secret, so where the key comes from matters, and every signature says (entropy_source, qkd_backed):

  • Key from a QKD system over ETSI GS QKD 014: the guarantee holds end to end.
  • Key from the OS CSPRNG (the default): the guarantee rests on that generator and is computational in practice.

The gateway deals the recipients' key shares itself, so it is a trusted dealer: its guarantees are only as strong as the host it runs on.

Errors

QIDSAuthError (a missing or rejected API key) and QIDSServiceError (the gateway returned an error or could not be reached) come from qids.client. The QidsError hierarchy in qids.errors lets you catch everything the package raises deliberately.

ETSI GS QKD 014

QIDSClient(..., etsi_kms_url=...) and client.get_etsi_client(peer_sae_id) give direct access to a key-management entity through the ETSI GS QKD 014 REST API (qids.hardware.etsi_014.ETSI014Client).

Licence

Proprietary. Copyright © 2026 QIDS. All rights reserved. See LICENSE in the distribution.

Metadata

Release files for qids 1.3.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qids 1.3.7
File Size Uploaded Provenance Actions
qids-1.3.7.tar.gz 15.3 kB Without provenance Details for qids-1.3.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for qids 1.3.7
File Interpreter ABI Platform Actions
qids-1.3.7-py3-none-any.whl Python 3 none any Details for qids-1.3.7-py3-none-any.whl

Total release size: 31.5 kB

Release files / qids-1.3.7.tar.gz

Download URL qids-1.3.7.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e193ba8a5fdd71ee845c583233cd1767e1f6a712e8d8dc2421869c8e98d78483
BLAKE2b-256 checksum
How to use checksums
5304de1d243f759e4239afacdba2b47b8e8bdee1c2dedfa055ea128d3a8e13ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / qids-1.3.7-py3-none-any.whl

Download URL qids-1.3.7-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da164591833ce00d574640f75bbccb7c10af48d3b3ad61eac435d5913b69ea33
BLAKE2b-256 checksum
How to use checksums
59b7b8200856b5f96fc54eb21b5498c9c7a20ee4160f8c554fb0ad2ce4be847b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for qids 1.3.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page