chrome.platformKeys

Description

Utilisez l'API chrome.platformKeys pour accéder aux certificats client gérés par la plate-forme. Si l'utilisateur ou les règles l'autorisent, une extension peut utiliser un tel certificat dans son protocole d'authentification personnalisé. Par exemple, les certificats gérés par la plate-forme peuvent alors être utilisés dans les VPN tiers (voir chrome.vpnProvider).

Autorisations

platformKeys

Disponibilité

Chrome 45 et versions ultérieures ChromeOS uniquement

Types

ClientCertificateRequest

Propriétés

  • certificateAuthorities

    ArrayBuffer[]

    Liste des noms distinctifs des autorités de certification autorisées par le serveur. Chaque entrée doit être un DistinguishedName X.509 encodé au format DER.

  • certificateTypes

    Ce champ est une liste des types de certificats demandés, triés selon les préférences du serveur. Seuls les certificats d'un type figurant dans cette liste seront récupérés. Toutefois, si certificateTypes est une liste vide, les certificats de n'importe quel type seront renvoyés.

ClientCertificateType

Énumération

"rsaSign"

"ecdsaSign"

Match

Propriétés

  • certificat

    ArrayBuffer

    Encodage DER d'un certificat X.509.

  • keyAlgorithm

    objet

    KeyAlgorithm de la clé certifiée. Il contient les paramètres d'algorithme inhérents à la clé du certificat (par exemple, la longueur de la clé). D'autres paramètres, tels que la fonction de hachage utilisée par la fonction de signature, ne sont pas inclus.

SelectDetails

Propriétés

  • clientCerts

    ArrayBuffer[] facultatif

    Si elle est spécifiée, la selectClientCertificates s'applique à cette liste. Sinon, obtient la liste de tous les certificats des magasins de certificats de la plate-forme qui sont disponibles pour cette extension. Les entrées pour lesquelles l'extension n'a pas l'autorisation ou qui ne correspondent pas à la demande sont supprimées.

  • interactive

    booléen

    Si la valeur est "true", la liste filtrée est présentée à l'utilisateur pour qu'il sélectionne manuellement un certificat, ce qui accorde à l'extension l'accès aux certificats et clés. Seuls les certificats sélectionnés seront renvoyés. Si la valeur est "false", la liste est réduite à tous les certificats auxquels l'extension a été autorisée à accéder (automatiquement ou manuellement).

  • Seuls les certificats correspondant à cette demande seront renvoyés.

VerificationDetails

Propriétés

  • nom d'hôte

    chaîne

    Nom d'hôte du serveur pour lequel le certificat doit être validé (par exemple, le serveur qui a présenté serverCertificateChain).

  • serverCertificateChain

    ArrayBuffer[]

    Chaque entrée de la chaîne doit correspondre à l'encodage DER d'un certificat X.509. La première entrée doit être le certificat du serveur, et chaque entrée doit certifier l'entrée qui la précède.

VerificationResult

Propriétés

  • debug_errors

    chaîne[]

    Si la validation de la confiance a échoué, ce tableau contient les erreurs signalées par la couche réseau sous-jacente. Sinon, ce tableau est vide.

    Remarque : Cette liste est destinée au débogage uniquement et peut ne pas contenir toutes les erreurs pertinentes. Les erreurs renvoyées peuvent changer dans les futures révisions de cette API et ne sont pas garanties d'être compatibles avec les versions ultérieures ou antérieures.

  • fiable

    booléen

    Résultat de la validation de la fiabilité : "true" si la fiabilité pour les informations de validation données a pu être établie, et "false" si la fiabilité est refusée pour une raison quelconque.

Méthodes

getKeyPair()

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

Transmet la paire de clés de certificate pour l'utiliser avec platformKeys.subtleCrypto à callback.

