Алгоритм gostr34102015-gostr34112015-512 | XMLSignature

Добрый день! Пытаюсь извлечь Signature из подписанного документа посредством NCALayer. Выходит ошибка
org.apache.xml.security.signature.XMLSignatureException: The requested algorithm urn:ietf:params:xml:ns:pkigovkz:xmlsec:algorithms:gostr34102015-gostr34112015-512 does not exist. Original Message was: null
Original Exception was java.lang.NullPointerException

в XMLSignature нет алгоритма gostr34102015-gostr34112015-512, что можно сделать?

Удостовертесь, что у вас уставновлены последние версии модулей NCALayer. Ознакомтесь с примерами и уики, ссылки на которые указаны в SDK:
https://github.com/pkigovkz/NCALayerJSExample
https://github.com/pkigovkz/sdkinfo/wiki
https://github.com/pkigovkz/sdkinfo/wiki/XML-Dsig

код на Java, есть ли новый пример? в sdk старый пример, по нему не работает

18

Вы не прошлись по ссылкам?
На вашем скриншотье не видны версии установленных модулей.
Вы используете стандартные модули или пишите свой?

Использую стандартные. Какие модули должны быть? Как раньше нет папки /Java/prerelease_libs. Какие модули закинуть в bundles?

Папки prerelease_libs нет, потому что эти модули уже выпущены в продакшн. Чтобы проверить установлены ли они у вас проверьте столбец “Установленная версия” в Списке модулей NCALayer. Версии должны быть одинаковыми со столбцом “Доступная версия”.

В предыдущих версиях основной функционал подписи был в модуле Common Bundle, но этот модуль больше не будет обновляться и вам нужно будет перейти на модуль Basics. Пример использования модуля Basics есть в ранее указанных ссылках.

Добрый день! Так и не смог решить проблему с отсутствующим алгоритмом. Фронтенд работает с новым модулем, форма авторизации ЭЦП поменялась на новую. Получаю подписанный документ от 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>

Здравствуйте!
Попробуйте код этого примера запустить, подписать и проверить
Simple enveloped-signature via santuario · GitHub

Здравствуйте, а где вы нашли зависимости для pom.xml? В публичном maven repo не нашел

Это библиотеки из SDK НУЦ РК.