Статус: Новичок
Группы: Участники
Зарегистрирован: 20.10.2011(UTC) Сообщений: 4 Откуда: Москва
|
Используем подпись формата xmldsig, на основе примеров из sdk Установлен последний КриптоПро .Net SDK х64, КриптоПро .Net и КриптоПро CSP 3.9 При сборке под 3.5 корректно подписывает и корректно проверяет ЭЦП При сборке проекта под 4-4.5 со ссылками на библиотеки 1.4 корректно подписывает, но на проверке подписи всегда возвращается false, т.е. подпись всегда не валидна. Лицензии куплены и установлены. В приложении подписанный файл, подпись которого не валидируется под 4.5, но валидна под 3.5 Отредактировано пользователем 3 апреля 2015 г. 16:50:32(UTC)
| Причина: Не указана Вложение(я): test_xmldsig3.xml (4kb) загружен 5 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.10.2011(UTC) Сообщений: 4 Откуда: Москва
|
Автор: maxdm Спасибо за наводку. оставлю здесь решение для других. Действительно проблемы в каноникализации, 3.5 и в 4 и выше они отличаются. Решение найдено вот здесь stackoverflowСам класс Код:public class MyXmlDsigC14NTransform: XmlDsigC14NTransform {
static XmlDocument _document;
public static XmlDocument document {
set {
_document = value;
}
}
public MyXmlDsigC14NTransform() {}
public override void LoadInput(Object obj) {
int n;
bool fDefaultNS = true;
XmlElement element = ((XmlDocument) obj).DocumentElement;
if (element.Name.Contains("SignedInfo")) {
XmlNodeList DigestValue = element.GetElementsByTagName("DigestValue", element.NamespaceURI);
string strHash = DigestValue[0].InnerText;
XmlNodeList nodeList = _document.GetElementsByTagName(element.Name);
for (n = 0; n < nodeList.Count; n++) {
XmlNodeList DigestValue2 = ((XmlElement) nodeList[n]).GetElementsByTagName("DigestValue", ((XmlElement) nodeList[n]).NamespaceURI);
string strHash2 = DigestValue2[0].InnerText;
if (strHash == strHash2) break;
}
XmlNode node = nodeList[n];
while (node.ParentNode != null) {
XmlAttributeCollection attrColl = node.ParentNode.Attributes;
if (attrColl != null) {
for (n = 0; n < attrColl.Count; n++) {
XmlAttribute attr = attrColl[n];
if (attr.Prefix == "xmlns") {
element.SetAttribute(attr.Name, attr.Value);
} else if (attr.Name == "xmlns") {
if (fDefaultNS) {
element.SetAttribute(attr.Name, attr.Value);
fDefaultNS = false;
}
}
}
}
node = node.ParentNode;
}
}
base.LoadInput(obj);
}
}
а как его зарегестрировать есть по первой ссылке.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close