chrome.platformKeys

Deskripsi

Gunakan chrome.platformKeys API untuk mengakses sertifikat klien yang dikelola oleh platform. Jika pengguna atau kebijakan memberikan izin, ekstensi dapat menggunakan sertifikat tersebut dalam protokol autentikasi kustomnya. Misalnya, hal ini memungkinkan penggunaan sertifikat yang dikelola platform pada VPN pihak ketiga (lihat chrome.vpnProvider).

Izin

platformKeys

Ketersediaan

Chrome 45+ Khusus ChromeOS

Jenis

ClientCertificateRequest

Properti

  • certificateAuthorities

    ArrayBuffer[]

    Daftar nama certificate authority khusus yang diizinkan oleh server. Setiap entri harus berupa X.509 DistinguishedName yang dienkode DER.

  • certificateTypes

    Kolom ini berisi daftar jenis sertifikat yang diminta, diurutkan sesuai preferensi server. Hanya sertifikat dari jenis yang ada dalam daftar ini yang akan diambil. Namun, jika certificateTypes adalah daftar kosong, sertifikat jenis apa pun akan ditampilkan.

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

Properti

  • sertifikat

    ArrayBuffer

    Encoding DER sertifikat X.509.

  • keyAlgorithm

    objek

    KeyAlgorithm kunci tersertifikasi. Kunci ini berisi parameter algoritme yang melekat pada kunci sertifikat (mis. panjang kunci). Parameter lain seperti fungsi hash yang digunakan oleh fungsi tanda tidak disertakan.

SelectDetails

Properti

  • clientCerts

    ArrayBuffer[] opsional

    Jika diberikan, selectClientCertificates akan beroperasi di daftar ini. Jika tidak, akan memperoleh daftar semua sertifikat dari penyimpanan sertifikat platform yang tersedia untuk ekstensi ini. Entri yang izinnya tidak memiliki izin atau tidak cocok dengan permintaan ekstensi akan dihapus.

  • interaktif

    boolean

    Jika true (benar), daftar yang difilter akan ditampilkan kepada pengguna untuk memilih sertifikat secara manual, sehingga memberi ekstensi akses ke sertifikat dan kunci. Hanya sertifikat yang dipilih yang akan dikembalikan. Jika salah, daftar akan dikurangi menjadi semua sertifikat yang aksesnya telah diberikan kepada ekstensi (secara otomatis atau manual).

  • Hanya sertifikat yang cocok dengan permintaan ini yang akan ditampilkan.

VerificationDetails

Properti

  • hostname

    string

    Nama host server untuk memverifikasi sertifikat, misalnya server yang menampilkan serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Setiap entri rantai harus berupa encoding DER sertifikat X.509, entri pertama harus berupa sertifikat server dan setiap entri harus mensertifikasi entri yang mendahuluinya.

VerificationResult

Properti

  • debug_errors

    string[]

    Jika verifikasi kepercayaan gagal, array ini berisi error yang dilaporkan oleh lapisan jaringan pokok. Jika tidak, array ini kosong.

    Catatan: Daftar ini hanya dimaksudkan untuk proses debug dan mungkin tidak berisi semua error yang relevan. Error yang ditampilkan dapat berubah dalam revisi API ini di masa mendatang, dan tidak dijamin kompatibel dengan versi maju atau mundur.

  • tepercaya

    boolean

    Hasil verifikasi kepercayaan: benar (true) jika kepercayaan untuk detail verifikasi yang diberikan dapat dibangun dan salah jika kepercayaan ditolak karena alasan apa pun.

Metode

getKeyPair()

chrome.platformKeys.getKeyPair(
  certificate: ArrayBuffer,
  parameters: object,
  callback: function,
)

Meneruskan pasangan kunci certificate untuk digunakan dengan platformKeys.subtleCrypto ke callback.

