DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS コールバック関数 (dispmprt.h)

DxgkDdiOPMSetSigningKeyAndSequenceNumbers 関数は、指定された保護された出力オブジェクトの署名キーと 2 つのシーケンス番号を設定します。

構文

DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS DxgkddiOpmSetSigningKeyAndSequenceNumbers;

NTSTATUS DxgkddiOpmSetSigningKeyAndSequenceNumbers(
  [in] PVOID MiniportDeviceContext,
  [in] HANDLE ProtectedOutputHandle,
  [in] const DXGKMDT_OPM_ENCRYPTED_PARAMETERS *EncryptedParameters
)
{...}

パラメーター

[in] MiniportDeviceContext

ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 以前は、ディスプレイ ミニポート ドライバーの DxgkDdiAddDevice 関数は、DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。

[in] ProtectedOutputHandle

保護された出力オブジェクトへのハンドル。 DxgkDdiOPMCreateProtectedOutput 関数は、保護された出力オブジェクトを作成し、そのハンドルを オブジェクトに返します。

[in] EncryptedParameters

256 バイト配列を含む DXGKMDT_OPM_ENCRYPTED_PARAMETERS 構造体へのポインター。 配列には、適切な証明書の公開キーで暗号化された 40 ~ 256 バイトのデータが含まれています。 公開キーの詳細については、「Output Protection Manager のサポート」から Output Content Protection ドキュメントをダウンロードしてください。 保護された出力に OPM セマンティクスがある場合、データはディスプレイ ミニポート ドライバーの OPM 証明書の公開キーで暗号化されます。 保護された出力に認定された出力保護プロトコル (COPP) セマンティクスがある場合、データはディスプレイ ミニポート ドライバーの COPP 証明書の公開キーで暗号化されます。

ディスプレイ ミニポート ドライバーが配列内のデータの暗号化を解除するために使用するアルゴリズムは、保護された出力のセマンティクスによって異なります。 OPM セマンティクスを使用して保護された出力では、RSAES-OAEP 暗号化スキームを使用してデータの暗号化を解除します。 RSAES-OAEP の詳細については、 RSA 研究所 の Web サイトを参照してください。 COPP セマンティクスを使用して保護された出力では、標準の RSA 暗号化アルゴリズムを使用して暗号化されたデータの暗号化を解除します。

ディスプレイ ミニポート ドライバーがデータの暗号化を解除した後、データの最初の 40 バイトのみが現在役立ちます。 復号化されたデータの最初の 16 バイトには、ProtectedOutputHandle パラメーターのハンドルが渡されたときに表示ミニポート ドライバーの DxgkDdiOPMGetRandomNumber 関数が返す乱数が含まれます。 次の 16 バイトには、128 ビットの AES 署名キーが含まれます。 次の 4 バイトには、 DxgkDdiOPMGetInformation または DxgkDdiOPMGetCOPPCompatibleInformation によって使用されるシーケンス番号が含まれます。 最後の 4 バイトには、 DxgkDdiOPMConfigureProtectedOutput によって使用されるシーケンス番号が含まれます。 復号化されたデータの残りの部分は、存在する場合は無視する必要があります。

戻り値

DxgkDdiOPMSetSigningKeyAndSequenceNumbers は、関数が署名キーと 2 つのシーケンス番号を正常に設定した場合、 STATUS_SUCCESS を返します。 それ以外の場合は、次のいずれかの理由で STATUS_OPM_INVALID_ENCRYPTED_PARAMETERS が返されることがあります。

  • 保護された出力に OPM セマンティクスがある場合、ディスプレイ ミニポート ドライバーが復号化したデータは RSAES-OAEP エンコード アルゴリズムでエンコードされませんでした。 RSAES-OAEP の詳細については、RSA 研究所 Web サイトの PKCS #1 v2.1: RSA Cryptography Standard のセクション 7.1.2 を参照してください。
  • データは、適切な公開キーを使用して呼び出し元によって暗号化されませんでした。 出力に OPM セマンティクスがある場合、呼び出し元は、ディスプレイ ミニポート ドライバーの OPM 証明書の公開キーを使用してデータを暗号化する必要があります。 出力に COPP セマンティクスがある場合、呼び出し元は、ディスプレイ ミニポート ドライバーの COPP 証明書の公開キーを使用してデータを暗号化する必要があります。
  • 呼び出し元は、少なくとも 40 バイトのデータを暗号化しませんでした。
  • ディスプレイ ミニポート ドライバーで復号化されたデータ内の 16 バイトの乱数が、 DxgkDdiOPMGetRandomNumber 関数が返した 16 バイトの乱数と一致しませんでした。

