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文字列の前に an を配置する必要があります。つまりL"Hello world"、コードでこれを行う場合は、 a のようなものが必要でstd::wstringあり、そのc_str()メンバーを使用してポインターを取得します。

于 2012-04-19T17:38:27.300 に答える