ho necessità di ottenere la firma digitale di un dato (formato JSON) mediante una CIE o una smartcard (tipo quelle rilasciate da Infocert, Poste, buffetti, ecc.).
dove posso trovare le specifiche per interagire con la smartcard (ADPU ed esempi), o in alternativa esiste un servizio online a cui potersi collegare con SPID, inserire il dato e ottenere la firma?
grazie, ma questi servizi sono progettati per creare firme di documenti, non dati. Avrei bisogno di un server che esponga una REST API che accetti un JSON come input.
Questo, a mio avviso, non è possibile secondo le regole del CAD.
Infatti anche la firma XADES non trova applicazione perchè manca una standardizzazione del layer di presentazione delle informazioni che permetta la univoca comprensione di quanto si sta firmando al firmatario.
Certo, ma da un punto di vista tecnico, la firma di un documento non è altro che la cifratura con chiave privata del suo hash. Nel caso dei token o smartcard crittografiche la chiave è conservata in una memoria sicura del dispositivo. Quindi esiste un protocollo che permette a una applicazione che fornire al dispositivo l’hash del documento e ottenere in risposta l’hash criptato.
Se al dispositivo fornisco un hash o un altro tipo di dato non cambia nulla. La firma non avrà valore legale ai fini per cui è progettato il sistema, ma resta una firma di un dato prodotta con una chiave privata e verificabile con quella pubblica presente nel certificato collegato alle chiavi e al intestatario.
Quello che sto chiedendo è dove si trovano le specifiche di questo protocollo, tramite il quale si può firmare di fatto anche un dato generico.
beh, lui al dispositivo fornirebbe solo l’hash che ha lunghezza fissa, ma comunque non troverà mai un software già pronto perchè, a mio avviso, non si tratta di firma digitale ai sensi del CAD in quel caso. Niente gli vieta però di sviluppare un software adatto per usare le funzionalità della SMARTCARD.
Aggiungo un piccolo decimale “tecnico” a riguardo: potresti vedere l’implementazione del Digital Signature Service (DSS), o magari metterlo in opera, può esporre servizi REST, basati su OpenAPI, oltre che SOAP.
Inoltre, visto che hai un input in json, potresti usare il formato JAdES adottato di recente, per beneficiare di una maggiore elaborabilità, qui un esempio sempre dal DSS.