italia / verificac19-sdk

✅ Official VerificaC19 Node.js SDK

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Errore validazione Certificato

PaoloG1980 opened this issue · comments

@astagi scusa se ti disturbo, ma ho questo problema quando eseguo l'istruzione:
const dccTest = await Certificate.fromRaw(qrcode)
mi da questo errore
CertificateParsingError: certificate can't be parsed, Invalid base45 string

il qrCode della prova è quello del mio certificato personale e sono sicuro che sia valido.
Cosa posso aver sbagliato?
Grazie

Paolo

ma la stessa stringa che passi al metodo fromRaw, se la metti ad esempio qui: http://jumpjack.altervista.org/greenpass/
ti viene correttamente analizzata?

@PaoloG1980 molto strano! sei sicuro che qrcode sia il raw del codice e non il path dell'immagine? per l'immagine occorre utilizzare await Certificate.fromImage(qrcode)

@astagi e @lucadentella scusate se vi rispondo solo oggi, ma durante il week non ho potuto mettere mano al PC.
Ho verificato il mio qrCode usando il link proposto da @lucadentella e me lo valida correttamente.
La chiamata che mi da errore é await.Certificate.fromRaw(qrCode) dove qrCode vale HC1:6BFOXN%TS3DHPVO13J /G-/2YRV....
la funzioni che ho fatto sono queste:

async function syncData()
{
await Service.updateAll();
}

async function verifydccs(qrcode)
{
try
{
await syncData();
const dccTest = Certificate.fromRaw(qrcode)
const validationResult = Validator.validate(dccTest);
if (validationResult.code === Validator.codes.VALID)
{
return "Green Pass VALIDO"
}
else
{
return "Green Pass NON VALIDO"
}
}
catch (error)
{
console.log(error);
}

}
Premetto che sono un novellino di NodeJs, ma a me sembra corretta.
Mi potete aiutare in qualche modo?

@astagi e @lucadentella
Ho rifatto la funzione precedente utilizzando la funzione la chiamata Certificate.fromImage(Path) e in questo caso funziona e lo valida correttamente.
Quindi ho fatto un debug più approfondito e ho scoperto che l'errore scaturisce nel file dcc.js (..node_modules\dcc_utils\src\dcc.js) quando fa questa chiamata: const base45Data = base45.decode(certificateRaw.slice(4));

Cosa posso fare adesso?

@PaoloG1980 se da Certificate.fromImage(Path) funziona, evidentemente c'è qualche errore nella stringa Base45. Anche fromImage passa da base45.decode(certificateRaw.slice(4));. DccUtils adesso utilizza una versione patchata della libreria Base45 che skippa alcuni caratteri malevoli, non tutti i servizi/librerie hanno questo fix, probabilmente neanche quello online.

@astagi Avevi ragione tu, il porblema e che io passavo il qrcode come parametro di una chiamata get e quindi mi convertiva automaticamente tutti i caratteri spazio con %20 e tutti i caratteri + con spazio. Facendo il dovuto parsing funziona correttamente.
Grazie di nuovo per l'aiuto.

Di niente @PaoloG1980 meglio così! :)