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é 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.