The Debian User Group in Vienna

Text archives Help


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


Chronological Thread 
  • From: David Schmitt <david AT black.co.at>
  • To: debienna AT lists.debienna.at
  • Subject: Re: [Debienna] Public Key(s) für Digital Green Certificate
  • Date: Mon, 21 Jun 2021 19:26:56 +0100
  • Authentication-results: mail.cosmopool.net; dkim=pass reason="2048-bit key; insecure key" header.d=black-co-at.20150623.gappssmtp.com header.i=@black-co-at.20150623.gappssmtp.com header.b=0DlBfuuj; dkim-adsp=none (insecure policy); dkim-atps=neutral


On Mon, 21 Jun 2021 at 15:56, Sebastian Bachmann <me AT free-minds.net> wrote:
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