Как правильно канонизировать xml для проверки ЭЦП?
Подписываю
String xml="...." //soap сообщение
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
Document doc = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
WSSConfig.init();
Crypto crypto = CryptoFactory.getInstance("server.properties");
WSSecSignature builder = new WSSecSignature();
builder.setUserInfo("alias1", "123456");
builder.setKeyIdentifierType(WSConstants.ISSUER_SERIAL);
builder.setSignatureAlgorithm(signatureDigestAlgorithm);
builder.setDigestAlgo(signatureAlgorithm);
WSSecHeader secHeader = new WSSecHeader();
secHeader.insertSecurityHeader(doc);
Document signedDoc = builder.build(doc, crypto, secHeader);
Проверяю
System.out.println(secEngine.processSecurityHeader(signedDoc, null, null, crypto));
- выдает true, а если конвертнуть в String а потом опять в Document - то получаю: The signature or decryption was invalid
Есть подозрение что либо я конвертирую не правильно и что-то теряется, либо надо канонизировать перед проверкой. Но как?