Deskripsi
Gunakan API chrome.enterprise.platformKeys untuk membuat kunci dan menginstal sertifikat untuk kunci ini. Sertifikat akan dikelola oleh platform dan dapat digunakan untuk autentikasi TLS, akses jaringan, atau oleh ekstensi lain melalui chrome.platformKeys.
Izin
enterprise.platformKeysKetersediaan
Penggunaan
Penggunaan umum API ini untuk mendaftarkan sertifikat klien mengikuti langkah-langkah berikut:
- Dapatkan semua token yang tersedia menggunakan enterprise.platformKeys.getTokens. 
- Temukan Token dengan - idsama dengan- "user". Gunakan Token ini selanjutnya.
- Buat pasangan kunci menggunakan metode Token - generateKey(ditetapkan di SubtleCrypto). Tindakan ini akan menampilkan handle ke kunci.
- Ekspor kunci publik menggunakan metode - exportKeyToken (ditetapkan di SubtleCrypto).
- Buat tanda tangan data permintaan sertifikasi menggunakan metode Token - sign(ditetapkan di SubtleCrypto).
- Lengkapi permintaan sertifikasi dan kirimkan ke otoritas sertifikasi. 
- Jika sertifikat diterima, impor menggunakan enterprise.platformKeys.importCertificate 
Berikut adalah contoh yang menunjukkan interaksi API utama, kecuali pembuatan dan pengiriman permintaan sertifikasi:
function getUserToken(callback) {
  chrome.enterprise.platformKeys.getTokens(function(tokens) {
    for (var i = 0; i < tokens.length; i++) {
      if (tokens[i].id == "user") {
        callback(tokens[i]);
        return;
      }
    }
    callback(undefined);
  });
}
function generateAndSign(userToken) {
  var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]);
  var algorithm = {
    name: "RSASSA-PKCS1-v1_5",
    // RsaHashedKeyGenParams
    modulusLength: 2048,
    publicExponent:
        new Uint8Array([0x01, 0x00, 0x01]),  // Equivalent to 65537
    hash: {
      name: "SHA-256",
    }
  };
  var cachedKeyPair;
  userToken.subtleCrypto.generateKey(algorithm, false, ["sign"])
    .then(function(keyPair) {
            cachedKeyPair = keyPair;
            return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey);
          },
          console.log.bind(console))
    .then(function(publicKeySpki) {
            // Build the Certification Request using the public key.
            return userToken.subtleCrypto.sign(
                {name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data);
          },
          console.log.bind(console))
    .then(function(signature) {
              // Complete the Certification Request with |signature|.
              // Send out the request to the CA, calling back
              // onClientCertificateReceived.
          },
          console.log.bind(console));
}
function onClientCertificateReceived(userToken, certificate) {
  chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}
getUserToken(generateAndSign);
Jenis
Algorithm
Jenis kunci yang akan dibuat.
Enum
"RSA" 
 
"ECDSA" 
 
ChallengeKeyOptions
Properti
- 
    tantanganArrayBuffer Challenge yang dikeluarkan oleh Verified Access Web API. 
- 
    registerKeyRegisterKeyOptions opsional Jika ada, mendaftarkan kunci yang diautentikasi dengan token scopeyang ditentukan. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Panggilan berikutnya ke fungsi ini akan menghasilkan Kunci Enterprise baru discopeyang ditentukan.
- 
    cakupanKunci Enterprise mana yang akan diverifikasi. 
RegisterKeyOptions
Properti
- 
    algoritmeAlgoritma yang harus digunakan oleh kunci terdaftar. 
Scope
Apakah akan menggunakan Kunci Pengguna Enterprise atau Kunci Mesin Enterprise.
Enum
"USER" 
 
"MESIN" 
 
Token
Properti
- 
    idstring Mengidentifikasi Tokenini secara unik.ID statis adalah "user"dan"system", yang masing-masing merujuk ke token hardware khusus pengguna dan seluruh sistem platform. Token lainnya (dengan ID lainnya) dapat ditampilkan olehenterprise.platformKeys.getTokens.
