herald-si / verificac19-sdk-php

PHP Digital Green Certificate SDK
Apache License 2.0
13 stars 6 forks source link

Errore Validazione Green Pass con issuer:"Department of Health Ireland" #93

Closed lumzz closed 2 years ago

lumzz commented 2 years ago

Questa mattina, ho avuto un errore di validazione per due Green Pass irlandesi. Sto utilizzando la versione 1.4.1. L'errore è dovuto ad un non corretto riconoscimento nella lettura del CBOR dei campi doseGiven e totalDoses. Nel CBOR in questione viene utilizzato il Major Type 7.

Qualcuno ha sperimentato una situazione simile?

DevPGS commented 2 years ago

ciao @lumzz , volevo chiederti un'ulteriore informazione: va in errore la parte di decodifica oppure il risultato dell'esito del GP è NOT_VALID?

lumzz commented 2 years ago

Ciao @DevPGS L'errore è nel file GreenPassCovid19Checker.php, in verifyVaccinationDose. Alla riga:

$check_other_booster = $cert->doseGiven > $cert->totalDoses || ($cert->doseGiven == $cert->totalDoses && $cert->doseGiven > 2);

doseGiven e totalDoses non sono degli interi confrontabili ma degli oggetti.

DevPGS commented 2 years ago

qui trovi la specifica json del greenpass alla versione 1.3.0: europa.eu specification, alla pagina 7 viene richiesto in v/dn (vaccine/dose number):

Sequence number (positive integer) of the dose given during this vaccination event. 1 for the first dose, 2 for the second dose etc. Exactly 1 (one) non-empty field MUST be provided.

L'unica cosa che mi viene in mente è che la versione del GP non sia 1.3.0 La puoi verificare nel json alla voce ver

lumzz commented 2 years ago

@DevPGS la versione che vedo in data[-260] è 1.3.0. Ho fatto il confronto anche con un GP italiano e non vedo differenze se non nei campi dn e sd che compaiono in quello irlandese come CBOR\OtherObject\GenericObject, mentre in quello italiano sono rispettivamente 3 e 2.

DevPGS commented 2 years ago

Ciao @lumzz , hai per caso novità? nel caso potresti provare con questo codice di test scritto sulla libreria di decodifica CBOR che non fa alcun check della parte di signature, per capire se la conversione avviene correttamente: https://github.com/Spomky-Labs/cbor-php/issues/32#issuecomment-924235177 Nel caso in cui ci fossero problemi anche con questo codice, bisognerebbe aprire un issue li, oppure capire se ci sono problemi a livello formale nei dati presenti nel certificato.

DevPGS commented 2 years ago

chiudo per inattività