NOQTIS is out: post-quantum seals for the files your results came from. See the latest release.

Your results will be questioned.
Let the files answer.

NOQTIS seals a folder with a post-quantum signature, so anyone can check later that nothing changed. One C11 library and a command-line tool, no dependencies.

Why NOQTIS?

A result is only as good as the files it came from. NOQTIS writes noqtis.json (each file's size, SHA-256 and SHA3-256, in canonical JSON) and noqtis.sig, a signature over those exact bytes.

Anyone with your public key checks the folder offline, years later, without trusting you, a server or a log. Nothing is uploaded and nothing is published unless you publish it.

The library is plain C11 with no third-party code: the same seal checks the same way from the command line, Python, R, JavaScript, Rust, Go and Java.

Fail closed, and say why

Every parser rejects anything the format does not define, and a check that cannot be made is a failed check, never a silent pass. A changed, missing or added file fails the folder.

Each failed row comes with the reason and what to do next, in plain words and as --json for CI. Exit status: 0 checked, 1 failed, 2 could not run.

Post-quantum, and standard

RSA and elliptic-curve signatures will not outlast the records they protect. NOQTIS signs with ML-DSA (FIPS 204) and SLH-DSA (FIPS 205), alone or as an ML-DSA+Ed25519 hybrid that needs both halves to verify, and encapsulates keys with ML-KEM (FIPS 203).

Every scheme is checked against the NIST ACVP vectors and Wycheproof. No branch or memory index depends on a secret; ML-DSA and Ed25519 signing, SLH-DSA's secret-keyed hash, and ML-KEM and HQC decapsulation are also masked against power analysis.

Show one file, keep the rest

A sealed folder is a Merkle tree. noqtis prove writes a proof for the files you choose; whoever checks it learns those files are in the sealed folder, and nothing about the others: not their names, not their digests.

Share a report with a reviewer and keep the participant data private, with the same signature behind both.

Say who sealed it

A key is a string of bytes; people want a name. noqtis idcard writes a small card, signed by your seal key, that gives your name and, if you want, your ORCID iD, affiliation, e-mail and web page.

noqtis check --card then says who sealed the folder, and fails if the card belongs to a different key. The card proves the key's holder wrote it, not that the name is true: publish its fingerprint where people already know you, such as your ORCID record or your institution's page.

Keys change hands

Laptops get replaced and keys leak. noqtis rotate and noqtis revoke write signed statements, and check --keys follows them from the key you already trust.

Seals made with a replaced key still pass when a verified RFC 3161 timestamp shows they are older than the change; seals made after it do not.

Built to last

A timestamp shows when a folder was sealed only while the time-stamping authority's certificate holds. noqtis ers keeps an RFC 4998 evidence record beside the seal and renews it, so that time stays provable for decades.

Every signature is checked before it leaves the library, so a glitched one never gives a key away. noqtis selftest runs known answers for every algorithm, and the algorithms alone build for firmware with no operating system.

Fits what you already use

Export a checked capsule as an in-toto statement, a DSSE envelope, RO-Crate metadata or a BagIt bag. Add it to CI with one action, or call it from your language:

$ pip install noqtis$ npm install noqtis$ cargo add noqtis

What NOQTIS does not do

NOQTIS keeps its job precise: seal the files and check them. Everything else stays with you, by design.

How it compares

No network

Sealing and checking run offline. Checking a capsule by its URL is something you ask for.

No public log

Nothing about your seal goes anywhere. Add an RFC 3161 timestamp when you want one.

No key server

You hand out your public key where people already know you, and they compare its SHA-256.

No dependencies

Plain C11, no third-party code, an SBOM with nothing else in it.

No telemetry

It never phones home. There is nothing to opt out of.

Audited Not yet audited

An independent audit has been applied for. Until a report is published, read the security page.

Get involved with NOQTIS

Issues

GitHub for bugs and features.

Security

Report a vulnerability privately.

Documentation

Read the documentation or browse the source on GitHub.