Skip to main content

DigitalMeve — The Certified Digital Memory (.MEVE)

Project description

DigitalMeve — The Certified Digital Memory

Tests Python License


🚀 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

digitalmeve-0.1.1.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

digitalmeve-0.1.1-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

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

Hashes for digitalmeve-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a30880836073a733c136743ead86b8e18ee73db7342ff1062d429dc0e8767e96
MD5 1d4b5dd19927cdb7cb519969cc18e3e7
BLAKE2b-256 85f438a356299e0b84e90c4dcca6511d77ae482e44cb9a5e478f0b6d1677100c

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitalmeve-0.1.1.tar.gz:

Publisher: publish.yml on BACOUL/digitalmeve

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for digitalmeve-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4154fb4753fd7d690beb54c2ae0c7c39ce63f175fd943ecea179218d14f8a432
MD5 e7b4b691b07b6ce27415b7c1ddaeda34
BLAKE2b-256 74be417f63c427125ddaf00d1d04e4fa6a8a406be2182bc884c0491699d6f3cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for digitalmeve-0.1.1-py3-none-any.whl:

Publisher: publish.yml on BACOUL/digitalmeve

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page