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

Уведомление

Icon
Error

9 Страницы«<6789>
Опции
К последнему сообщению К первому непрочитанному
Offline Boris@Serezhkin.com  
#71 Оставлено : 22 августа 2015 г. 18:37:41(UTC)
Boris@Serezhkin.com

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: alex33 Перейти к цитате
Соответственно, валидирование подписи по xsd-схеме дает ожидаемый банан.
Вопрос: Забить?
Или X509Certificate2.SerialNumber нужно каким-то магическим образом конвертиорвать в integer (т.е. в [0-9]+)?

Судя по тому что все работает - забить. Как и все.
Или переводить его в восьмеричную формуDancing
Правда тогда все понимать перестанут....
Offline Cib0rg  
#72 Оставлено : 4 сентября 2015 г. 15:25:17(UTC)
Cib0rg

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

Группы: Участники
Зарегистрирован: 31.08.2015(UTC)
Сообщений: 1
Российская Федерация

Приветствую собравшихся.
Подскажите, пожалуйста, по проблеме:

По рецепту strelok671 скачал, добавил ссылки, изменил класс и скомпилировал. Если подписывать XML без XadES - подписывается корректно. Если же попытаться добавить XadES - то вылетает эксепшн. Опытным путём было выявлено, что его источник - строка 1423 класса XadesSignedXml.cs
В двух словах - в
Код:
object m_containingDocument = SignedXml_m_containingDocument.GetValue(this);

возвращается null, который потом идёт в
Код:
Reference_UpdateHashValue.Invoke(reference2, new object[] { m_containingDocument, refList });

где радостно генерирует NPE. Вопрос: почему null? Т.е. даже тестовый пример "из коробки" не работает. У кого-то ещё такое было? Как справились?
Offline strelok671  
#73 Оставлено : 4 сентября 2015 г. 17:59:35(UTC)
strelok671

Статус: Участник

Группы: Участники
Зарегистрирован: 16.12.2014(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Автор: Cib0rg Перейти к цитате
Приветствую собравшихся.
Подскажите, пожалуйста, по проблеме:

По рецепту strelok671 скачал, добавил ссылки, изменил класс и скомпилировал. Если подписывать XML без XadES - подписывается корректно. Если же попытаться добавить XadES - то вылетает эксепшн. Опытным путём было выявлено, что его источник - строка 1423 класса XadesSignedXml.cs
В двух словах - в
Код:
object m_containingDocument = SignedXml_m_containingDocument.GetValue(this);

возвращается null, который потом идёт в
Код:
Reference_UpdateHashValue.Invoke(reference2, new object[] { m_containingDocument, refList });

где радостно генерирует NPE. Вопрос: почему null? Т.е. даже тестовый пример "из коробки" не работает. У кого-то ещё такое было? Как справились?


Посмотри архив в сообщении
Там примеры использования класса. Обращаем внимание на условную компиляцию. Для xades объявляем
Код:
#define VER_SMEV_3

Offline alex33  
#74 Оставлено : 11 мая 2017 г. 17:25:05(UTC)
alex33

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Кстати...
Никого не смущает, что хеш для TSA в примере считается по пустому буферу?

В аттаче скрин отладки метода HttpTsaClient.ComputeHashValueOfElementList

Или это только у меня такая "красота"? Вроде пример брал из этой же темы...

buf_empty.png (42kb) загружен 29 раз(а).
Offline parsec  
#75 Оставлено : 19 мая 2017 г. 11:09:18(UTC)
parsec

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

Группы: Участники
Зарегистрирован: 19.05.2017(UTC)
Сообщений: 4
Замбия

Уважаемые господа, доброе время суток!

Не нашел подходящего раздела\треда для своего вопроса, поэтому задам его здесь. Вопрос касается реализации алгоритма XAdES-T.

Прошу, подскажите как трактовать стандарт: http://www.etsi.org/deli...60/ts_101903v010401p.pdf

Там (пункт 7.3):
Цитата:
This property uses the implicit mechanism as the time-stamped data object is always the same. For building the input to the digest computation, applications MUST:

1) Take the ds:SignatureValue element and its contents.
2) If the ds:Canonicalization element is present canonicalize it using the indicated algorithm. If not, use the standard canonicalization method specified by XMLDSIG


То есть написано, что берется элемент и его содержимое.

Вопрос: Для вычисления SignatureTimeStamp используется вся нода SignatureValue со значением целиком или только значение этой ноды?

Спасибо!
Offline alex33  
#76 Оставлено : 23 мая 2017 г. 12:43:27(UTC)
alex33

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: parsec Перейти к цитате
Уважаемые господа, доброе время суток!

