| 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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