- 
    softwareBackedSubtleCryptoSubtleCrypto Chrome 97+Mengimplementasikan antarmuka SubtleCrypto WebCrypto. Operasi kriptografi, termasuk pembuatan kunci, didukung oleh software. Perlindungan kunci, dan dengan demikian penerapan properti yang tidak dapat diekstrak, dilakukan di software, sehingga kunci kurang terlindungi dibandingkan kunci yang didukung hardware. Hanya kunci yang tidak dapat diekstrak yang dapat dibuat. Jenis kunci yang didukung adalah RSASSA-PKCS1-V1_5 dan RSA-OAEP (di Chrome versi 135+) dengan modulusLengthhingga 2048. Setiap kunci RSASSA-PKCS1-V1_5 dapat digunakan untuk menandatangani data paling banyak satu kali, kecuali jika ekstensi dimasukkan dalam daftar yang diizinkan melalui kebijakan KeyPermissions, yang dalam hal ini kunci dapat digunakan tanpa batas waktu. Kunci RSA-OAEP didukung sejak Chrome versi 135 dan dapat digunakan oleh ekstensi yang diizinkan melalui kebijakan yang sama untuk membuka kunci lainnya.Kunci yang dibuat di Tokentertentu tidak dapat digunakan dengan Token lain, dan juga tidak dapat digunakan denganwindow.crypto.subtle. Demikian pula, objekKeyyang dibuat denganwindow.crypto.subtletidak dapat digunakan dengan antarmuka ini.
- 
    subtleCryptoSubtleCrypto Mengimplementasikan antarmuka SubtleCrypto WebCrypto. Operasi kriptografis, termasuk pembuatan kunci, didukung hardware. Hanya kunci yang tidak dapat diekstrak yang dapat dibuat. Jenis kunci yang didukung adalah RSASSA-PKCS1-V1_5 dan RSA-OAEP (di Chrome versi 135+) dengan modulusLengthhingga 2048 dan ECDSA dengannamedCurveP-256. Setiap kunci RSASSA-PKCS1-V1_5 dan ECDSA dapat digunakan untuk menandatangani data paling banyak satu kali, kecuali jika ekstensi dimasukkan dalam daftar yang diizinkan melalui kebijakan KeyPermissions, yang dalam hal ini kunci dapat digunakan tanpa batas waktu. Kunci RSA-OAEP didukung sejak Chrome versi 135 dan dapat digunakan oleh ekstensi yang diizinkan melalui kebijakan yang sama untuk membuka kunci lainnya.Kunci yang dibuat di Tokentertentu tidak dapat digunakan dengan Token lain, dan juga tidak dapat digunakan denganwindow.crypto.subtle. Demikian pula, objekKeyyang dibuat denganwindow.crypto.subtletidak dapat digunakan dengan antarmuka ini.
Metode
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
): Promise<ArrayBuffer>
Serupa dengan challengeMachineKey dan challengeUserKey, tetapi memungkinkan penentuan algoritma kunci terdaftar. Menantang Kunci Mesin Perusahaan yang didukung hardware dan memancarkan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang mengeluarkan tantangan dan memverifikasi respons.
Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat bahwa perangkat saat ini adalah perangkat ChromeOS yang sah, perangkat saat ini dikelola oleh domain yang ditentukan selama verifikasi, pengguna yang saat ini login dikelola oleh domain yang ditentukan selama verifikasi, dan status perangkat saat ini mematuhi kebijakan perangkat perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh berada dalam mode developer. Identitas perangkat apa pun yang dikeluarkan oleh verifikasi terikat erat dengan hardware perangkat saat ini. Jika "user" Scope ditentukan, identitas juga terikat erat dengan pengguna yang login saat ini.
Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan perangkat perusahaan. Kunci yang dipertanyakan tidak berada di token "system" atau "user" dan tidak dapat diakses oleh API lain.
Parameter
- 
    opsiObjek yang berisi kolom yang ditentukan dalam ChallengeKeyOptions.
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:(response: ArrayBuffer) => void - 
    responsArrayBuffer Respons tantangan. 
 
- 
    
Hasil
- 
            Promise<ArrayBuffer> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
): Promise<ArrayBuffer>
Sebagai gantinya, gunakan challengeKey.
Menantang Kunci Mesin Perusahaan yang didukung hardware dan memancarkan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang mengeluarkan tantangan dan memverifikasi respons. Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat dari semua hal berikut: * Perangkat saat ini adalah perangkat ChromeOS yang sah. * Perangkat saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Pengguna yang login saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Status perangkat saat ini mematuhi kebijakan perangkat perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh berada dalam mode developer. * Identitas perangkat apa pun yang dikeluarkan oleh verifikasi terikat erat dengan hardware perangkat saat ini. Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan perangkat perusahaan. Kunci Mesin Perusahaan tidak berada di token "system" dan tidak dapat diakses oleh API lain.
Parameter
- 
    tantanganArrayBuffer Challenge yang dikeluarkan oleh Verified Access Web API. 
