Description
Utilisez l'API chrome.enterprise.platformKeys pour générer des clés et installer les certificats de ces clés. Ces certificats seront gérés par la plate-forme et peuvent servir à l'authentification TLS, à l'accès au réseau ou à une autre extension via chrome.platformKeys.
Autorisations
enterprise.platformKeysDisponibilité
Utilisation
L'utilisation typique de cette API pour enregistrer un certificat client suit les étapes suivantes :
- Obtenez tous les jetons disponibles à l'aide de enterprise.platformKeys.getTokens. 
- Recherchez le jeton dont - idest égal à- "user". Utilisez ce jeton par la suite.
- Générez une paire de clés à l'aide de la méthode - generateKeyToken (définie dans SubtleCrypto). Cela renverra le handle à la clé.
- Exportez la clé publique à l'aide de la méthode de jeton - exportKey(définie dans SubtleCrypto).
- Créez la signature des données de la demande de certification à l'aide de la méthode - signToken (définie dans SubtleCrypto).
- Remplissez la demande de certification et envoyez-la à l'autorité de certification. 
- Si un certificat est reçu, importez-le à l'aide de enterprise.platformKeys.importCertificate. 
Voici un exemple qui illustre l'interaction principale de l'API, à l'exception de la création et de l'envoi de la demande de certification :
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);
Types
Algorithm
Type de clé à générer.
Énumération
"RSA" 
 
"ECDSA" 
 
ChallengeKeyOptions
Propriétés
- 
    challengeArrayBuffer Défi émis par l'API Web Verified Access. 
- 
    registerKeyRegisterKeyOptions facultatif Si elle est présente, enregistre la clé contestée avec le jeton scopespécifié. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Les appels suivants à cette fonction généreront une nouvelle clé Enterprise dans lescopespécifié.
- 
    champ d'applicationClé Enterprise à demander. 
RegisterKeyOptions
Propriétés
- 
    algorithmAlgorithme que la clé enregistrée doit utiliser. 
Scope
Indique si vous devez utiliser la clé utilisateur Enterprise ou la clé machine Enterprise.
Énumération
"USER" 
 
"MACHINE" 
 
Token
Propriétés
- 
    idchaîne Identifie de manière unique cet élément Token.Les ID statiques sont "user"et"system", qui font respectivement référence au jeton matériel spécifique à l'utilisateur et à celui de l'ensemble du système.enterprise.platformKeys.getTokenspeut renvoyer d'autres jetons (avec d'autres identifiants).
- 
    softwareBackedSubtleCryptoSubtleCrypto Chrome 97 et versions ultérieuresImplémente l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, sont gérées par logiciel. La protection des clés, et donc l'implémentation de la propriété non extractible, est effectuée dans le logiciel. Les clés sont donc moins protégées que les clés soutenues par le matériel. Seules les clés non extractibles peuvent être générées. Les types de clés compatibles sont RSASSA-PKCS1-V1_5 et RSA-OAEP (sur les versions 135 et ultérieures de Chrome) avec modulusLengthjusqu'à 2 048. Chaque clé RSASSA-PKCS1-V1_5 ne peut être utilisée pour signer des données qu'une seule fois, sauf si l'extension est ajoutée à la liste d'autorisation via la règle KeyPermissions. Dans ce cas, la clé peut être utilisée indéfiniment. Les clés RSA-OAEP sont compatibles depuis la version 135 de Chrome et peuvent être utilisées par les extensions ajoutées à la liste d'autorisation via cette même règle pour déchiffrer d'autres clés.Les clés générées sur un Tokenspécifique ne peuvent pas être utilisées avec d'autres jetons ni avecwindow.crypto.subtle. De même, les objetsKeycréés avecwindow.crypto.subtlene peuvent pas être utilisés avec cette interface.
- 
    subtleCryptoSubtleCrypto Implémente l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, sont soutenues par le matériel. Seules les clés non extractibles peuvent être générées. Les types de clés compatibles sont RSASSA-PKCS1-V1_5 et RSA-OAEP (sur les versions 135 et ultérieures de Chrome) avec modulusLengthjusqu'à 2 048 et ECDSA avecnamedCurveP-256. Chaque clé RSASSA-PKCS1-V1_5 et ECDSA ne peut être utilisée pour signer des données qu'une seule fois, sauf si l'extension est ajoutée à la liste d'autorisation via la stratégie KeyPermissions. Dans ce cas, la clé peut être utilisée indéfiniment. Les clés RSA-OAEP sont compatibles depuis la version 135 de Chrome et peuvent être utilisées par les extensions ajoutées à la liste d'autorisation via cette même règle pour déchiffrer d'autres clés.Les clés générées sur un Tokenspécifique ne peuvent pas être utilisées avec d'autres jetons ni avecwindow.crypto.subtle. De même, les objetsKeycréés avecwindow.crypto.subtlene peuvent pas être utilisés avec cette interface.
Méthodes
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
): Promise<ArrayBuffer>
Semblable à challengeMachineKey et challengeUserKey, mais permet de spécifier l'algorithme d'une clé enregistrée. Défie une clé machine Enterprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sur ChromeOS et en association avec l'API Web Verified Access, qui émet des défis et valide les réponses.
Une validation réussie par l'API Web Verified Access est un signal fort indiquant que l'appareil actuel est un appareil ChromeOS légitime, que l'appareil actuel est géré par le domaine spécifié lors de la validation, que l'utilisateur connecté actuel est géré par le domaine spécifié lors de la validation et que l'état actuel de l'appareil est conforme aux règles relatives aux appareils de l'entreprise. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. Toute identité d'appareil émise par la validation est étroitement liée au matériel de l'appareil actuel. Si la portée "user" est spécifiée, l'identité est également étroitement liée à l'utilisateur actuellement connecté.
Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle d'appareil de l'entreprise. La clé contestée ne réside pas dans le jeton "system" ou "user" et n'est accessible par aucune autre API.
Paramètres
- 
    optionsObjet contenant les champs définis dans ChallengeKeyOptions.
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :(response: ArrayBuffer) => void - 
    réponseArrayBuffer La réponse au défi. 
 
