Description
Utilisez l'API chrome.platformKeys
pour accéder aux certificats client gérés par la plate-forme. Si l'utilisateur ou la règle accorde l'autorisation, une extension peut utiliser un tel certificat dans son protocole d'authentification personnalisé. Par exemple, cela permet d'utiliser des certificats gérés par la plate-forme dans des VPN tiers (voir chrome.vpnProvider).
Autorisations
platformKeys
Garantie de disponibilité
Types
ClientCertificateRequest
Propriétés
-
certificateAuthorities
ArrayBuffer[]
Liste des noms distincts des autorités de certification autorisées par le serveur. Chaque entrée doit correspondre à un nom distinctif X.509 encodé au format DER.
-
certificateTypes
Ce champ liste les types de certificats demandés, triés par ordre de préférence du serveur. Seuls les certificats d'un type figurant dans cette liste seront récupérés. Toutefois, si la liste vide est
certificateTypes
, tous les types de certificats sont renvoyés.
ClientCertificateType
Enum
"rsaSign"
"ecdsaSign"
Match
Propriétés
-
certificat
ArrayBuffer
Encodage DER d'un certificat X.509.
-
keyAlgorithm
objet
Valeur KeyAlgorithm de la clé certifiée. Il contient des 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 Sign ne sont pas inclus.
SelectDetails
Propriétés
-
clientCerts
ArrayBuffer[] facultatif
S'il est fourni,
selectClientCertificates
opère sur cette liste. Sinon, obtient la liste de tous les certificats à partir des magasins de certificats de la plate-forme disponibles pour cette extension. Les entrées pour lesquelles l'extension n'est pas autorisée ou qui ne correspondent pas à la demande sont supprimées. -
interactive
boolean
Si la valeur est "true", l'utilisateur peut sélectionner manuellement un certificat dans la liste filtrée, ce qui permet à l'extension d'accéder aux certificats et aux clés. Seuls les certificats sélectionnés vous seront renvoyés. Si la valeur est "false", la liste est réduite à tous les certificats auxquels l'extension a accès (automatiquement ou manuellement).
-
request
Seuls les certificats correspondant à cette requête seront renvoyés.
VerificationDetails
Propriétés
-
nom d'hôte
chaîne
Nom d'hôte du serveur pour lequel vérifier le certificat (par exemple, le serveur qui a présenté le
serverCertificateChain
). -
serverCertificateChain
ArrayBuffer[]
Chaque entrée de 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 vérification de l'approbation 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 uniquement au débogage et peut ne pas contenir toutes les erreurs pertinentes. Les erreurs renvoyées peuvent changer dans les futures révisions de cette API, et il n'est pas garanti qu'elles soient rétrocompatibles ou avancées.
-
fiable
boolean
Résultat de la vérification de l'approbation : "true" si la confiance a pu être établie pour les informations de validation données, et "false" si la confiance est rejetée pour une raison quelconque.
Méthodes
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
Transmet la paire de clés certificate
à utiliser avec platformKeys.subtleCrypto
à callback
.
Paramètres
-
certificat
ArrayBuffer
Certificat d'un
Match
renvoyé parselectClientCertificates
. -
paramètres
objet
Détermine les paramètres de l'algorithme de signature/hachage en plus des paramètres fixés par la clé elle-même. Les mêmes paramètres sont acceptés par la fonction importKey de WebCrypto (par exemple,
RsaHashedImportParams
pour une clé RSASSA-PKCS1-v1_5 etEcKeyImportParams
pour une clé EC). En outre, pour les clés RSASSA-PKCS1-v1_5, le paramètre de nom de l'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 "sign" applique ensuite un remplissage PKCS#1 v1.5, mais ne hache pas les données données.Actuellement, cette méthode n'est compatible qu'avec les algorithmes "RSASSA-PKCS1-v1_5" et "ECDSA".
-
rappel
function
Le paramètre
callback
se présente comme suit :(publicKey: object, privateKey?: object) => void
-
publicKey
objet
-
privateKey
objet facultatif
Peut être
null
si cette extension n'y a pas accès.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Transmet la paire de clés identifiée par publicKeySpkiDer
pour une utilisation avec platformKeys.subtleCrypto
à callback
.
Paramètres
-
publicKeySpkiDer
ArrayBuffer
SubjectPublicKeyInfo 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 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 de hachage{ "hash": { "name": string } }
. Le paramètre "hash" représente le nom de l'algorithme de hachage à utiliser dans l'opération de condensé avant un signe. Il est possible de transmettre "none" comme nom de hachage. Dans ce cas, la fonction de signature appliquera le remplissage PKCS#1 v1.5 sans hacher les données en question.Cette méthode est actuellement 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".
-
rappel
function
Le paramètre
callback
se présente comme suit :(publicKey: object, privateKey?: object) => void
-
publicKey
objet
-
privateKey
objet facultatif
Peut être
null
si cette extension n'y a pas accès.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
Cette méthode permet de filtrer dans une liste de certificats client 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 dans laquelle l'utilisateur peut sélectionner un certificat correspondant et accorder à l'extension l'accès au certificat. Les certificats client sélectionnés/filtrés seront transmis à callback
.
Paramètres
-
détails
-
rappel
fonction facultative
Le paramètre
callback
se présente comme suit :(matches: Match[]) => void
-
correspondances
Liste des certificats correspondant à la requête, pour lesquels l'extension est autorisée 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érieuresLes promesses ne sont compatibles qu'avec Manifest V3 et versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
Implémentation du SubtleCrypto de WebCrypto qui permet les opérations de cryptographie sur les clés de certificats client disponibles pour cette extension.
Renvoie
-
objet | non défini
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
Vérifie si details.serverCertificateChain
peut être approuvé pour details.hostname
en fonction des paramètres de confiance de la plate-forme. Remarque: Le comportement réel de la validation de l'authentification n'est pas entièrement spécifié et est susceptible de changer à l'avenir. L'implémentation de l'API vérifie l'expiration du certificat, valide le chemin de certification et vérifie l'approbation par une autorité de certification connue. L'implémentation est censée respecter le serverAuth EKU et accepter les autres noms d'objet.
Paramètres
-
détails
-
rappel
fonction facultative
Le paramètre
callback
se présente comme suit :(result: VerificationResult) => void
-
résultat
-
Renvoie
-
Promise<VerificationResult>
Chrome 121 et versions ultérieuresLes promesses ne sont compatibles qu'avec Manifest V3 et versions ultérieures. Les autres plates-formes doivent utiliser des rappels.