sigatron Posted January 14, 2019 Report Share Posted January 14, 2019 Здравствуйте! Пытаюсь подписать 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-* и, если да, то как скоро? Quote Link to comment Share on other sites More sharing options...
LPRO Posted October 1, 2019 Report Share Posted October 1, 2019 Пытался сегодня подписать 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); } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.