Descripción
Usa la API de chrome.platformKeys
para acceder a los certificados de cliente administrados por la plataforma. Si el usuario o la política otorgan el permiso, una extensión puede usar ese certificado en su protocolo de autenticación personalizado. Por ejemplo, esto permite el uso de certificados administrados por la plataforma en VPN de terceros (consulta chrome.vpnProvider).
Permisos
platformKeys
Disponibilidad
Tipos
ClientCertificateRequest
Propiedades
-
certificateAuthorities
ArrayBuffer[]
Lista de nombres distinguidos de autoridades certificadoras que permite el servidor. Cada entrada debe tener un nombre distintivo X.509 con codificación DER.
-
certificateTypes
Este campo es una lista de los tipos de certificados solicitados, ordenados según las preferencias del servidor. Solo se recuperarán los certificados de uno de los tipos incluidos en esta lista. Sin embargo, si
certificateTypes
es la lista vacía, se mostrarán certificados de cualquier tipo.
ClientCertificateType
Enum
"rsaSign":
Match
Propiedades
-
certificado
ArrayBuffer
La codificación DER de un certificado X.509.
-
keyAlgorithm
objeto
El KeyAlgorithm de la clave certificada. Contiene parámetros de algoritmo que son inherentes a la clave del certificado (p.ej., la longitud de la clave). No se incluyen otros parámetros, como la función hash que utiliza la función sign.
SelectDetails
Propiedades
-
clientCerts
ArrayBuffer[] opcional
Si se proporciona,
selectClientCertificates
opera en esta lista. De lo contrario, obtiene la lista de todos los certificados de los almacenes de certificados de la plataforma que están disponibles para estas extensiones. Se quitan las entradas para las que la extensión no tiene permiso o que no coinciden con la solicitud. -
interactive
boolean
Si es verdadero, la lista filtrada se presenta al usuario para que seleccione manualmente un certificado y, por lo tanto, le otorgue a la extensión acceso a los certificados y claves. Solo se devolverán los certificados seleccionados. Si es falsa, la lista se reducirá a todos los certificados a los que tenga acceso la extensión (de forma automática o manual).
-
request
Solo se mostrarán los certificados que coincidan con esta solicitud.
VerificationDetails
Propiedades
-
Nombre de host
cadena
El nombre de host del servidor para el que se debe verificar el certificado, p.ej., el servidor que presentó el
serverCertificateChain
. -
serverCertificateChain
ArrayBuffer[]
Cada entrada de la cadena debe tener la codificación DER de un certificado X.509, la primera entrada debe ser el certificado de servidor y cada entrada debe certificar la entrada anterior.
VerificationResult
Propiedades
-
debug_errors
string[]
Si la verificación de confianza falló, este array contiene los errores que informa la capa de red subyacente. De lo contrario, este array estará vacío.
Nota: Esta lista está destinada solo para depuración y es posible que no contenga todos los errores relevantes. Los errores que se muestran pueden cambiar en revisiones futuras de esta API y no se garantiza que sean compatibles con versiones anteriores o posteriores.
-
de confianza
boolean
El resultado de la verificación de confianza es verdadero si se puede establecer la confianza en los detalles de verificación proporcionados y falso si se rechaza la confianza por algún motivo.
Métodos
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
Pasa el par de claves de certificate
para su uso con platformKeys.subtleCrypto
a callback
.
Parámetros
-
certificado
ArrayBuffer
El certificado de un
Match
que muestraselectClientCertificates
. -
Parámetros
objeto
Determina los parámetros del algoritmo de firma/hash además de los parámetros fijados por la clave. Se aceptan los mismos parámetros que la función importKey de WebCrypto, p.ej.,
RsaHashedImportParams
para una clave RSASSA-PKCS1-v1_5 yEcKeyImportParams
para una clave EC. Además, para las claves RSASSA-PKCS1-v1_5, el parámetro de nombre del algoritmo de hash se puede especificar con uno de los siguientes valores: “none”, “SHA-1”, “SHA-256”, “SHA-384” o “SHA-512”, p.ej.,{"hash": { "name": "none" } }
. Luego, la función de signo aplicará el relleno PKCS#1 v1.5, pero sin generar un hash para los datos proporcionados.Actualmente, este método solo admite los algoritmos “RSASSA-PKCS1-v1_5” y “ECDSA”.
-
callback
la función
El parámetro
callback
se ve de la siguiente manera:(publicKey: object, privateKey?: object) => void
-
publicKey
objeto
-
privateKey
objeto opcional
Puede ser
null
si la extensión no tiene acceso a ella.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Pasa el par de claves que identifica publicKeySpkiDer
para su uso con platformKeys.subtleCrypto
a callback
.
Parámetros
-
publicKeySpkiDer
ArrayBuffer
Un objeto X.509 SubjectPublicKeyInfo con codificación DER que se obtiene, p.ej., mediante una llamada a la función exportKey de WebCrypto con format="spki".
-
Parámetros
objeto
Proporciona parámetros de algoritmos de firma y hash, además de los que fija la clave misma. Se aceptan los mismos parámetros que la función importKey de WebCrypto, p.ej.,
RsaHashedImportParams
para una clave RSASSA-PKCS1-v1_5. Para las claves RSASSA-PKCS1-v1_5, también debemos pasar un parámetro "hash"{ "hash": { "name": string } }
. El parámetro "hash" representa el nombre del algoritmo de hash que se usará en la operación de resumen antes de un signo. Es posible pasar "none" como nombre de hash, en cuyo caso la función de signo aplicará el relleno PKCS#1 v1.5 y no aplicará hash a los datos proporcionados.Actualmente, este método admite el algoritmo “ECDSA” con curvas denominadas P-256 y el algoritmo “RSASSA-PKCS1-v1_5” con uno de los algoritmos de hash “none”, “SHA-1”, “SHA-256”, “SHA-384” y “SHA-512”.
-
callback
la función
El parámetro
callback
se ve de la siguiente manera:(publicKey: object, privateKey?: object) => void
-
publicKey
objeto
-
privateKey
objeto opcional
Puede ser
null
si la extensión no tiene acceso a ella.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
Este método filtra de una lista de certificados de cliente aquellos que la plataforma conoce, coinciden con request
y para los cuales la extensión tiene permiso para acceder al certificado y a su clave privada. Si interactive
es verdadero, el usuario verá un diálogo en el que puede seleccionar entre los certificados coincidentes y otorgar acceso al certificado a la extensión. Los certificados de cliente seleccionados o filtrados se pasarán a callback
.
Parámetros
-
detalles
-
callback
Función opcional
El parámetro
callback
se ve de la siguiente manera:(matches: Match[]) => void
-
coincide con
Es la lista de certificados que coinciden con la solicitud, para los que la extensión tiene permiso y, si
interactive
es verdadero, que seleccionó el usuario.
-
Devuelve
-
Promise<Match[]>
Chrome 121 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
Una implementación de SubtleCrypto de WebCrypto que permite operaciones criptográficas en claves de certificados de cliente disponibles para esta extensión.
Devuelve
-
objeto | no definido
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
Comprueba si details.serverCertificateChain
es de confianza para details.hostname
según la configuración de confianza de la plataforma. Nota: El comportamiento real de la verificación de confianza no está especificado en su totalidad y podría cambiar en el futuro. La implementación de la API verifica el vencimiento del certificado, valida la ruta de certificación y comprueba la confianza de una AC conocida. La implementación debe respetar el serverAuth de EKU y admitir nombres alternativos de sujeto.
Parámetros
-
detalles
-
callback
Función opcional
El parámetro
callback
se ve de la siguiente manera:(result: VerificationResult) => void
-
resultado
-
Devuelve
-
Promise<VerificationResult>
Chrome 121 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para brindar retrocompatibilidad. No puedes usar ambos en la misma llamada a función. La promesa se resuelve con el mismo tipo que se pasa a la devolución de llamada.