我正在使用Microsoft的AD RMS SDK来执行文档加密和用户权限撤销。
要执行撤销,我需要使用方法DRMSetRevocationPoint。我需要传入我用于签署XML撤销列表的公钥(列表已经创建并签名)。参数是一个PWSTR,所以我尝试传递我在XML中看到的公钥的值,但我认为它是不正确的(从Office调用列表时收到错误)。我所追求的是将密钥传递给此方法的正确方法。我发现在SDK中的(类似)方法的文档中,这个参数以下列方式记录:
DRMGetRevocationPoint中的wszPublicKey:
DRMSetUsagePolicy中的指向以null结尾的Unicode字符串的指针,该字符串接收可选的公钥以标识其外部的吊销列表 内容的信任链。此缓冲区的大小由 puPublicKeyLength参数。
wszPublicKey:
*指向以null结尾的Unicode字符串的指针,该字符串包含用于签署所需应用程序摘要的公钥或 禁止行使权利。这个字符串必须是格式良好的 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>
答案 0 :(得分:0)
您不显示任何代码,但PWSTR是wchar_t指针,在Windows上是Unicode(UTF-16)字符串(wchar_t字符)。要使用字符串文字执行此操作,您需要在字符串前加L
,即L"Hello world"
,但如果您在代码中执行此操作,则需要std::wstring
之类的内容并使用其c_str()
成员获取指针。