Статус: Активный участник
Группы: Участники
Зарегистрирован: 26.08.2010(UTC) Сообщений: 259 Откуда: Moscow
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 11 раз в 10 постах
|
Автор: alex33 Соответственно, валидирование подписи по xsd-схеме дает ожидаемый банан. Вопрос: Забить? Или X509Certificate2.SerialNumber нужно каким-то магическим образом конвертиорвать в integer (т.е. в [0-9]+)? Судя по тому что все работает - забить. Как и все. Или переводить его в восьмеричную форму Правда тогда все понимать перестанут....
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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? Т.е. даже тестовый пример "из коробки" не работает. У кого-то ещё такое было? Как справились?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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 объявляем
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.10.2012(UTC) Сообщений: 11 Откуда: msc
Сказал(а) «Спасибо»: 1 раз
|
Кстати... Никого не смущает, что хеш для TSA в примере считается по пустому буферу? В аттаче скрин отладки метода HttpTsaClient.ComputeHashValueOfElementList Или это только у меня такая "красота"? Вроде пример брал из этой же темы... buf_empty.png (42kb) загружен 29 раз(а).
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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 со значением целиком или только значение этой ноды? Спасибо!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 15.10.2012(UTC) Сообщений: 11 Откуда: msc
Сказал(а) «Спасибо»: 1 раз
|
Автор: parsec Уважаемые господа, доброе время суток!
Вопрос: Для вычисления SignatureTimeStamp используется вся нода SignatureValue со значением целиком или только значение этой ноды?
Ага... чувствую речь идет про рнип/гисгмп=)))) они как раз, относительно недавно включили проверку хеша timestamp'а Я прав? Отредактировано пользователем 23 мая 2017 г. 12:44:59(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.05.2017(UTC) Сообщений: 4
|
Автор: alex33 Автор: parsec Уважаемые господа, доброе время суток!
Вопрос: Для вычисления SignatureTimeStamp используется вся нода SignatureValue со значением целиком или только значение этой ноды?
Ага... чувствую речь идет про рнип/гисгмп=)))) они как раз, относительно недавно включили проверку хеша timestamp'а Я прав? Даже не только про РНиП\ГИС ГМП. Вообще интересует, как блин пилить правильно криптосервис. :)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.05.2017(UTC) Сообщений: 11
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.05.2017(UTC) Сообщений: 4
|
Автор: michurin Код:
public Element getSignatureValue() {
return DSSXMLUtils.getElement(signatureElement, xPathQueryHolder.XPATH_SIGNATURE_VALUE);
}
Мы говорим об этом? Константа указывает на нужную ноду, да, но что возвращает метод DSSXMLUtils.getElement(); P.S. Конечно логично предположить что метод с именем getElement() возвращает ноду, а не значение, в противном случае матод бы назывался getElementContext() или getElementValue()Отредактировано пользователем 23 мая 2017 г. 14:49:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Исправление ошибки
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close