Jump to content

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


sigatron

Recommended Posts

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

Пытаюсь подписать 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-* и, если да, то как скоро?

Link to comment
Share on other sites

  • 8 months later...

Пытался сегодня подписать 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);
        }
    }

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.