Sto provando a digitally sign an XML document utilizzando Java. Ho una implementazione che funziona con alcuni riferimenti che ho trovato che utilizzano varie implementazioni nel pacchetto javax.xml.crypto.dsig
.C'è un modo più semplice per firmare un documento XML in Java?
Tuttavia, la mia attuale implementazione è come many del examples Ho guardato - è piuttosto prolisso e coinvolge utilizzando non meno di 23 diverse classi API dalle java.xml.crypto.dsig
, javax.xml.transform
, e java.security
pacchetti, tra gli altri. Mi sembra di aver inserito il terreno factory factory factory e mi ci sono volute diverse ore per capire cosa stava succedendo.
La mia domanda è, c'è un modo più semplice per farlo? Se ho/file di chiave privata pubblici e voglio aggiungere un <Signature/>
a un documento XML, c'è una biblioteca là fuori che permette di chiamare me qualcosa di simile:
OutputStream signFile(InputStream xmlFile, File privateKey)
... senza tutti la follia XMLSignatureFactory/CanonicalizationMethod/DOMSignContext?
Non sono molto esperto di crittografia e l'API fornita da Java sembra piuttosto scoraggiante per sviluppatori come me che cercano di familiarizzare con la firma digitale. Se tutto ciò è necessario o se al momento non ci sono API più amichevoli, va bene e sono disposto ad accettarlo come risposta. Vorrei solo sapere se sto prendendo inutilmente la strada difficile qui.
Come soluzione alternativa, ho potuto effettuare una chiamata di sistema one-liner e utilizzare http://www.aleksey.com/xmlsec/ di firmare la XML. Non sto postando questa risposta come risposta poiché non rientra nei limiti della domanda (ad esempio "in Java"). –