К сожалению, XML Signatures comes with MSXML 5.0 only. Дело в том, что XML-DSig на самом деле не считается особенностью MSXML. Лучше всего считать MSXML 5.0 ответвлением - странным братом шага MSXML - вместо части линии. Им было бы лучше называть его чем-то, кроме MSXML, для всех путаниц, которые он вызвал. Для него почти нет документации и no way to distribute it. Даже команда XML в Microsoft говорит «Don't use it».
Но все, что вам не поможет. Реальная проблема заключается в том, что XML Digital Signatures are tricky things. MSXML 5.0 реализовал его только потому, что MS Office полностью контролировал XML; и из-за этого могут получить согласованные результаты. Нет никакой гарантии, что подпись XML, созданная с .NET, совместима с MSXML 5.0. Возможно, у вас могут быть непоследовательные результаты, когда они работают иногда и не работают в других случаях.
Что вам нужно сделать, это написать управляемый код на C++, где вы можете использовать те же функции .NET, которые сгенерировали подпись в первую очередь. Это не родной C++, но он даст вам последовательные результаты. Единственная альтернатива - найти библиотеку, которую вы можете использовать как на .NET, так и на C++, которая может генерировать цифровую подпись.
XMLDSig далеко от оптимального решения для вашей задачи. Даже если вы хотите работать с данными XML, PKCS # 7 будет работать лучше и может быть выполнен с использованием нескольких криптографических библиотек, начиная с самого Windows CryptoAPI. –
Спасибо. Что мне нужно, это руководство по манекенам для криптографии. Я просмотрел множество библиотек и примеров, но я не нашел хорошего «вот что вам нужно знать». – Ian
Вы правы, чтобы не использовать MSXML5 для родного XML-dsig, поскольку DLL поставляется с Office только потому, что у вас возникнет проблема с развертыванием, хотя я не знаю других популярных собственных продуктов xml disg. Возможно, вы можете использовать удаленный вызов? –