An evidence package is a set of data files, a manifest that lists the SHA-256 hash of each file, and an Ed25519 signature over that manifest. This page checks all three in your browser. Nothing is uploaded.
Drop the whole package into the box: manifest.json, manifest.sig and the data files. Or drop one file to get its SHA-256. Your browser does the work with WebCrypto. Ed25519 support in WebCrypto differs between browsers and versions; if the checker reports that Ed25519 is missing, use the OpenSSL steps further down.
Download the four files, then drop them into the box above. The sample is a battery storage (BESS) example: one illustrative asset, SAMPLE-BESS-CL-001. It is not a real plant, and its values are not measurements. A solar-specific signed package is pending, so this sample shows the format only.
manifest.json ↓ manifest.sig ↓ telemetry-extract.csv ↓ asset-summary.json ↓
Nothing has been checked yet. The result appears here, file by file, once you choose or drop a package.
The checker answers two questions. Was the manifest signed by the published key and left unchanged? Does each file match the SHA-256 that the manifest lists? Read both answers together. The boxes below show the wording the checker uses. They are examples, not results of a real check.
matches the manifest
matches the manifest
Every file is exactly what the manifest lists, and the manifest is exactly what the key holder signed. Nothing was added, removed or changed after signing.
Either the manifest changed after it was signed, or it was signed with a different key. Treat the package as unverified, even when every file row matches, because the manifest itself is not trusted.
does NOT match — the file was modified
A changed byte in a data file changes its SHA-256 hash, so that file fails. The signature can still be valid, because the manifest itself was not touched. Read the ✗ row, not only the banner. If someone also edits the manifest so that the row matches, the signature turns INVALID.
The format uses JSON, SHA-256 and Ed25519. It needs no blockchain and no proprietary viewer. Anyone can implement it, and anyone can check a package without this page.
| spec | LTB-Evidence-Manifest/0.1 |
| files[] | path, SHA-256 and size in bytes of each file in the package |
| asset | the asset that the evidence covers. The sample uses a battery storage (BESS) identifier, SAMPLE-BESS-CL-001 |
| engine / seed | where a model produced a value: the model version and the random seed, so the value can be reproduced |
| key_id | which published key the signer used (ltb-2026-10) |
| created | when the signer produced the package. The signer writes this date, and it is not yet independently timestamped |
| manifest.sig | detached Ed25519 signature over the exact bytes of manifest.json, stored as base64 text |
You do not need this page. You need OpenSSL 3.x and the published public key. Run these three steps in the folder that holds the package:
The result is "Signature Verified Successfully" or "Signature Verification Failure". The second step writes the published key as a PEM public key. The base64 line is the standard SubjectPublicKeyInfo encoding of the same 32-byte key: a fixed 12-byte Ed25519 header followed by the raw key. The key itself does not change.
Published public key (Ed25519, raw, base64), key_id ltb-2026-10:
Published public key (Ed25519, raw, base64), key_id ltb-2026-08:
Two keys are published. ltb-2026-10 signs packages from October 2026, including this sample. ltb-2026-08 stays valid for packages signed before that date.
A valid package proves integrity and origin. These files, as listed, were signed with the published LIFETIMEBESS key and have not changed since signing. A valid package does not prove:
Check the monitoring data of one system first. For a signed evidence package on one asset, write to us.
Get the free PV Health Score Email about a package