herald-si / verificac19-sdk-php
PHP Digital Green Certificate SDK
Requires
- php: >=7.3
- ext-zlib: *
- guzzlehttp/guzzle: ^7
- spomky-labs/cbor-php: ^2.1
- symfony/deprecation-contracts: ^2.2
- web-auth/cose-lib: ^3.3
Requires (Dev)
- phpunit/phpunit: 9.*
- dev-main
- v1.6.0
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v0.0.2
- 0.0.1
- dev-develop
- dev-feature/remove-unused-scanmode
- dev-feature/remove-entry-italy-scan-mode
- dev-release/1.5.5
- dev-feature/entry-it-underage
- dev-release/1.5.4
- dev-feature/disable-work-scanmode
- dev-release/1.5.3
- dev-feature/sdk-user-agent-header
- dev-release/1.5.2
- dev-release/1.5.1
- dev-release/1.5.0
- dev-release/1.4.3
- dev-release/1.4.2
- dev-release/1.4.1
- dev-release/1.4.0
- dev-release/1.3.0
- dev-release/1.2.4
- dev-feature/php-unit-test
- dev-release/1.2.3
- dev-release/1.2.2
- dev-release/1.2.1
- dev-release/1.2.0
- dev-release/1.1.2
- dev-release/1.1.1
- dev-release/1.1.0
- dev-release/1.0.8
- dev-release/1.0.7
- dev-release/1.0.6
- dev-release/1.0.5
This package is auto-updated.
Last update: 2024-10-26 14:56:17 UTC
README
Indice
Contesto
Attenzione, questo repository è derivato dalle specifiche presenti in ministero-salute/it-dgc-verificac19-sdk-android!
L'elenco le librerie utilizzabili è presente in questa lista. La pagina contiene anche informazioni sulle policy di accettazione e rimozione dalla lista stessa. Fate riferimento ad essa prima di utilizzo in ambienti di produzione.
Questo repository contiene un Software Development Kit (SDK), che consente di integrare nei sistemi le funzionalità di verifica della Certificazione verde COVID-19, mediante la lettura del QR code.
Trattamento dati personali
Il trattamento dei dati personali svolto dalle soluzioni applicative sviluppate a partire dalla presente SDK deve essere effettuato limitatamente alle informazioni pertinenti e alle operazioni strettamente necessarie alla verifica della validità delle Certificazioni verdi COVID-19. Inoltre è fatto esplicito divieto di conservare il codice a barre bidimensionale (QR code) delle Certificazioni verdi COVID-19 sottoposte a verifica, nonché di estrarre, consultare, registrare o comunque trattare per finalità ulteriori rispetto a quelle previste per la verifica della Certificazione verde COVID-19 o le informazioni rilevate dalla lettura dei QR code e le informazioni fornite in esito ai controlli, come indicato nel DPCM 12 ottobre 2021
Requisiti
- PHP >= 7.3
- COSE-lib requires the GMP or bcmath extension vedi issue #31
- SQLite per la gestione delle DCC Revoke List
Changelog
Il changelog è disponibile qui.
Installazione
E' necessario clonare questo progetto, nel seguente modo:
your_project_folder
|___sdk_repo_folder
a questo punto lanciare all'interno della cartella sdk_repo_folder
il comando
composer install --no-dev
Permessi cartella assets
E' necessario settare i permessi della cartella sdk_repo_folder\assets
in modo tale che
il webserver possa leggere, creare ed editare i file contenuti in essa.
Nel caso in cui non fosse possibile cambiare i permessi della cartella,
dalla release 1.0.5
esiste la possibilità di modificare il path di salvataggio dei
file, vedi Cache Folder.
Uso
L'applicazione di verifica dovrà importare la cartella vendor
dell'SDK.
require __DIR__ . '/sdk_repo_folder/vendor/autoload.php';
A questo punto è possibile utilizzare una libreria di scansione di QR Code
a scelta che, dopo aver letto un QR Code di un EU DCC, passi la stringa
estratta al validatore
Herald\GreenPass\Utils\CertificateValidator
.
Esempio:
... require __DIR__ . '/sdk_repo_folder/vendor/autoload.php'; use Herald\GreenPass\Utils\CertificateValidator; $gp_string = 'HC1:6BF.......'; $gp_reader = new CertificateValidator($gp_string); $gp_info = $gp_reader->getCertificateSimple(); // Mostro la struttura dell'esito validazione echo "<pre>" . print_r($gp_info, true) . "</pre>"; ...
Osservando la risposta del metodo è restituito un oggetto
Herald\GreenPass\Model\CertificateSimple
che contiene
il risultato della verifica.
Il data model contiene i dati relativi alla
persona, la data di nascita, il timestamp di verifica e lo stato della
verifica.
Basandosi su questi dati è possibile disegnare la UI e fornire all'operatore lo stato della verifica del DCC.
Cache Folder
Dalla release 1.0.5
esiste la possibilità di modificare il path di salvataggio dei
file, utilizzando il metodo overrideCacheFilePath
della classe FileUtils
:
Herald\GreenPass\Utils\FileUtils::overrideCacheFilePath("/absolute/path/to/cache/folder");
oppure su Windows:
Herald\GreenPass\Utils\FileUtils::overrideCacheFilePath("c:\path\to\cache\folder");
Dalla release 1.2.0
è possibile aggiornare i file contenuti nella cache utilizzando il metodo update*()
della classe UpdateService
:
//aggiorna lo status dei certificati Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(); //aggiorna la lista dei certificati Herald\GreenPass\Utils\UpdateService::updateCertificateList(); //aggiorna le regole di validazione Herald\GreenPass\Utils\UpdateService::updateValidationRules(); //aggiorna le liste di revoca Herald\GreenPass\Utils\UpdateService::updateRevokeList();
oppure per aggiornare tutte le liste:
Herald\GreenPass\Utils\UpdateService::updateAll();
In ogni caso, queste liste vengono aggiornate solo se sono passate 24 ore dall'ultimo aggiornamento, non viene forzato l'update.
E', quindi, possibile all'interno dell'applicativo che utilizza questo SDK creare un cron che viene chiamato periodicamente (orario/6 ore/giornaliero) per il download delle regole.
In questo modo durante la verifica della stringa del GreenPass è probabile che le stesse siano già aggiornate, riducendo i tempi di verifica.
Proxy
(thanks to @darpins)
Dalla release 1.2.3
è possibile utilizzare un proxy per le chiamate agli endpoint per il download delle regole/liste di certificato, utilizzando il metodo setProxy
della classe EndpointService
:
Herald\GreenPass\Utils\EndpointService::setProxy("https://username:password@192.168.0.1:8000");
Scan Mode
Funzionalità Legacy.
Per selezionare la tipologia, è possibile passare al costruttore del validatore un parametro di tipo Herald\GreenPass\Validation\Covid19\ValidationScanMode
.
Nel caso in cui non venisse scelto, viene impostata di default la tipologia BASE
.
Dalla versione 1.6.0
è possibile utilizzare solo la tipologia BASE
.
// set scan mode to BASE $scanMode = ValidationScanMode::CLASSIC_DGP; $gp_reader = new CertificateValidator($gp_string, $scanMode);
Debug mode
Per aiutare l'implementazione di questo sdk, è stata introdotta una funzionalità di Debug.
E' possibile abilitare la stessa utilizzando il metodo enableDebugMode
della classe EnvConfig
e disabilitarlo con il metodo disableDebugMode
:
Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); ... do some test ... Herald\GreenPass\Utils\EnvConfig::disableDebugMode();
Force cache update
E' possibile, solo con debug mode attivo, forzare l'aggiornamento dei file nella cache, passando il parametro opzionale force_update
a true
.
Esempi di funzionamento:
//non viene forzato l'aggiornamento, manca debug mode Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(true); --- //non viene forzato l'aggiornamento, parametro force update a false Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(); --- //viene forzato l'aggiornamento, non usare in produzione! Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(true);
Visualizza errori scansione
Abilitando il debug mode:
- in tutti i casi in cui la risposta alla scansione avrebbe generato un esito
NOT_EU_DCC
, viene invece mostrato lo stack di errore che ha generato questo esito. - in tutti gli altri casi, viene mostrato l'esito della validazione, ma viene restituita la stringa
DISABLE-DEBUG-MODE-IN-PRODUCTION
al posto del nome e cognome contenuti nel greenpass (per evitare di mantenere abilitato il debug mode in produzione).
Licenza
Dettaglio Licenza
La licenza per questo repository è una Apache License 2.0
.
All'interno del file LICENSE sono presenti le informazioni
specifiche.
Contributori
Qui c'è una lista di contributori. Grazie per essere partecipi nel miglioramento del progetto giorno dopo giorno!