DigitalMeve — The Certified Digital Memory (.MEVE)
Project description
DigitalMeve — The Certified Digital Memory
🚀 Vision
DigitalMeve defines a new universal format of digital certification: .MEVE (Memory Verified).
A simple, human-readable (2-second) proof that attests:
- 📌 The existence of a document at a given date
- 🔐 The integrity of the document (SHA-256 fingerprint)
- 👤 The authenticity of the issuer (person, professional, or institution)
Goal: become the “PDF of digital proof” for the world.
🧩 What is a .meve file?
A small, signed proof file linked to any document. It contains:
- the document’s SHA-256
hash, - the original file name & MIME type,
- the generation timestamp (ISO 8601),
- the issuer identity (e.g., email/domain) and signature (base64).
It can live as:
- embedded metadata (for formats that support it), or
- sidecar JSON file (
yourfile.meve.json) for maximal interoperability.
📦 Quickstart
1) Clone & install
git clone https://github.com/BACOUL/digitalmeve.git
cd digitalmeve
python -m venv .venv && source .venv/bin/activate # (Windows: .venv\Scripts\activate)
pip install -r requirements.txt
2) Generate a .meve proof
python cli_generate.py \
--file ./examples/facture.pdf \
--issuer "contact@example.com" \
--out ./examples/facture.meve
3) Verify a document against its proof
python cli_verify.py \
--file ./examples/facture.pdf \
--meve ./examples/facture.meve
If your format has no metadata (e.g., .txt) or the file is very large, use the sidecar:
python cli_generate.py --file big.pdf --issuer "contact@example.com" --out big.meve.json
python cli_verify.py --file big.pdf --meve big.meve.json
---
🛠️ How it works (high-level)
1. We compute the SHA-256 of the document.
2. We create a compact proof structure (issuer, timestamp, file meta, hash).
3. We sign that structure and store the signature with the proof.
4. Verification recomputes the hash and checks the signature & fields.
> ✅ If any metadata or content is modified, verification fails instantly.
---
📄 Example of a .meve (human-readable)
MEVE/1
Status: Pro
Issuer: contact@example.com
Certified: DigitalMeve (email verified)
Time: 2025-08-27T22:35:01Z
Hash-SHA256: 5f2a6c4cf0b67d2f9c3f8ad...
ID: MEVE-9XJ3L
Signature: 0JfA0a9sDsa7D3gS== (base64 Ed25519)
Meta: facture.pdf • 18230 bytes • application/pdf
Doc-Ref: facultatif
Visible instantly — no complex tools required.
---
🔒 Security & integrity
Tamper-proof by design: the SHA-256 hash binds the proof to the exact content.
Metadata edits (title, author, etc.) are detected because the verification recomputes the hash.
Large files: prefer sidecar .meve.json to avoid touching heavy binaries.
Interoperability: sidecar works for all formats (including .txt).
Legal note: the proof attests to the content (hash), not the visual rendering.
For example, a “PDF optimization” that changes bytes changes the hash → it’s a different document.
See SECURITY.md to report a vulnerability.
---
✅ Tests (CI)
Unit tests run on GitHub Actions for Python 3.10 / 3.11 / 3.12.
Local run:
pip install -r requirements.txt
pytest -q
---
🗺️ Roadmap (next milestones)
🔐 Optional public-key registry for issuer discovery & trust.
🧾 Embedded metadata for more formats; seamless sidecar fallback.
🧰 Official pip package (digitalmeve) and stable CLI.
🌍 Multilingual docs.
Track progress in CHANGELOG.md and Releases.
---
🤝 Contributing & community
Start with CONTRIBUTING.md
Follow our Code of Conduct
Open issues with our templates: .github/ISSUE_TEMPLATE/
Ask questions or propose ideas in Discussions.
---
📜 License
Released under the MIT License — permissive for commercial and open source use.
See LICENSE.
If you use DigitalMeve in production, please keep a link to the repo:
DigitalMeve — https://github.com/BACOUL/digitalmeve (MIT)
---
🔗 Useful links
Releases: https://github.com/BACOUL/digitalmeve/releases
Actions (CI): https://github.com/BACOUL/digitalmeve/actions
Issues: https://github.com/BACOUL/digitalmeve/issues
Discussions: https://github.com/BACOUL/digitalmeve/discussions
---
© 2025 DigitalMeve. All rights reserved under MIT terms.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file digitalmeve-0.1.1.tar.gz.
File metadata
- Download URL: digitalmeve-0.1.1.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a30880836073a733c136743ead86b8e18ee73db7342ff1062d429dc0e8767e96
|
|
| MD5 |
1d4b5dd19927cdb7cb519969cc18e3e7
|
|
| BLAKE2b-256 |
85f438a356299e0b84e90c4dcca6511d77ae482e44cb9a5e478f0b6d1677100c
|
Provenance
The following attestation bundles were made for digitalmeve-0.1.1.tar.gz:
Publisher:
publish.yml on BACOUL/digitalmeve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
digitalmeve-0.1.1.tar.gz -
Subject digest:
a30880836073a733c136743ead86b8e18ee73db7342ff1062d429dc0e8767e96 - Sigstore transparency entry: 440736386
- Sigstore integration time:
-
Permalink:
BACOUL/digitalmeve@1d2108f809fa20ca6d0db90cddd34a8eb21e6a42 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/BACOUL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1d2108f809fa20ca6d0db90cddd34a8eb21e6a42 -
Trigger Event:
release
-
Statement type:
File details
Details for the file digitalmeve-0.1.1-py3-none-any.whl.
File metadata
- Download URL: digitalmeve-0.1.1-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4154fb4753fd7d690beb54c2ae0c7c39ce63f175fd943ecea179218d14f8a432
|
|
| MD5 |
e7b4b691b07b6ce27415b7c1ddaeda34
|
|
| BLAKE2b-256 |
74be417f63c427125ddaf00d1d04e4fa6a8a406be2182bc884c0491699d6f3cc
|
Provenance
The following attestation bundles were made for digitalmeve-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on BACOUL/digitalmeve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
digitalmeve-0.1.1-py3-none-any.whl -
Subject digest:
4154fb4753fd7d690beb54c2ae0c7c39ce63f175fd943ecea179218d14f8a432 - Sigstore transparency entry: 440736442
- Sigstore integration time:
-
Permalink:
BACOUL/digitalmeve@1d2108f809fa20ca6d0db90cddd34a8eb21e6a42 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/BACOUL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1d2108f809fa20ca6d0db90cddd34a8eb21e6a42 -
Trigger Event:
release
-
Statement type: