Closed PaoloG1980 closed 2 years ago
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ì! :)
@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