- 
    registerKeyboolean opsional Chrome 59+Jika disetel, Kunci Mesin Enterprise saat ini akan didaftarkan dengan token "system"dan melepaskan peran Kunci Mesin Enterprise. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Kunci ini adalah RSA 2048-bit. Panggilan berikutnya ke fungsi ini akan membuat Kunci Perangkat Enterprise baru.
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:(response: ArrayBuffer) => void - 
    responsArrayBuffer Respons tantangan. 
 
- 
    
Hasil
- 
            Promise<ArrayBuffer> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
): Promise<ArrayBuffer>
Sebagai gantinya, gunakan challengeKey.
Menantang Kunci Pengguna Enterprise yang didukung hardware dan memancarkan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang mengeluarkan tantangan dan memverifikasi respons. Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat dari semua hal berikut: * Perangkat saat ini adalah perangkat ChromeOS yang sah. * Perangkat saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Pengguna yang login saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Status perangkat saat ini mematuhi kebijakan pengguna perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh berada dalam mode developer. * Kunci publik yang dikeluarkan oleh verifikasi terikat erat dengan hardware perangkat saat ini dan pengguna yang saat ini login. Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan pengguna perusahaan. Kunci Pengguna Perusahaan tidak berada di token "user" dan tidak dapat diakses oleh API lain.
Parameter
- 
    tantanganArrayBuffer Challenge yang dikeluarkan oleh Verified Access Web API. 
- 
    registerKeyboolean Jika disetel, Kunci Pengguna Enterprise saat ini akan didaftarkan dengan token "user"dan melepaskan peran Kunci Pengguna Enterprise. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Kunci ini adalah RSA 2048-bit. Panggilan berikutnya ke fungsi ini akan menghasilkan Kunci Pengguna Enterprise baru.
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:(response: ArrayBuffer) => void - 
    responsArrayBuffer Respons tantangan. 
 
- 
    
Hasil
- 
            Promise<ArrayBuffer> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
): Promise<ArrayBuffer[]>
Menampilkan daftar semua sertifikat klien yang tersedia dari token yang diberikan. Dapat digunakan untuk memeriksa keberadaan dan masa berlaku sertifikat klien yang dapat digunakan untuk autentikasi tertentu.
Parameter
- 
    tokenIdstring ID Token yang ditampilkan oleh getTokens.
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:(certificates: ArrayBuffer[]) => void - 
    sertifikatArrayBuffer[] Daftar sertifikat, masing-masing dalam encoding DER dari sertifikat X.509. 
 
- 
    
Hasil
- 
            Promise<ArrayBuffer[]> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
): Promise<Token[]>
Menampilkan Token yang tersedia. Dalam sesi pengguna reguler, daftar akan selalu berisi token pengguna dengan id "user". Jika token TPM di seluruh sistem tersedia, daftar yang ditampilkan juga akan berisi token di seluruh sistem dengan id "system". Token di seluruh sistem akan sama untuk semua sesi di perangkat ini (perangkat dalam arti misalnya Chromebook).
Parameter
Hasil
- 
            Promise<Token[]> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Mengimpor certificate ke token yang diberikan jika kunci bersertifikasi sudah disimpan di token ini. Setelah permintaan sertifikasi berhasil, fungsi ini harus digunakan untuk menyimpan sertifikat yang diperoleh dan menyediakannya untuk autentikasi sistem operasi dan browser.
Parameter
- 
    tokenIdstring ID Token yang ditampilkan oleh getTokens.
- 
    sertifikatArrayBuffer Enkode DER dari sertifikat X.509. 
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:() => void 
Hasil
- 
            Promise<void> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback. 
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Menghapus certificate dari token yang diberikan jika ada. Harus digunakan untuk menghapus sertifikat yang sudah tidak berlaku agar tidak dipertimbangkan selama autentikasi dan tidak mengacaukan pilihan sertifikat. Harus digunakan untuk mengosongkan penyimpanan di penyimpanan sertifikat.
Parameter
- 
    tokenIdstring ID Token yang ditampilkan oleh getTokens.
- 
    sertifikatArrayBuffer Enkode DER dari sertifikat X.509. 
- 
    callbackfungsi opsional Parameter callbackterlihat seperti:() => void 
Hasil
- 
            Promise<void> Chrome 131+Promise hanya didukung untuk Manifest V3 dan yang lebih baru, platform lain harus menggunakan callback.