Vérifier un bundle

Chaque dataset Plexoria est un bundle signé. Deux contrôles prouvent qu'il est intact et vient bien de nous — sans compte ni API, juste les fichiers et cette page.

Ce que contient le bundle

À côté des données et de la datasheet, chaque bundle porte manifest.json (SHA-256 de chaque fichier + identité du signataire), manifest.sig (une signature Ed25519 sur le manifest), et public_key.pem (la moitié publique de la clé de signature).

Étape 1 — ancrer la clé

Confirmez que la clé publique du bundle est bien la nôtre en comparant son empreinte à celle publiée ici, hors-bande :

# empreinte publiée sur plexoria.io/keys.txt
shasum -a 256 public_key.pem
e6674069396a79a2295ec2c64ed5f39b81f7e270f69d78e0a0e8e371fcf65665  public_key.pem

Étape 2 — vérifier signature + hachages

Ceci contrôle la signature Ed25519 sur le manifest, puis que chaque SHA-256 correspond toujours — c.-à-d. que rien n'a été modifié ni remplacé :

python - <<'PY'
import json, hashlib, pathlib
from cryptography.hazmat.primitives.serialization import load_pem_public_key
d = pathlib.Path(".")
pub = load_pem_public_key((d/"public_key.pem").read_bytes())
sig = bytes.fromhex((d/"manifest.sig").read_text().strip())
pub.verify(sig, (d/"manifest.json").read_bytes())          # lève une erreur si invalide
m = json.loads((d/"manifest.json").read_text())
for name, want in m["files"].items():
    got = hashlib.sha256((d/name).read_bytes()).hexdigest()
    assert got == want, name
print("OK — signature valide, tous les hachages correspondent")
PY
La clé du bundle prouve l'intégrité. Ancrer son empreinte ici (et sur notre profil marketplace) prouve l'authenticité — que la clé est bien celle de Plexoria, pas d'un imposteur. Faites toujours l'Étape 1.

La clé de signature

Clé publique et empreinte, aussi servies en texte brut sur plexoria.io/keys.txt :

SHA-256  e6674069396a79a2295ec2c64ed5f39b81f7e270f69d78e0a0e8e371fcf65665

-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAL3lTFojHNEMFvcX1WYuKdzdiKzlsibSqKaUlbHK5tvM=
-----END PUBLIC KEY-----

La clé privée ne quitte jamais son propriétaire et n'est dans aucun bundle ni dépôt. Seule la clé publique ci-dessus est distribuée.