0

我正在使用 Microsoft 的 AD RMS SDK 来执行文档加密和撤销用户权限。

要执行吊销,我需要使用DRMSetRevocationPoint方法。我需要传入我在签署 XML 撤销列表时使用的公钥(该列表已创建并签名)。该参数是 PWSTR,因此我尝试传递我在 XML 中看到的公钥的值,但我认为它不正确(从 Office 调用列表时收到错误)。我所追求的是将密钥传递给此方法的正确方法。我发现在 SDK 中(类似)方法的文档中,此参数以下列方式记录:

DRMGetRevocationPoint 中的 wszPublicKey:

指向以 null 结尾的 Unicode 字符串的指针,该字符串接收可选的公钥以标识内容信任链之外的撤销列表。此缓冲区的大小由 puPublicKeyLength 参数指定。

DRMSetUsagePolicy 中的 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>
4

1 回答 1

0

您没有显示任何代码,但 PWSTR 是 wchar_t 指针,在 Windows 上是 Unicode (UTF-16) 字符串(wchar_t 字符)。要使用字符串文字执行此操作,您需要L在字符串之前放置一个 ie L"Hello world",但如果您在代码中执行此操作,您需要类似 a 的内容std::wstring并使用它的c_str()成员来获取指针。

于 2012-04-19T17:38:27.300 回答