- 
    
Renvoie
- 
            Promise<ArrayBuffer> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
): Promise<ArrayBuffer>
Utilisez plutôt challengeKey.
Défie une clé machine Enterprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sur ChromeOS et en association avec l'API Web Verified Access, qui émet des défis et valide les réponses. Une validation réussie par l'API Web Verified Access est un signal fort indiquant que : * L'appareil actuel est un appareil ChromeOS légitime. * L'appareil actuel est géré par le domaine spécifié lors de la validation. * L'utilisateur actuellement connecté est géré par le domaine spécifié lors de la validation. * L'état actuel de l'appareil est conforme aux règles relatives aux appareils de l'entreprise. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. * Toute identité d'appareil émise par la validation est étroitement liée au matériel de l'appareil actuel. Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle d'appareil de l'entreprise. La clé machine Enterprise ne réside pas dans le jeton "system" et n'est accessible par aucune autre API.
Paramètres
- 
    challengeArrayBuffer Défi émis par l'API Web Verified Access. 
- 
    registerKeybooléen facultatif Chrome 59 et versions ultérieuresSi cette option est définie, la clé machine Enterprise actuelle est enregistrée avec le jeton "system"et renonce au rôle de clé machine Enterprise. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Cette clé est une clé RSA de 2 048 bits. Les appels suivants à cette fonction généreront une nouvelle clé machine Enterprise.
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :(response: ArrayBuffer) => void - 
    réponseArrayBuffer La réponse au défi. 
 
- 
    
Renvoie
- 
            Promise<ArrayBuffer> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
): Promise<ArrayBuffer>
Utilisez plutôt challengeKey.
Défie une clé utilisateur Enterprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sur ChromeOS et en association avec l'API Web Verified Access, qui émet des défis et valide les réponses. Une validation réussie par l'API Web Verified Access est un signal fort indiquant que : * L'appareil actuel est un appareil ChromeOS légitime. * L'appareil actuel est géré par le domaine spécifié lors de la validation. * L'utilisateur actuellement connecté est géré par le domaine spécifié lors de la validation. * L'état actuel de l'appareil est conforme aux règles pour les utilisateurs Enterprise. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. * La clé publique émise par la validation est étroitement liée au matériel de l'appareil actuel et à l'utilisateur actuellement connecté. Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle utilisateur de l'entreprise. La clé utilisateur Enterprise ne réside pas dans le jeton "user" et n'est accessible par aucune autre API.
Paramètres
- 
    challengeArrayBuffer Défi émis par l'API Web Verified Access. 
- 
    registerKeybooléen Si cette option est définie, la clé utilisateur Enterprise actuelle est enregistrée avec le jeton "user"et renonce au rôle de clé utilisateur Enterprise. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Cette clé est une clé RSA de 2 048 bits. Les appels suivants à cette fonction généreront une nouvelle clé utilisateur Enterprise.
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :(response: ArrayBuffer) => void - 
    réponseArrayBuffer La réponse au défi. 
 
- 
    
Renvoie
- 
            Promise<ArrayBuffer> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
): Promise<ArrayBuffer[]>
Renvoie la liste de tous les certificats client disponibles à partir du jeton donné. Peut être utilisé pour vérifier l'existence et l'expiration des certificats client utilisables pour une certaine authentification.
Paramètres
- 
    tokenIdchaîne ID d'un jeton renvoyé par getTokens.
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :(certificates: ArrayBuffer[]) => void - 
    certificatsArrayBuffer[] Liste des certificats, chacun étant encodé au format DER d'un certificat X.509. 
 
- 
    
Renvoie
- 
            Promise<ArrayBuffer[]> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
): Promise<Token[]>
Renvoie les jetons disponibles. Dans la session d'un utilisateur standard, la liste contient toujours le jeton de l'utilisateur avec id "user". Si un jeton TPM à l'échelle du système est disponible, la liste renvoyée contiendra également le jeton à l'échelle du système avec id "system". Le jeton à l'échelle du système sera le même pour toutes les sessions sur cet appareil (par exemple, un Chromebook).
Paramètres
Renvoie
- 
            Promise<Token[]> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Importe certificate au jeton donné si la clé certifiée est déjà stockée dans ce jeton. Une fois la demande de certification approuvée, cette fonction doit être utilisée pour stocker le certificat obtenu et le mettre à la disposition du système d'exploitation et du navigateur pour l'authentification.
Paramètres
- 
    tokenIdchaîne ID d'un jeton renvoyé par getTokens.
- 
    certificatArrayBuffer Encodage DER d'un certificat X.509. 
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :() => void 
Renvoie
- 
            Promise<void> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels. 
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Supprime certificate du jeton donné, le cas échéant. Doit être utilisé pour supprimer les certificats obsolètes afin qu'ils ne soient pas pris en compte lors de l'authentification et n'encombrent pas le choix des certificats. Doit être utilisé pour libérer de l'espace de stockage dans le magasin de certificats.
Paramètres
- 
    tokenIdchaîne ID d'un jeton renvoyé par getTokens.
- 
    certificatArrayBuffer Encodage DER d'un certificat X.509. 
- 
    callbackfunction facultatif Le paramètre callbackse présente comme suit :() => void 
Renvoie
- 
            Promise<void> Chrome 131 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.