Как проверить цифровую подпись XML на родном C ++ без MSXML 5? - PullRequest
2 голосов
/ 09 сентября 2010

Я рассматриваю возможность использования XML dsig для базового лицензирования приложений.Приложение имеет собственный код Windows (без .net).Я могу легко использовать .net для создания dsig в ​​автономном режиме, но затем я хочу проверить это на нативном c ++.Из того, что я нашел до сих пор, MSXML V5 справится с этой задачей, но он не должен использоваться, а V6 убирает поддержку dsigs.

Так как же я могу легко проверить XML-файл, созданный с помощью кода .net на нативном языке?C ++?

1 Ответ

2 голосов
/ 08 августа 2011

К сожалению, XML-подписи поставляется только с MSXML 5.0 .Дело в том, что XML-DSig на самом деле не считается функцией MSXML.Лучше всего считать MSXML 5.0 ответвлением - странным сводным братом MSXML - вместо части линии.Им было бы лучше назвать его чем-то, кроме MSXML, несмотря на всю путаницу, которую он вызвал.Для него почти нет документации и нет способа ее распространения .Даже команда XML в Microsoft говорит: « Не используйте это ».

Но все это вам не поможет.Реальная проблема заключается в том, что Цифровые подписи XML - это сложные вещи .MSXML 5.0 реализовал его только потому, что MS Office полностью контролировал XML;и из-за этого мог получить последовательные результаты.Нет гарантии, что подпись XML, созданная в .NET, совместима с MSXML 5.0.У вас могут даже быть противоречивые результаты, где это иногда работает, а иногда не работает.

Вам нужно написать управляемый код C ++, где вы можете использовать те же функции .NET, которые генерировалиподпись в первую очередь.Это не нативный C ++, но он даст вам согласованные результаты.Единственная другая альтернатива - это найти библиотеку, которую можно использовать как в .NET, так и в C ++, которая может генерировать цифровую подпись.

...