Здравствуйте.
У нас возникла проблема, связанная с подписанием и проверкой xml-элемента.
Как правильно подписывать и проверять xml-элемент?
1. Из последнего комплекта разработчика с помощью тестовой страницы NcaLayer, подписываю элемент person, подпись ложу в элемент root.
2. Получаю подписанный xml
3. Подпись успешно проверяется с помощью NcaLayer. Но подпись не удается проверить, используя библиотеки libxmlsec из комплекта разработчика (примеры на языке C). Функция xmlSecDSigCtxVerify возвращает результат (-1) Error: signature verify. А точнее происходит ошибка:
File: xpath.c
Line: 273
Func: xmlSecXPathDataExecute
ErrorSubject: xmlXPtrEval
Reason: 5
Msg: expr=xpointer(id('personId'))
Т.е. не удается найти элемент person по значению id используя xpath-выражение.
Чтобы проверка заработала, надо в подписываемом xml перед тэгом id добавить префикс xml, т.е. xml:id.
В этом случае проверка подписи с помощью библиотек на языке C проходит. Но NcaLayer не может выполнить проверку подписи, происходит ошибка SIGNATURE_VALIDATION_ERROR.
- Подскажите пожалуйста, что сейчас работает правильно, NCALayer или библиотека libxmlsec?
- Будет ли в ближайшее время устранено несоответствие в работе этих компонент?
- Является ли документ, подписанный подобным образом, юридически значимым, если проверка подписи не проходит?