minvws/nl-covid19-coronacheck-mobile-core

QR Code data

Closed this issue · 6 comments

Hi,

Ik ben erg geïntresseerd in het uitlezen van de data die in de nationale vaccinatie QR code staat. Die lijkt anders in elkaar te zitten dan de EHC (Europese) QR code. De Android en iOS apps lijken deze code te genereren en decoderen met behulp van een mobilecore library geschreven in Golang. Is dit de repo voor deze library? Komt deze library op termijn beschikbaar voor het publiek? En hoe lezen wij de blob in de QR code uit?

Wat ik gelezen heb, is dat voor de NL QR code ASN.1 gebruikt wordt. Ik kan helaas nog niet inloggen om te kijken hoe het eruit ziet.

Hallo! Ik heb de code net op de publieke repo's gepushed. Je zal in deze repository even .gitmodules moeten aanpassen om de -private suffix te verwijderen (en daarna git submodule init; git submodule update). Als je het pad langs het CLI command euqr volgt (die ondanks de naam ook Nederlandse privacy-vriendelijke QR codes kan verifiëren) kom je bij de serialization en verification-code uit in coronacheck-idemix.

Binnenkort meer info in de README hier. Zie alvast dit document voor de insteek, en de IRMA documentatie voor cryptografische achtergrond (de cryptografisch kern van IRMA wordt gebruikt).

Let wel op artikel 58re lid 3 Wpb, "voor het lezen van het elektronisch of schriftelijk coronatoegangsbewijs wordt een door Onze Minister beschikbaar gestelde applicatie gebruikt".

Top dankjewel!

Hmm ik loop tegen een probleem aan. De Base45 decoder die jullie gebruiken, volgt die deze draft net zoals de europese QR code? https://datatracker.ietf.org/doc/draft-faltstrom-base45/

Dat er een domestic base45 decoder is en een eubase45 doet mij vermoeden dat die elk net wat anders werken. Of dat ik een stap mis tussen het base45 gedeelte en het ASN.1 gedeelte.

edit -- ik doel dan op de base45 en/decoder in github.com/minvws/base45-go, die repo lijkt private.

Klopt. De Europese variant kan beter 'base41 met base45' charset heten. We hadden de efficiency van echte base45 echt nodig voor deze (grote) QR codes, dus ik heb base45 geïmplementeerd die gelijk is aan de methode van base58, maar met de QR charset. Deze is net zo efficient als QR binary mode.

Repo is public, maar moet nog verhuisd worden (zie de replace regel in go.mod): https://github.com/confiks/base45-go

Ah ik ben niet zo bekend met GoLang dus ik had dit over het hoofd gezien. :)

Dank voor de code!