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ì! :)