Bagikan melalui


DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS fungsi panggilan balik (dispmprt.h)

Fungsi DxgkDdiOPMSetSigningKeyAndSequenceNumbers mengatur kunci penandatanganan objek output yang dilindungi dan dua nomor urutan yang diberikan.

Sintaks

DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS DxgkddiOpmSetSigningKeyAndSequenceNumbers;

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

Parameter

[in] MiniportDeviceContext

Handel ke blok konteks yang terkait dengan adaptor tampilan. Sebelumnya, fungsi DxgkDdiAddDevice driver miniport tampilan memberikan handel ini ke subsistem kernel grafis DirectX.

[in] ProtectedOutputHandle

Handel ke objek output yang dilindungi. Fungsi DxgkDdiOPMCreateProtectedOutput membuat objek output yang dilindungi dan mengembalikan handel ke objek .

[in] EncryptedParameters

Penunjuk ke struktur DXGKMDT_OPM_ENCRYPTED_PARAMETERS yang berisi array 256-byte. Array berisi antara 40 dan 256 byte data yang dienkripsi dengan kunci umum dari sertifikat yang sesuai. Untuk informasi selengkapnya tentang kunci publik, unduh dokumen Perlindungan Konten Output dari Supporting Output Protection Manager. Jika output yang dilindungi memiliki semantik OPM, data dienkripsi dengan kunci umum dari sertifikat OPM driver miniport tampilan. Jika output yang dilindungi memiliki semantik Certified Output Protection Protocol (COPP), data dienkripsi dengan kunci umum dari sertifikat COPP driver miniport tampilan.

Algoritma yang harus digunakan driver miniport tampilan untuk mendekripsi data dalam array tergantung pada semantik output yang dilindungi. Output yang dilindungi dengan semantik OPM menggunakan skema enkripsi RSAES-OAEP untuk mendekripsi data. Untuk informasi selengkapnya tentang RSAES-OAEP, lihat situs web Laboratorium RSA . Output yang dilindungi dengan semantik COPP menggunakan algoritma enkripsi RSA standar untuk mendekripsi data terenkripsi.

Setelah driver miniport tampilan mendekripsi data, hanya 40 byte pertama data yang saat ini berguna. 16 byte pertama dari data yang didekripsi berisi angka acak yang ditampilkan fungsi DxgkDdiOPMGetRandomNumber driver ditampilkan ketika handel dalam parameter ProtectedOutputHandle diteruskan ke dalamnya. 16 byte berikutnya berisi kunci penandatanganan AES 128-bit. 4 byte berikutnya berisi nomor urutan yang digunakan oleh DxgkDdiOPMGetInformation atau DxgkDdiOPMGetCOPPCompatibleInformation. 4 byte akhir berisi nomor urutan yang digunakan oleh DxgkDdiOPMConfigureProtectedOutput. Sisa data yang didekripsi harus diabaikan jika ada.

Nilai kembali

DxgkDdiOPMSetSigningKeyAndSequenceNumbers mengembalikan STATUS_SUCCESS jika fungsi berhasil mengatur kunci penandatanganan dan dua nomor urutan. Jika tidak, ini mungkin mengembalikan STATUS_OPM_INVALID_ENCRYPTED_PARAMETERS karena salah satu alasan berikut:

  • Jika output yang dilindungi memiliki semantik OPM, data yang didekripsi driver miniport tampilan tidak dikodekan dengan algoritma pengodean RSAES-OAEP. Untuk informasi selengkapnya tentang RSAES-OAEP, lihat bagian 7.1.2 di PKCS #1 v2.1: Standar Kriptografi RSA, di situs web Laboratorium RSA .
  • Data tidak dienkripsi oleh pemanggil dengan kunci publik yang sesuai. Jika output memiliki semantik OPM, pemanggil harus mengenkripsi data dengan kunci umum dari sertifikat OPM driver miniport tampilan. Jika output memiliki semantik COPP, pemanggil harus mengenkripsi data dengan kunci umum dari sertifikat COPP driver miniport tampilan.
  • Pemanggil tidak mengenkripsi setidaknya 40 byte data.
  • Angka acak 16 byte dalam data yang didekripsi driver miniport tampilan tidak cocok dengan angka acak 16-byte yang dikembalikan fungsi DxgkDdiOPMGetRandomNumber .

