Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline MEPPO  
#1 Оставлено : 31 августа 2023 г. 5:25:02(UTC)
MEPPO

Статус: Новичок

Группы: Участники
Зарегистрирован: 25.08.2023(UTC)
Сообщений: 8
Откуда: Кемерово

Сказал(а) «Спасибо»: 1 раз
Здравствуйте, пытаюсь подписать xml файл но не могу подобрать алгоритм. алгоритм ключа приватного ключа CryptoPro Gost PrivateKey (GOST3410DH_2012_256) with parameters: 1.2.643.7.1.1.6.1, пытался взять алгоритмы из Consts но тогда выдает unsupported algorithm где взять алгоритм который поддерживается?

Security.addProvider(new JCP());
Security.addProvider(new RevCheck());
Security.addProvider(new CryptoProvider());
//ИНИЦИАЛИЗАЦИИ Transforms.
org.apache.xml.security.Init.init();
if (!JCPXMLDSigInit.isInitialized()){
JCPXMLDSigInit.init();
}
System.setProperty("org.apache.xml.security.resource.config", "resource/jcp.xml");
String alias = "b8ed83549-75a5-ca35-b3b6-b9c388b0f35";
KeyStore store = KeyStore.getInstance("RutokenStore", "JCP");
store.load(null, null);
char[] password = "12345678".toCharArray();
X509Certificate certificate = (X509Certificate) store.getCertificate(alias);
PrivateKey privateKey = (PrivateKey) store.getKey(alias, password);
System.out.println(privateKey);
// System.out.println(certificate);
// Загрузка XML документа
File file = new File("C:/sigxml/XMLDOC.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(file);
Element root = document.getDocumentElement();
//printNode(root);
Element poop = document.getElementById("foo");
//Загрузка провайдера!
Provider xmlDsigProvider = new XMLDSigRI();
String cons = Consts.CONFIG;
System.out.println(cons);
KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410DH_2012_256");
System.out.println(kg);
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",xmlDsigProvider);
final List<Transform> transformList = new ArrayList<Transform>();
final Transform transformC14N = fac.newTransform(
org.apache.xml.security.transforms.Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS,
(XMLStructure) null);
transformList.add(transformC14N);
Reference ref = fac.newReference("", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null),
transformList, null, null);
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));
KeyInfoFactory kif = fac.getKeyInfoFactory();
X509Data x509d = kif.newX509Data(Collections.singletonList((X509Certificate) certificate));
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));
javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
DOMSignContext signContext = new DOMSignContext(privateKey,document.getDocumentElement());
sig.sign(signContext);
Online Евгений Афанасьев  
#2 Оставлено : 3 сентября 2023 г. 19:03:40(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,963
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Ключ GOST3410DH_2012_256 (ГОСТ 2012 256), а алгоритм хэширования и подписи - http://www.w3.org/2001/04/xmldsig-more#gostr3411 и http://www.w3.org/2001/0...#gostr34102001-gostr3411 (ГОСТ 2001). См. ru.CryptoPro.JCPxml.Consts в JCPxml или в документации, нужны urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256 и urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.