myproductpassport ← Nazaj na potni list
Zapis z zaznavanjem posegov

Fernway FX-36 E-Bike Battery

Vsaka objavljena različica tega potnega lista dobi prstni odtis, je povezana s predhodno različico in podpisana. Če bi bil kar koli v zapisu pozneje spremenjen, se spodnji prstni odtisi ne bi več ujemali.

Nespremenjeno od zapisa · podpisi preverjeni
Trenutni prstni odtis (SHA-256)
b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
Zadnji zapis3 nov 2026, 16:52 UTC
Zabeležene različice1
PodpisEd25519

Zgodovina

  1. #1 · Objavljeno Veljaven podpis
    Prstni odtis: b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
    Veriga: cddfa8de6044bb8698b0a86d62eeed064a8b6b891c31a1b7ebdc8639f39b826d

Preverite sami

  1. Prenesite zapise v obliki JSON in javni ključ.
  2. Za vsak zapis je vrednost verige SHA-256 naslednjih podatkov: ime sheme, ID potnega lista, številka zapisa, njegov prstni odtis, prejšnja vrednost verige in čas, vsak v svoji vrstici.
  3. Preverite podpis Ed25519 vrednosti verige z objavljenim ključem. Vsak zapis mora navajati tudi vrednost verige predhodnega zapisa.
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")

Prstni odtis zajema celoten zapis, vključno z omejenimi podatki in zgoščeno vrednostjo vsakega priloženega dokumenta, zato dokazuje, da se zapis ni spremenil, ne da bi razkril njegovo vsebino. Kaže, da potni list od zapisa ni bil spremenjen; ne potrjuje pa, da so podatki v njem pravilni, za kar je še naprej odgovoren gospodarski subjekt, ki ga je objavil.