この関数は、 Ntstatus.h で定義されている他のエラー コードも返す場合があります。

注釈

署名キーは、 DxgkDdiOPMConfigureProtectedOutput 関数と DxgkDdiOPMGetInformation 関数に渡されるデータが、保護された出力を間接的に使用するアプリケーションから取得されることを確認するために使用されます。 署名キーは、 DxgkDdiOPMGetInformation 関数と DxgkDdiOPMGetCOPPCompatibleInformation 関数によって返されるデータに署名するためにも使用されます。 シーケンス番号の 1 つが DxgkDdiOPMConfigureProtectedOutput によって使用されます。 もう 1 つのシーケンス番号は、 DxgkDdiOPMGetInformation または DxgkDdiOPMGetCOPPCompatibleInformation によって使用されます。

DxgkDdiOPMSetSigningKeyAndSequenceNumbers は、エラーが発生した場合、または EncryptedParameters パラメーターが指すDXGKMDT_OPM_ENCRYPTED_PARAMETERS構造体のデータが必要な形式でない場合に、エラー コードを返す必要があります。 それ以外の場合、 DxgkDdiOPMSetSigningKeyAndSequenceNumbers は次の一連の操作を実行する必要があります。

  1. EncryptedParameters が指すデータを、適切な秘密キーと暗号化スキームで暗号化解除します。 出力に OPM セマンティクスがある場合、ディスプレイ ミニポート ドライバーは、その OPM 秘密キーを使用してデータを復号化する必要があります。 出力に COPP セマンティクスがある場合、ディスプレイ ミニポート ドライバーは、その COPP 秘密キーを使用してデータの暗号化を解除する必要があります。
  2. 出力に OPM セマンティクスがある場合は、復号化されたデータが RSAES-OAEP エンコード アルゴリズムでエンコードされていることを確認します。
  3. 少なくとも 40 バイトのデータが復号化されたことを確認します。
  4. 復号化されたデータの最初の 16 バイトに含まれる乱数が、ProtectedOutputHandle パラメーターのハンドルが渡されたときに表示ミニポート ドライバーの DxgkDdiOPMGetRandomNumber が返した乱数と一致することを確認します。
  5. 128 ビット AES 署名キーと 2 つの 32 ビット シーケンス番号をキャッシュします。

保護された出力オブジェクトのハンドルが DxgkDdiOPMSetSigningKeyAndSequenceNumbers に渡される前に、 DxgkDdiOPMGetRandomNumber に渡されます。 保護された各出力オブジェクト ハンドルは、 DxgkDdiOPMSetSigningKeyAndSequenceNumbers にのみ 1 回渡されます。

DxgkDdiOPMSetSigningKeyAndSequenceNumbers を ページング可能にする必要があります。

RSAES-OAEP および MGF1 パラメーター

RSAES-OAEP はパラメーター化された暗号化スキームであり、MGF1 はパラメーター化されたマスク生成関数です。 OPM が RSAES-OAEP と MGF1 を使用する場合に使用するパラメーターを次に示します。 次の用語と RSA Cryptography Standard の詳細については、 RSA ラボラトリーセキュア ハッシュ の Web サイトを参照してください。

要件

要件
対象プラットフォーム デスクトップ
Header dispmprt.h (Dispmprt.h を含む)
IRQL PASSIVE_LEVEL (「解説」セクションを参照)

こちらもご覧ください

DxgkDdiOPMGetCOPPCompatibleInformation

DxgkDdiOPMCreateProtectedOutput

DXGKMDT_OPM_ENCRYPTED_PARAMETERS

DxgkDdiAddDevice

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMGetInformation

DxgkDdiOPMConfigureProtectedOutput