myproductpassport ← Επιστροφή στο διαβατήριο
Εγγραφή προστατευμένη από αλλοιώσεις

Fernway FX-36 E-Bike Battery

Κάθε δημοσιευμένη έκδοση αυτού του διαβατηρίου λαμβάνει αποτύπωμα, συνδέεται με την προηγούμενη έκδοση και υπογράφεται. Αν οτιδήποτε στην εγγραφή τροποποιούνταν μεταγενέστερα, τα παρακάτω αποτυπώματα δεν θα ταίριαζαν πλέον.

Αναλλοίωτο από την καταγραφή του · οι υπογραφές επαληθεύτηκαν
Τρέχον αποτύπωμα (SHA-256)
b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
Τελευταία καταγραφή3 Νοε 2026, 16:52 UTC
Καταγεγραμμένες εκδόσεις1
ΥπογραφήEd25519

Ιστορικό

  1. #1 · Δημοσιευμένο Έγκυρη υπογραφή
    Αποτύπωμα: b7e831dbf369cc947b766db555078e87c54bd5d9e54f7f113c4eb6c2d49d35bc
    Αλυσίδα: cddfa8de6044bb8698b0a86d62eeed064a8b6b891c31a1b7ebdc8639f39b826d

Ελέγξτε το μόνοι σας

  1. Κατεβάστε τις εγγραφές σε JSON και το δημόσιο κλειδί.
  2. Για κάθε εγγραφή, η τιμή αλυσίδας είναι το SHA-256 των εξής, ένα ανά γραμμή: το όνομα του σχήματος, το αναγνωριστικό του διαβατηρίου, ο αριθμός της εγγραφής, το αποτύπωμά της, η προηγούμενη τιμή αλυσίδας και η ώρα.
  3. Ελέγξτε την υπογραφή Ed25519 της τιμής αλυσίδας με βάση το δημοσιευμένο κλειδί. Κάθε εγγραφή πρέπει επίσης να αναφέρει την τιμή αλυσίδας της προηγούμενης.
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")

Το αποτύπωμα καλύπτει ολόκληρη την εγγραφή, συμπεριλαμβανομένων των πληροφοριών περιορισμένης πρόσβασης και ενός hash κάθε συνημμένου εγγράφου, ώστε να αποδεικνύει ότι η εγγραφή δεν έχει αλλάξει χωρίς να αποκαλύπτει το περιεχόμενό της. Δείχνει ότι το διαβατήριο δεν έχει τροποποιηθεί από τη στιγμή της καταγραφής του· δεν πιστοποιεί ότι οι πληροφορίες που περιέχει είναι ορθές, κάτι που παραμένει ευθύνη του οικονομικού φορέα που το δημοσίευσε.