xmldsig validar online implementar firmar firma digestvalue con codigo certificado java xml jaxb pki

java - implementar - validar firma digital xml online



Uso de JAXB con firmas, cifrado y codificación (0)

Recientemente nos han encomendado la tarea de generar una especificación de comunicación XML para nuestros productos. Algunos de mis compañeros de trabajo tienen opiniones altas de JAXB para organizar y desasociar documentos XML. He pasado tiempo jugando con eso y entiendo de dónde vienen. Hace la vida simple para documentos XML simples.

Ahora para llevarlo a un nivel superior. Una de las cosas que me gustaría ver en nuestro modelo de comunicación es la validación de la firma "incorporada" para las personas que la utilizan después de mí. Uno de los problemas con los que me estoy enfrentando es que para validar una firma, necesito tratar el XML correspondiente como bytes. Tomemos este ejemplo ...

<topLevel> <sensitiveData encoding="UTF8"> <creditCard> <number>1234-1234-1234-1234</number> <expDate>Oct 2020</expDate> </creditCard> </sensitiveData> <signatureOfSensitiveData algorithm="SHA1WithRSA">VGhpc0lzQVNpZ25hdHVyZQ==</signatureOfSensitiveData> </topLevel>

Editar: en realidad no estoy pasando datos de la tarjeta de crédito. Solo un ejemplo aquí.

Lo que sería genial es si pudiera obtener la representación byte[] (determinada por la codificación) de todo dentro de la etiqueta "sensitiveData". Ni siquiera me importaría tener que volver a llamar "unmarshall" en ese byte[] .

Esto también nos abre otras puertas. Podríamos introducir atributos de "compresión" y "encriptación" en los elementos. Si pudiésemos tratarlos como un byte[] , podríamos inflarlos y descifrarlos y luego pasarlos para que no se vuelvan a organizar.

Nota al margen: creo que esto funciona si base64 codifica el XML y luego lo incluye en un elemento. Pero eso nos obliga a basar64 incluso en documentos simples e introducir algo de inflamación innecesaria en nuestros mensajes.

Alguna idea para soluciones a esto? Mi esperanza es que me estoy perdiendo algo básico en JAXB y será muy fácil después de que lo reciba.

¡Gracias!