Перейти к контенту

Подпись XML по алгоритму ГОСТ Р 34.10-2012


Рекомендуемые сообщения

Здравствуйте!

Пытаюсь подписать XML документ с использованием ЭЦП с "новым" алгоритмом ГОСТ Р 34.10-2012. Использую пример, указанный в руководстве программиста: "XmlDSig - Пример создания подписи в Java".

Получаю ошибку 
 

Caused by: javax.xml.crypto.dsig.XMLSignatureException: java.security.InvalidKeyException: No installed provider supports this key: ru.infotecs.crypto.gost3410.GostR341012v256PrivateKey
    at org.apache.jcp.xml.dsig.internal.dom.l.sign(Unknown Source) ~[jcrypto-xmldsig-2.7.2-R17.jar:1.5.6]
    ... 20 more
Caused by: java.security.InvalidKeyException: No installed provider supports this key: ru.infotecs.crypto.gost3410.GostR341012v256PrivateKey
    at java.security.Signature$Delegate.chooseProvider(Signature.java:1139) ~[?:1.8.0_152]
    at java.security.Signature$Delegate.engineInitSign(Signature.java:1180) ~[?:1.8.0_152]
    at java.security.Signature.initSign(Signature.java:531) ~[?:1.8.0_152]
    at org.apache.jcp.xml.dsig.internal.dom.h.sign(Unknown Source) ~[jcrypto-xmldsig-2.7.2-R17.jar:1.5.6]
    at org.apache.jcp.xml.dsig.internal.dom.l.sign(Unknown Source) ~[jcrypto-xmldsig-2.7.2-R17.jar:1.5.6]
    ... 20 more

Насколько понимаю, проблема в том, что в ViPNetXMLDSigProvider никак не реализован используемый алгоритм. Констант новых нет, внутри тоже все без изменений.
Версия JCrypto SDK: 2.7.2-R17

Вопрос: сейчас существует какой-либо способ подписания XML через XmlDsig с использованием нового алгоритма? Если нет - планируется ли обновить библиотеку jcrypto-xmldsig-* и, если да, то как скоро?

Ссылка на комментарий
Поделиться на других сайтах

  • 8 месяцев спустя...

Пытался сегодня подписать XML с помощью последнего JCrypo, ничего не выходило. заглянул в недра библиотек, оказалось, что умеет подписывать только по 34.10 2001, но не 34.10 2012

public KeyValue newKeyValue(PublicKey publicKey) throws KeyException {
        String var2 = publicKey.getAlgorithm();
        return (KeyValue)("GOST3410-2001".equals(var2) ? new f(publicKey) : this.a.newKeyValue(publicKey));
    }

Если не 34.10 2001 то перенаправляет на родительский стандартный явовский KeyInfoFactory, метод:
 

    public KeyValue newKeyValue(PublicKey key) throws KeyException {
        String algorithm = key.getAlgorithm();
        if (algorithm.equals("DSA")) {
            return new DSA(key);
        } else if (algorithm.equals("RSA")) {
            return new RSA(key);
        } else if (algorithm.equals("EC")) {
            return new EC(key);
        } else {
            throw new KeyException("unsupported key algorithm: " + algorithm);
        }
    }

 

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...

Важная информация

Продолжая пользоваться сайтом вы принимаете Условия использования.