Fungsi ini mungkin juga mengembalikan kode kesalahan lain yang ditentukan dalam Ntstatus.h.

Keterangan

Kunci penandatanganan digunakan untuk memverifikasi bahwa data yang diteruskan ke fungsi DxgkDdiOPMConfigureProtectedOutput dan DxgkDdiOPMGetInformation berasal dari aplikasi yang secara tidak langsung menggunakan output yang dilindungi. Kunci penandatanganan juga digunakan untuk menandatangani data yang dikembalikan oleh fungsi DxgkDdiOPMGetInformation dan DxgkDdiOPMGetCOPPCompatibleInformation . Salah satu nomor urut digunakan oleh DxgkDdiOPMConfigureProtectedOutput. Nomor urut lainnya digunakan oleh DxgkDdiOPMGetInformation atau DxgkDdiOPMGetCOPPCompatibleInformation.

DxgkDdiOPMSetSigningKeyAndSequenceNumbers harus mengembalikan kode kegagalan jika terjadi kesalahan atau jika data dalam struktur DXGKMDT_OPM_ENCRYPTED_PARAMETERS yang ditunjukkan oleh parameter EncryptedParameters tidak dalam format yang diperlukan. Jika tidak, DxgkDdiOPMSetSigningKeyAndSequenceNumbers harus melakukan urutan operasi berikut:

  1. Dekripsi data yang diarahkan oleh EncryptedParameters dengan kunci privat dan skema enkripsi yang sesuai. Jika output memiliki semantik OPM, driver miniport tampilan harus menggunakan kunci privat OPM-nya untuk mendekripsi data. Jika output memiliki semantik COPP, driver miniport tampilan harus menggunakan kunci privat COPP-nya untuk mendekripsi data.
  2. Jika output memiliki semantik OPM, verifikasi bahwa data yang didekripsi dikodekan dengan algoritma pengodean RSAES-OAEP.
  3. Verifikasi bahwa setidaknya 40 byte data didekripsi.
  4. Verifikasi bahwa angka acak yang terkandung dalam 16 byte pertama data yang didekripsi cocok dengan angka acak yang ditampilkan DxgkDdiOPMGetRandomNumber driver miniport ditampilkan ketika handel dalam parameter ProtectedOutputHandle diteruskan ke dalamnya.
  5. Cache kunci penandatanganan AES 128-bit dan dua nomor urutan 32-bit.

Sebelum handel objek output yang dilindungi diteruskan ke DxgkDdiOPMSetSigningKeyAndSequenceNumbers, itu diteruskan ke DxgkDdiOPMGetRandomNumber. Setiap handel objek output yang dilindungi hanya diteruskan ke DxgkDdiOPMSetSigningKeyAndSequenceNumbers sekali.

DxgkDdiOPMSetSigningKeyAndSequenceNumbers harus dibuat dapat dipaginasi.

Parameter RSAES-OAEP dan MGF1

RSAES-OAEP adalah skema enkripsi parameter dan MGF1 adalah fungsi pembuatan masker berparameter. Berikut ini adalah parameter yang digunakan OPM saat menggunakan RSAES-OAEP dan MGF1. Untuk informasi selengkapnya tentang istilah berikut dan Standar Kriptografi RSA, lihat situs web Laboratorium RSA dan Hashing Aman .

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header dispmprt.h (termasuk Dispmprt.h)
IRQL PASSIVE_LEVEL (lihat bagian Keterangan)

Lihat juga

DxgkDdiOPMGetCOPPCompatibleInformation

DxgkDdiOPMCreateProtectedOutput

DXGKMDT_OPM_ENCRYPTED_PARAMETERS

DxgkDdiAddDevice

DxgkDdiOPMGetRandomNumber

DxgkDdiOPMGetInformation

DxgkDdiOPMConfigureProtectedOutput