Parameter

  • sertifikat

    ArrayBuffer

    Sertifikat Match yang ditampilkan oleh selectClientCertificates.

  • parameter

    objek

    Menentukan parameter algoritma tanda tangan/hash selain parameter yang ditetapkan oleh kunci itu sendiri. Parameter yang sama diterima oleh fungsi importKey WebCrypto, misalnya, RsaHashedImportParams untuk kunci RSASSA-PKCS1-v1_5 dan EcKeyImportParams untuk kunci EC. Selain itu, untuk kunci RSASSA-PKCS1-v1_5, parameter nama algoritme hashing dapat ditentukan dengan salah satu nilai berikut: "none", "SHA-1", "SHA-256", "SHA-384", atau "SHA-512", misalnya {"hash": { "name": "none" } }. Fungsi tanda kemudian akan menerapkan padding PKCS#1 v1.5 tetapi tidak melakukan hashing pada data yang diberikan.

    Saat ini, metode ini hanya mendukung algoritma "RSASSA-PKCS1-v1_5" dan "ECDSA".

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (publicKey: object,privateKey?: object)=>void

    • publicKey

      objek

    • privateKey

      objek opsional

      Mungkin null jika ekstensi ini tidak memiliki akses ke ekstensi tersebut.

getKeyPairBySpki()

Chrome 85 dan yang lebih baru
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)

Meneruskan pasangan kunci yang diidentifikasi oleh publicKeySpkiDer untuk digunakan dengan platformKeys.subtleCrypto ke callback.

Parameter

  • publicKeySpkiDer

    ArrayBuffer

    SubjectPublicKeyInfo X.509 yang dienkode DER, diperoleh misalnya dengan memanggil fungsi ExportKey WebCrypto dengan format="spki".

  • parameter

    objek

    Memberikan parameter algoritma hash dan tanda tangan, selain parameter yang ditetapkan oleh kunci itu sendiri. Parameter yang sama diterima oleh fungsi importKey WebCrypto, misalnya, RsaHashedImportParams untuk kunci RSASSA-PKCS1-v1_5. Untuk kunci RSASSA-PKCS1-v1_5, kita juga perlu meneruskan parameter "hash" { "hash": { "name": string } }. Parameter "hash" mewakili nama algoritma hashing yang akan digunakan dalam operasi ringkasan sebelum tanda. Anda dapat meneruskan "none" sebagai nama hash, dalam hal ini fungsi tanda akan menerapkan padding PKCS#1 v1.5 dan tidak melakukan hashing pada data yang diberikan.

    Saat ini, metode ini mendukung algoritma "ECDSA" dengan algoritma P-256 dan "RSASSA-PKCS1-v1_5" yang dinamai dengan salah satu algoritma hashing "none", "SHA-1", "SHA-256", "SHA-384", dan "SHA-512".

  • callback

    fungsi

    Parameter callback terlihat seperti:

    (publicKey: object,privateKey?: object)=>void

    • publicKey

      objek

    • privateKey

      objek opsional

      Mungkin null jika ekstensi ini tidak memiliki akses ke ekstensi tersebut.

selectClientCertificates()

Promise
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

Metode ini memfilter dari daftar sertifikat klien yang diketahui platform, cocok dengan request, dan yang izinnya dimiliki ekstensi untuk mengakses sertifikat tersebut serta kunci pribadinya. Jika interactive bernilai benar, pengguna akan melihat dialog tempat mereka dapat memilih dari sertifikat yang cocok dan memberikan akses ekstensi ke sertifikat tersebut. Sertifikat klien yang dipilih/difilter akan diteruskan ke callback.

Parameter

  • detail
  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (matches: Match[])=>void

    • cocok dengan

      Daftar sertifikat yang cocok dengan permintaan, yang diizinkan oleh ekstensi dan, jika interactive benar, yang dipilih oleh pengguna.

Hasil

  • Promise<Match[]>

    Chrome 121 dan yang lebih baru

    Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama yang diteruskan ke callback.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

Implementasi SubtleCrypto WebCrypto yang memungkinkan operasi kripto pada kunci sertifikat klien yang tersedia untuk ekstensi ini.

Hasil

  • objek|belum ditentukan

verifyTLSServerCertificate()

Promise
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

Memeriksa apakah details.serverCertificateChain dapat dipercaya untuk details.hostname sesuai dengan setelan kepercayaan platform. Catatan: Perilaku sebenarnya dari verifikasi kepercayaan tidak sepenuhnya ditentukan dan dapat berubah pada masa mendatang. Implementasi API akan memverifikasi akhir masa berlaku sertifikat, memvalidasi jalur sertifikasi, dan memeriksa kepercayaan oleh CA yang dikenal. Implementasinya seharusnya mematuhi EKU serverAuth dan mendukung nama alternatif subjek.

Parameter

Hasil

  • Chrome 121 dan yang lebih baru

    Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama yang diteruskan ke callback.