Вопрос: Для вычисления SignatureTimeStamp используется вся нода SignatureValue со значением целиком или только значение этой ноды?



Ага... чувствую речь идет про рнип/гисгмп=)))) они как раз, относительно недавно включили проверку хеша timestamp'а
Я прав?

Отредактировано пользователем 23 мая 2017 г. 12:44:59(UTC)  | Причина: Не указана

Offline parsec  
#77 Оставлено : 23 мая 2017 г. 14:02:32(UTC)
parsec

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

Группы: Участники
Зарегистрирован: 19.05.2017(UTC)
Сообщений: 4
Замбия

Автор: alex33 Перейти к цитате
Автор: parsec Перейти к цитате
Уважаемые господа, доброе время суток!

Вопрос: Для вычисления SignatureTimeStamp используется вся нода SignatureValue со значением целиком или только значение этой ноды?



Ага... чувствую речь идет про рнип/гисгмп=)))) они как раз, относительно недавно включили проверку хеша timestamp'а
Я прав?


Даже не только про РНиП\ГИС ГМП. Вообще интересует, как блин пилить правильно криптосервис. :)
Offline michurin  
#78 Оставлено : 23 мая 2017 г. 14:28:54(UTC)
michurin

Статус: Участник

Группы: Участники
Зарегистрирован: 23.05.2017(UTC)
Сообщений: 11

Если смотреть реализацию в xades4j то там берется весь узел целиком
https://github.com/luisg...DataGenSigTimeStamp.java

Если смотреть "эталонную" реализацию "DSS - Digital Signature Services" там тоже самое

https://github.com/arhs/...ades/XAdESSignature.java

В примере от Microsoft, который тут обсуждается, тоже берется весь узел.
Offline parsec  
#79 Оставлено : 23 мая 2017 г. 14:47:05(UTC)
parsec

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

Группы: Участники
Зарегистрирован: 19.05.2017(UTC)
Сообщений: 4
Замбия

Автор: michurin Перейти к цитате


Если смотреть "эталонную" реализацию "DSS - Digital Signature Services" там тоже самое

https://github.com/arhs/...ades/XAdESSignature.java



Код:

public Element getSignatureValue() {
	return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_VALUE);
}


Мы говорим об этом?

Константа указывает на нужную ноду, да, но что возвращает метод DSSXMLUtils.getElement();

P.S. Конечно логично предположить что метод с именем getElement() возвращает ноду, а не значение, в противном случае матод бы назывался getElementContext() или getElementValue()

Отредактировано пользователем 23 мая 2017 г. 14:49:06(UTC)  | Причина: Не указана

Offline parsec  
#80 Оставлено : 23 мая 2017 г. 14:55:10(UTC)
parsec

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

Группы: Участники
Зарегистрирован: 19.05.2017(UTC)
Сообщений: 4
Замбия

Ну да, все встает на свои места.

Смотрим эталонную реализацию DSS, метод getElement():

Код:

/**
* Return the Element corresponding to the XPath query.
*
* @param xmlNode     The node where the search should be performed.
* @param xPathString XPath query string
* @return
*/
public static Element getElement(final Node xmlNode, final String xPathString) {

return (Element) getNode(xmlNode, xPathString);
}


Метод getNode():

Код:

/**
* Return the Node corresponding to the XPath query.
*
* @param xmlNode     The node where the search should be performed.
* @param xPathString XPath query string
* @return
*/
public static Node getNode(final Node xmlNode, final String xPathString) {

	final NodeList list = getNodeList(xmlNode, xPathString);
	if (list.getLength() > 1) {
		throw new DSSException("More than one result for XPath: " + xPathString);
	}
	return list.item(0);
}



Очевидно, что возвращается нода, а не значение.

Для получения значения есть, собственно, отдельный метод:

Код:

/**
* Returns the String value of the corresponding to the XPath query.
*
* @param xmlNode     The node where the search should be performed.
* @param xPathString XPath query string
* @return string value of the XPath query
* @throws XPathExpressionException
*/
public static String getValue(final Node xmlNode, final String xPathString) {

	try {

		final XPathExpression xPathExpression = createXPathExpression(xPathString);
		final String string = (String) xPathExpression.evaluate(xmlNode, XPathConstants.STRING);
		return string.trim();
	} catch (XPathExpressionException e) {

		throw new DSSException(e);
	}
}


Большое спасибо, господа!

Отредактировано пользователем 24 мая 2017 г. 16:18:42(UTC)  | Причина: Исправление ошибки

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
9 Страницы«<6789>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.