Я использую Microsoft RMS SDK для шифрования документов и отзыва прав пользователей.
Для выполнения отзыва мне нужно использовать метод DRMSetRevocationPoint . Мне нужно передать открытый ключ, который я использовал при подписании списка отзыва XML (список был создан и подписан). Аргументом является PWSTR, поэтому я попытался передать значение открытого ключа, которое я вижу в XML, но я думаю, что это неверно (получая ошибку при вызове списка из Office). То, что я ищу, - это правильный способ передать ключ к этому методу. Я обнаружил, что в документации для (похожих) методов в SDK этот аргумент документируется следующими способами:
wszPublicKey в DRMGetRevocationPoint:
Указатель на строку Unicode с нулевым символом в конце, которая получает необязательный открытый ключ для идентификации списка отзыва за пределами
контентная цепочка доверия. Размер этого буфера определяется
Параметр puPublicKeyLength.
wszPublicKey в DRMSetUsagePolicy:
* Указатель на завершающуюся нулем строку Юникода, которая содержит открытый ключ, используемый для подписи дайджеста приложения, необходимого для или
запрещено пользоваться правами. Эта строка должна быть правильно сформирована
Узел XrML. Этот параметр является обязательным, если eUsagePolicyType содержит
DRM_USAGEPOLICY_TYPE_BYPUBLICKEY. Это игнорируется для всех остальных
Значения eUsagePolicyType. *
Я смотрю документацию этого поля об этих методах, так как у них есть что-то еще. То, что я ищу, - это правильный способ взять ключ, который у меня есть, и вставить его в метод - любой совет был бы полезен. Открытый ключ из подписанного списка отзыва выглядит следующим образом:
<PUBLICKEY>
<ALGORITHM>RSA</ALGORITHM>
<PARAMETER name="public-exponent">
<VALUE encoding="integer32">65537</VALUE>
</PARAMETER>
<PARAMETER name="modulus">
<VALUE encoding="base64" size="1024">8Rk8Gx2bG6ML5y/RDjyHpFwhU0g/JYNOpewEsAMw+SndTaWCAPRDZr+NVzOorrBcycVenJd9XupQndStvDN0dID+nVAL8ZwCaFtzcW74g9YRDlHWnld1SOo7VysXKC3mkLvl64CPQMzM1MlmLZ3J9vkCpiOYV/8Xu0lAcpbRdLg=</VALUE>
</PARAMETER>
</PUBLICKEY>