Metadata-Version: 2.4
Name: inkan-standard
Version: 1.0.0
Summary: Verify Inkan seals, code fingerprints and warrant canaries — the Apache-2.0 verification path of the Inkan Standard (BRC-145)
Author-email: RexStarBSV <RexStarBSV@protonmail.com>
License-Expression: Apache-2.0 AND CC0-1.0
Project-URL: Homepage, https://github.com/RexStarBSV/Inkan
Project-URL: Specification, https://github.com/bsv-blockchain/BRCs/blob/master/apps/0145.md
Keywords: inkan,brc-145,provenance,verification,canary,fingerprint,bsv
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE-VERIFY
License-File: NOTICE
License-File: LICENSE-VECTORS
Provides-Extra: sign
Requires-Dist: bitcoinx>=0.6; extra == "sign"
Dynamic: license-file

# inkan-standard

The **verification path** of the Inkan Standard — [BRC-145](https://github.com/bsv-blockchain/BRCs/blob/master/apps/0145.md),
a registry-free typed content anchor with on-chain code provenance.

This package verifies three things, offline, with no network and no keys:

| | |
|---|---|
| **Content anchors and seals** | that an `ik1` code and its rendered seal are the canonical pair for a given `(data, kind)` |
| **Code fingerprints** | that a release binary matches the fingerprint its publisher claims |
| **Warrant canaries** | that a signed, freshness-proofed operator statement is valid, stale, or forged |

```python
from inkan_standard import verify

r = verify.canonical_seal("1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2", "address")
print(r["code"])        # ik112cf1aaca7ef5079...
```

## No required dependencies

Verification never goes dark because an install failed. `bitcoinx` is used for ECDSA when present;
otherwise the bundled pure-Python `_secp256k1` takes over — differentially tested against bitcoinx
across 1270 cases with zero divergences. Signing a canary is operator-side and needs the extra:

```sh
pip install inkan-standard            # verify
pip install "inkan-standard[sign]"    # verify + sign your own canary
```

The distribution is `inkan-standard`, and the package you import is `inkan_standard`. An unrelated
PyPI project named `inkan` installs an import package called `inkan`; the two names do not collide.

## Licence

The code in this distribution is **Apache-2.0** — the verification path only, with a patent grant.
You may verify Inkan codes and seals, and generate your own, in any product, commercial or not,
forever.

The wider Inkan repository is multi-licence: the specification is CC BY 4.0, the conformance
vectors are CC0, and the product tier (on-chain anchoring, minting workflows, application surfaces)
is BSL 1.1 until 2030-07-09. **None of the BSL-licensed code is in this package.** See `NOTICE` for
the exact file list this Apache-2.0 grant covers. The conformance vectors bundled for the self-test
(`inkan_standard/vectors/*.json`) are CC0, per the included `LICENSE-VECTORS`.