Paramètres

  • certificat

    ArrayBuffer

    Certificat d'un Match renvoyé par selectClientCertificates.

  • paramètres

    objet

    Détermine les paramètres de l'algorithme de signature/de hachage en plus des paramètres fixés par la clé elle-même. Les mêmes paramètres sont acceptés que par la fonction importKey de WebCrypto, par exemple RsaHashedImportParams pour une clé RSASSA-PKCS1-v1_5 et EcKeyImportParams pour une clé EC. De plus, pour les clés RSASSA-PKCS1-v1_5, le paramètre de nom d'algorithme de hachage peut être spécifié avec l'une des valeurs suivantes : "none", "SHA-1", "SHA-256", "SHA-384" ou "SHA-512", par exemple {"hash": { "name": "none" } }. La fonction de signature appliquera ensuite le remplissage PKCS#1 v1.5, mais ne hachera pas les données fournies.

    Actuellement, cette méthode n'est compatible qu'avec les algorithmes "RSASSA-PKCS1-v1_5" et "ECDSA".

  • callback

    fonction

    Le paramètre callback se présente comme suit :

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

    • publicKey

      objet

    • privateKey

      object facultatif

      Peut être null si cette extension n'y a pas accès.

getKeyPairBySpki()

Chrome 85 ou version ultérieure
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Transmet la paire de clés identifiée par publicKeySpkiDer pour l'utilisation avec platformKeys.subtleCrypto à callback.

Paramètres

  • publicKeySpkiDer

    ArrayBuffer

    SubjectPublicKeyInfo X.509 encodé au format DER, obtenu par exemple en appelant la fonction exportKey de WebCrypto avec format="spki".

  • paramètres

    objet

    Fournit des paramètres d'algorithme de signature et de hachage, en plus de ceux fixés par la clé elle-même. Les mêmes paramètres sont acceptés que par la fonction importKey de WebCrypto, par exemple RsaHashedImportParams pour une clé RSASSA-PKCS1-v1_5. Pour les clés RSASSA-PKCS1-v1_5, nous devons également transmettre un paramètre "hash" { "hash": { "name": string } }. Le paramètre "hash" représente le nom de l'algorithme de hachage à utiliser dans l'opération de condensé avant une signature. Il est possible de transmettre "none" comme nom de hachage. Dans ce cas, la fonction de signature appliquera un remplissage PKCS#1 v1.5, mais ne hachera pas les données fournies.

    Actuellement, cette méthode est compatible avec l'algorithme "ECDSA" avec la courbe nommée P-256 et l'algorithme "RSASSA-PKCS1-v1_5" avec l'un des algorithmes de hachage "none", "SHA-1", "SHA-256", "SHA-384" et "SHA-512".

  • callback

    fonction

    Le paramètre callback se présente comme suit :

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

    • publicKey

      objet

    • privateKey

      object facultatif

      Peut être null si cette extension n'y a pas accès.

selectClientCertificates()

Promise
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)
: Promise<Match[]>

Cette méthode filtre une liste de certificats client pour ne conserver que ceux qui sont connus de la plate-forme, qui correspondent à request et pour lesquels l'extension est autorisée à accéder au certificat et à sa clé privée. Si interactive est défini sur "true", une boîte de dialogue s'affiche pour permettre à l'utilisateur de sélectionner un certificat correspondant et d'accorder à l'extension l'accès à ce certificat. Les certificats client sélectionnés/filtrés seront transmis à callback.

Paramètres

  • détails
  • callback

    function facultatif

    Le paramètre callback se présente comme suit :

    (matches: Match[]) => void

    • correspond à

      Liste des certificats correspondant à la requête, pour lesquels l'extension dispose d'une autorisation et, si interactive est défini sur "true", qui ont été sélectionnés par l'utilisateur.

Renvoie

  • Promise<Match[]>

    Chrome 121 et versions ultérieures

    Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Implémentation de SubtleCrypto de WebCrypto qui permet d'effectuer des opérations de chiffrement sur les clés des certificats client disponibles pour cette extension.

Renvoie

  • object | undefined

verifyTLSServerCertificate()

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

Vérifie si details.serverCertificateChain peut être considéré comme fiable pour details.hostname selon les paramètres de confiance de la plate-forme. Remarque : Le comportement réel de la validation de la confiance n'est pas entièrement spécifié et peut changer à l'avenir. L'implémentation de l'API vérifie l'expiration du certificat, valide le chemin de certification et vérifie la confiance accordée par une autorité de certification connue. L'implémentation est censée respecter l'EKU serverAuth et accepter les noms d'objet de remplacement.

Paramètres

Renvoie

  • Chrome 121 et versions ultérieures

    Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.