Статус: Участник
Группы: Участники
Зарегистрирован: 12.11.2018(UTC) Сообщений: 23 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Добрый день! Подскажите, какие изменение нужно произвести в коде (или в структуре SOAP сообщения) для перехода на новый ГОСТ Р 34.10-2012. Работаю с примером WSS4J_SignVerifySOAP из пакета поставки JCP. Код:
/**
* Copyright 2004-2012 Crypto-Pro. All rights reserved.
* Этот файл содержит информацию, являющуюся
* собственностью компании Крипто-Про.
*
* Любая часть этого файла не может быть скопирована,
* исправлена, переведена на другие языки,
* локализована или модифицирована любым способом,
* откомпилирована, передана по сети с или на
* любую компьютерную систему без предварительного
* заключения соглашения с компанией Крипто-Про.
*/
package wss4j.wss4j1_6_3.tests;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import org.w3c.dom.Document;
import wss4j.manager.SignatureManager;
import wss4j.utility.SpecUtility;
import wss4j.wss4j1_6_3.manager.SOAPXMLSignatureManager_1_6_3;
/**
* Class for signing & verifying of SOAP XML document.
*/
public class WSS4J_SignVerifySOAP {
/**
* @param args
* @throws ClassNotFoundException
* @throws CertificateException
* @throws NoSuchAlgorithmException
* @throws KeyStoreException
* @throws IOException
* @throws FileNotFoundException
* @throws UnrecoverableKeyException
*/
public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException,
CertificateException, ClassNotFoundException, UnrecoverableKeyException,
FileNotFoundException, IOException {
// Initialize JCP
SpecUtility.initJCP();
System.out.println("###### Test WSS4J_SignVerifySOAP 1.6.3 is begun ######");
// Load key store
SignatureManager manager =
new SOAPXMLSignatureManager_1_6_3(SpecUtility.DEFAULT_CRYPTO_PROPERTIES,
SpecUtility.DEFAULT_ALIAS, SpecUtility.DEFAULT_PASSWORD, SpecUtility.DEFAULT_PASSWORD);
// Sign XML SOAP document
Document signedDoc = manager.signDoc(manager.getMessage());
String outputString = org.apache.ws.security.util.XMLUtils.PrettyDocumentToString(signedDoc);
System.out.println("Signed document: ");
System.out.println(outputString);
// Verify signature in XML SOAP document
boolean printCert = true;
boolean result = manager.verifyDoc(signedDoc, printCert);
System.out.println("\nVerified: " + result);
System.out.println("###### Test WSS4J_SignVerifySOAP is finished ######");
}
}
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.11.2018(UTC) Сообщений: 23 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Достаточно ли поменять алгоритмы подписи и хэширования? Код:
// Reference ref = fac.newReference("#body", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null));
Reference ref = fac.newReference("#body", fac.newDigestMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411", null));
// Make link to signing element
// SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
// (C14NMethodParameterSpec) null),
// fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", null),
// Collections.singletonList(ref));
SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
(C14NMethodParameterSpec) null),
fac.newSignatureMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411", null),
Collections.singletonList(ref));
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Да, и JCP 2.0 с поддержкой ГОСТ 2012. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.11.2018(UTC) Сообщений: 23 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Здравствуйте. Да, и JCP 2.0 с поддержкой ГОСТ 2012. Использую JCP 2.0, ключ GOST R 34.10-2012 DH 512 bits. Произвёл изменения в примере в двух места (на скриншоте выше), получаю ошибку "java.security.InvalidKeyException: Недопустимый тип ключа" Может надо где-то явно задать алгоритмы хэширования и подписи помимо нэймспейсов?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Приведите, какие алгоритмы передаете, и какая версия JCP (в формате x.x.xxxxx). Отредактировано пользователем 21 ноября 2018 г. 13:24:38(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.11.2018(UTC) Сообщений: 23 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Приведите, какие алгоритмы передаете, и какая версия JCP (в формате x.x.xxxxx). jcp-2.0.39014 Алгоритм хэширования изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" Алгоритм подписи изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Автор: ozhdanov ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) jcp-2.0.39014 Алгоритм хэширования изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" Алгоритм подписи изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"
1. Алгоритмы остались прежние - gostr3411 и gostr34102001-gostr3411 (старый ГОСТ), новые есть в классе ru.CryptoPro.JCPxml.Consts и в руководстве программиста тоже: Код:
/**
* алгоритм подписи, ГОСТ Р 34.10-2012 (256)
*/
public static final String URN_GOST_SIGN_2012_256 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
/**
* алгоритм хеширования, ГОСТ Р 34.11-2012 (256)
*/
public static final String URN_GOST_DIGEST_2012_256 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
/**
* алгоритм подписи, ГОСТ Р 34.10-2012 (512)
*/
public static final String URN_GOST_SIGN_2012_512 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512";
/**
* алгоритм хеширования, ГОСТ Р 34.11-2012 (512)
*/
public static final String URN_GOST_DIGEST_2012_512 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512";
А Ключ подается, видимо, на новом ГОСТе. Выбирать алгоритм можно по алгоритму закрытого ключа (privateKey.getAlgorithm() - в зависимости от него выбирать константу). 2. Рекомендуем также обновить версию JCP. Отредактировано пользователем 21 ноября 2018 г. 14:32:07(UTC)
| Причина: Не указана |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.11.2018(UTC) Сообщений: 23 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Автор: Евгений Афанасьев ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Автор: ozhdanov ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) jcp-2.0.39014 Алгоритм хэширования изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" Алгоритм подписи изменил с "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" на "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"
1. Алгоритмы остались прежние - gostr3411 и gostr34102001-gostr3411 (старый ГОСТ), новые есть в классе ru.CryptoPro.JCPxml.Consts и в руководстве программиста тоже: Код:
/**
* алгоритм подписи, ГОСТ Р 34.10-2012 (256)
*/
public static final String URN_GOST_SIGN_2012_256 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
/**
* алгоритм хеширования, ГОСТ Р 34.11-2012 (256)
*/
public static final String URN_GOST_DIGEST_2012_256 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
/**
* алгоритм подписи, ГОСТ Р 34.10-2012 (512)
*/
public static final String URN_GOST_SIGN_2012_512 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512";
/**
* алгоритм хеширования, ГОСТ Р 34.11-2012 (512)
*/
public static final String URN_GOST_DIGEST_2012_512 =
"urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512";
А Ключ подается, видимо, на новом ГОСТе. Выбирать алгоритм можно по алгоритму закрытого ключа (privateKey.getAlgorithm() - в зависимости от него выбирать константу). 2. Рекомендуем также обновить версию JCP. Спасибо, теперь всё работает
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close