The Debian User Group in Vienna

Text archives Help


Re: [Debienna] Public Key(s) für Digital Green Certificate


Chronological Thread 
  • From: Sebastian Bachmann <me AT free-minds.net>
  • To: debienna AT lists.debienna.at
  • Subject: Re: [Debienna] Public Key(s) für Digital Green Certificate
  • Date: Mon, 21 Jun 2021 16:56:24 +0200
  • Authentication-results: mail.cosmopool.net; dkim=pass reason="1024-bit key; insecure key" header.d=free-minds.net header.i=@free-minds.net header.b=mVSlLTYy; dkim-adsp=pass; dkim-atps=neutral

aha, ich hab was herausgefunden.
das ist scheinbar der source für die JS app: https://github.com/ehn-dcc-development/hcert-kotlin
(Die python variante kann leider keine trust lists laden: https://github.com/ehn-dcc-development/python-hcert)

Die TrustList ist genau das was man braucht. Allerdings haben die für die Signaturprüfung auch noch ein weiteres Anchor Zertifikat (oder man vertraut einfach der Liste *husthust*).
Das Format in der TrustList ist offenbar signed JWK (JSON Web Keys).
In diesem Dokument steht beschrieben wie es offenbar funktioniert: https://github.com/ehn-dcc-development/hcert-trust/blob/main/hcert_trust_exchange.md

Wobei ich jetzt einfach den TrustListContent mit b64decode in cbor2.loads gejagt habe und JSON rausbekomme wo die Zertifikate drin sind. In der Liste der Zertifikate ist dann ein dictionary mit key i für die KeyID und key c für das DER vom x509.
Darin finde ich auch das Zertifikat für meinen QR Code und kann ihn sogar validieren!

So jetzt wärs nur noch spannend wo das Anchor Zertifikat herkommt...

Kennt noch jemand gute Lösungen um die Daten auszulesen, zB für Android?
Ich mein github ist voll mit libraries aber offenbar gibts noch keine OpenSource App dafür.

LG Sebastian



Am 21.06.2021 um 15:36 schrieb Sebastian Bachmann:
Hi!

Vllt hat sich ja hier schon mal jemand damit beschäftigt: Ich möchte gerne die QR Codes vom Digital Green Certificate lokal dekodieren und verifizieren.

Das Dekodieren ist eigentlich nicht so schwer, wenn man mal weiß was COSE, CWT, CBOR und Base45 ist... In python findet man alle libraries die man braucht.
Außerdem gibts zwei hilfreiche Dokumente:
https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-certificates_v1_en.pdf
https://ec.europa.eu/health/sites/default/files/ehealth/docs/digital-green-certificates_dt-specifications_en.pdf
und eine Website mit tools (wobei ich da nicht unbedingt meine Daten reingeben würde, kA wo das hingeht):
https://github.pathcheck.org/debug.html

Jedenfalls kann ich so den COSE Sign dekodieren und die Payload als JSON darstellen.

Nur die Validierung bekomm ich nicht hin.
Ich habe von https://github.com/eu-digital-green-certificates/dgc-testdata einen Public key für AT genommen, aber das scheint wirklich nur ein Testkey zu sein. Im COSE sind auch die ersten 8 byte des SHA256 fingerprints angegeben und die stimmen auch nicht überein.
Ich suche einen pubkey dessen fingerprint sha256 mit 22cd89b6b3898629 startet...

Ich hab über greencheck.gv.at dieses json gefunden: https://greencheck.gv.at/api/masterdata
Darin ist offenbar eine Liste an keys aber ich check grad nicht wie man die einlesen kann. PKCS#7 scheint es nicht zu sein, java keystore auch nicht - oder ich habs falsch eingelesen?
Das JS auf der Seite ist leider gepackt und ich hab grad keine Lust mich da durchzuschlagen...
Sieht jemand was das für ein Format ist?
Ist das überhaupt die richtige Quelle oder gibt es eine andere Quelle für den public key? (wobei man vermutlich eine Liste aller Europäischen keys braucht)

LG Sebastian



Archive powered by MHonArc 2.6.18.

Top of page