Võltsimist tuvastav kirje
Fernway FX-36 E-Bike Battery
Selle passi igale avaldatud versioonile luuakse sõrmejälg, see seotakse eelmise versiooniga ja allkirjastatakse. Kui kirjes midagi hiljem muudetaks, ei ühtiks allolevad sõrmejäljed enam.
Muutmata alates salvestamisest · allkirjad kontrollitudPraegune sõrmejälg (SHA-256)
b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
Ajalugu
-
#1 · Avaldatud Allkiri kehtivSõrmejälg: b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
Ahel: cddfa8de6044bb8698b0a86d62eeed064a8b6b891c31a1b7ebdc8639f39b826d
Kontrollige ise
- Laadige kirjed alla JSON-vormingus koos avaliku võtmega.
- Iga kirje ahela väärtus on SHA-256 järgmistest andmetest, igaüks eraldi real: skeemi nimi, passi ID, kirje number, selle sõrmejälg, eelmine ahela väärtus ja aeg.
- Kontrollige ahela väärtuse Ed25519 allkirja avaldatud võtme alusel. Iga kirje peab sisaldama ka sellele eelneva kirje ahela väärtust.
import json, hashlib, base64, urllib.request
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
doc = json.load(urllib.request.urlopen("https://myproductpassport.eu/p/3daf1fbb-004d-4881-8515-9571e900f3eb/integrity.json"))
keys = {k["key_id"]: k["public_key"] for k in json.load(urllib.request.urlopen("https://myproductpassport.eu/.well-known/mpp-integrity-keys.json"))["keys"]}
prev = None
for r in doc["records"]:
line = "\n".join([doc["schema"], doc["passport_uuid"], str(r["sequence"]), r["content_hash"], r["previous_hash"] or "", r["recorded_at"]])
assert hashlib.sha256(line.encode()).hexdigest() == r["chain_hash"] and r["previous_hash"] == prev
Ed25519PublicKey.from_public_bytes(base64.b64decode(keys[r["key_id"]])).verify(base64.b64decode(r["signature"]), r["chain_hash"].encode())
prev = r["chain_hash"]
print("verified", len(doc["records"]), "records")
Sõrmejälg hõlmab kogu kirjet, sealhulgas piiratud juurdepääsuga teavet ja iga manustatud dokumendi räsi, nii et see tõendab kirje muutumatust, avaldamata selle sisu. See näitab, et passi ei ole pärast salvestamist muudetud; see ei tõenda, et selles sisalduv teave on õige. Selle eest vastutab endiselt passi avaldanud ettevõtja.