myproductpassport ← Lura għall-passaport
Rekord li jikxef kull tbagħbis

Fernway FX-36 E-Bike Battery

Kull verżjoni ppubblikata ta' dan il-passaport tingħata impronta diġitali, tintrabat mal-verżjoni ta' qabilha u tiġi ffirmata. Kieku xi ħaġa fir-rekord kellha tinbidel wara, l-impronti diġitali hawn taħt ma jibqgħux jaqblu.

Ma nbidilx minn meta ġie rreġistrat · firem ivverifikati
Impronta diġitali attwali (SHA-256)
b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
L-aħħar irreġistrat3 Nov 2026, 16:52 UTC
Verżjonijiet irreġistrati1
FirmaEd25519

Storja

  1. #1 · Ippubblikat Firma valida
    Impronta diġitali: b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
    Katina: cddfa8de6044bb8698b0a86d62eeed064a8b6b891c31a1b7ebdc8639f39b826d

Iċċekkjah int stess

  1. Niżżel ir-rekords bħala JSON u ċ-ċavetta pubblika.
  2. Għal kull rekord, il-valur tal-katina huwa s-SHA-256 ta': l-isem tal-iskema, l-ID tal-passaport, in-numru tar-rekord, l-impronta diġitali tiegħu, il-valur tal-katina ta' qabel u l-ħin, wieħed f'kull linja.
  3. Iċċekkja l-firma Ed25519 tal-valur tal-katina kontra ċ-ċavetta ppubblikata. Kull rekord irid isemmi wkoll il-valur tal-katina tar-rekord ta' qablu.
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")

L-impronta diġitali tkopri r-rekord kollu, inkluża l-informazzjoni ristretta u hash ta' kull dokument mehmuż, u għalhekk tipprova li r-rekord ma nbidilx mingħajr ma tikxef x'fih. Turi li l-passaport ma nbidilx minn meta ġie rreġistrat; ma tiċċertifikax li l-informazzjoni fih hija korretta, li tibqa' r-responsabbiltà tal-operatur ekonomiku li ppubblikah.