Я использую xades4j, чтобы спеть xml, все работает отлично.
Но в полученном XML сертификат X509 выглядит примерно так:
<ds:X509Certificate> MIIDUjCCAjqgAwIBAgIIYFxFM0GPYwowDQYJKoZIhvcNAQELBQAwKTEMMAoGA1UEAwwDRkVMMQww
CgYDVQQKDANTQVQxCzAJBgNVBAYTAkdUMB4XDTE4MTIxMDE1MTQyOFoXDTIwMTIwOTE1MTQyOFow
KDERMA8GA1UEAwwIODI1NzYyNTQxEzARBgNVBAoMCnNhdC5nb2IuZ3QwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQC6QTYY7yGtmikBaV6pNVee6WzNBToIr3jlFikbvZI4JD+4p0LJqten
</ds:X509Certificate>
Как мне удалить "& # 13;" от этого?
Вот метод, который выполняет подпись:
@Override
public DOMSource generarFirmaDigitalParaXML(Document xml, KeyingDataProvider keyingDataProvider, String nombreArchivoXmlOriginal) {
final Element rootElement = xml.getDocumentElement();
Element elementoAFirmar = null;
NodeList nodeList = xml.getElementsByTagName("dte:DatosEmision");
DOMSource source = null;
int lenght = nodeList.getLength();
for (int i = 0; i < lenght; i++) {
Node nNode = nodeList.item(i);
elementoAFirmar = (Element) nNode;
}
XadesBesSigningProfile profile = new XadesBesSigningProfile(keyingDataProvider);
try {
XadesSigner signer = profile.newSigner();
String atributoUtilizado = seleccionarAttributoComoId(elementoAFirmar, "ID");
if (atributoUtilizado != null) {
DataObjectDesc obj = new DataObjectReference("#" + elementoAFirmar.getAttribute(atributoUtilizado))
.withTransform(new EnvelopedSignatureTransform());
SignedDataObjects dataObjs = new SignedDataObjects().withSignedDataObject(obj);
signer.sign(dataObjs, rootElement);
xml.setXmlStandalone(true);
source = new DOMSource(xml);
} else {
throw new Exception("Atributo no encontrado en el XML");
}
} catch (Exception e) {
bitacora.log(Level.SEVERE, LOGGER, bitacora.obtenerStackTrace(e), true);
}
return source;
}