Estoy tratando de digitally sign an XML document usando Java. Tengo una implementación que funciona con algunas referencias que he encontrado que usan varias implementaciones en el paquete javax.xml.crypto.dsig
.¿Existe alguna manera más fácil de firmar un documento XML en Java?
Sin embargo, mi implementación actual es como many del examples He mirado - que es bastante detallado e implica el uso de no menos de 23 clases diferentes de las API java.xml.crypto.dsig
, javax.xml.transform
y java.security
paquetes, entre otros. Se siente como si hubiera ingresado al terreno factory factory factory, y me tomó varias horas solo para descubrir qué estaba pasando.
Mi pregunta es, ¿hay una manera más fácil de hacer esto? Si Tengo archivos de claves públicas/privadas y quiero añadir un <Signature/>
a un documento XML, hay una biblioteca por ahí que simplemente me permite llamar algo así como:
OutputStream signFile(InputStream xmlFile, File privateKey)
... sin todos la locura de XMLSignatureFactory/CanonicalizationMethod/DOMSignContext?
No soy muy versado en criptografía, y la API proporcionada por Java parece bastante desalentadora para los desarrolladores como yo tratando de familiarizarnos con la firma digital. Si todo esto es necesario o no existe actualmente una API más amigable, está bien y estoy dispuesto a aceptar eso como una respuesta. Solo me gustaría saber si estoy tomando innecesariamente el camino difícil aquí.
Como una solución alternativa, que era capaz de hacer una llamada de sistema de una sola línea y utilizar http://www.aleksey.com/xmlsec/ para firmar el XML. No estoy publicando esto como una respuesta, ya que no está dentro de los límites de la pregunta (es decir, "en Java"). –