Добрый день! Так и не смог решить проблему с отсутствующим алгоритмом. Фронтенд работает с новым модулем, форма авторизации ЭЦП поменялась на новую. Получаю подписанный документ от NCALayer. На Java код такой:
public XMLSignature extractSignatureFromSignedDocument(String xmlSignedDocument) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
Document doc = documentBuilder.parse(new ByteArrayInputStream(xmlSignedDocument.getBytes("UTF-8")));
Element sigElement = null;
Element rootEl = (Element) doc.getFirstChild();
NodeList list = rootEl.getElementsByTagName("ds:Signature");
int length = list.getLength();
for (int i = 0; i < length; i++) {
Node sigNode = list.item(length - 1);
sigElement = (Element) sigNode;
if (sigElement == null) {
LOGGER.error("Bad signature: Element 'ds:Reference' is not found in XML document");
}
XMLSignature signature = new XMLSignature(sigElement, "");
return signature;
}
} catch (Exception e) {
LOGGER.debug("Extracting signature from document error", e);
}
return null;
}
Ошибка: org.apache.xml.security.signature.XMLSignatureException: The requested algorithm urn:ietf:params:xml:ns:pkigovkz:xmlsec:algorithms:gostr34102015-gostr34112015-512 does not exist.
Зависимости maven:
<dependency>
<groupId>kz.gov.pki.kalkan</groupId>
<artifactId>kalkancrypt</artifactId>
<version>0.7.2</version>
</dependency>
<dependency>
<groupId>kz.gov.pki.kalkan</groupId>
<artifactId>kalkancrypt_xmldsig</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>org.apache.santuario</groupId>
<artifactId>xmlsec</artifactId>
<version>2.1.7</version>
</dependency>