chrome.platformKeys

Descripción

Usa la API de chrome.platformKeys para acceder a los certificados de cliente que administra 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 VPNs de terceros (consulta chrome.vpnProvider).

Permisos

platformKeys

Disponibilidad

Chrome 45 y versiones posteriores Solo en ChromeOS

Tipos

ClientCertificateRequest

Propiedades

  • certificateAuthorities

    ArrayBuffer[]

    Lista de nombres distinguidos de las autoridades certificadoras permitidas por el servidor. Cada entrada debe ser un DistinguishedName X.509 codificado en DER.

  • certificateTypes

    Este campo es una lista de los tipos de certificados solicitados, ordenados según la preferencia del servidor. Solo se recuperarán los certificados de un tipo incluido en esta lista. Sin embargo, si certificateTypes es la lista vacía, se devolverán certificados de cualquier tipo.

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

Propiedades

  • certificado

    ArrayBuffer

    Es la codificación DER de un certificado X.509.

  • keyAlgorithm

    objeto

    Es el KeyAlgorithm de la clave certificada. Contiene parámetros del 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 usa la función de signo.

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 esta extensión. Se quitan las entradas para las que la extensión no tiene permiso o que no coinciden con la solicitud.

  • interactive

    booleano

    Si es verdadero, se le presenta al usuario la lista filtrada para que seleccione un certificado de forma manual y, de este modo, otorgue a la extensión acceso a los certificados y las claves. Solo se devolverán los certificados seleccionados. Si es falso, la lista se reduce a todos los certificados a los que se le otorgó acceso a la extensión (automática o manualmente).

  • Solo se devolverán los certificados que coincidan con esta solicitud.

VerificationDetails

Propiedades

  • Nombre de host

    string

    Es el nombre de host del servidor para el que se verificará el certificado, p.ej., el servidor que presentó el serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Cada entrada de la cadena debe ser la codificación DER de un certificado X.509, la primera entrada debe ser el certificado del servidor y cada entrada debe certificar la entrada anterior.

VerificationResult

Propiedades

  • debug_errors

    string[]

    Si falló la verificación de confianza, este array contiene los errores que informó la capa de red subyacente. De lo contrario, este array está vacío.

    Nota: Esta lista solo se creó para la depuración y es posible que no contenga todos los errores pertinentes. Los errores que se devuelven pueden cambiar en futuras revisiones de esta API y no se garantiza que sean compatibles con versiones anteriores o posteriores.

  • de confianza

    booleano

    Es el resultado de la verificación de confianza: verdadero si se pudo establecer la confianza para los detalles de verificación proporcionados y falso si se rechazó la confianza por algún motivo.

Métodos

getKeyPair()

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

Pasa el par de claves de certificate para usarlo con platformKeys.subtleCrypto a callback.

Parámetros

  • certificado

    ArrayBuffer

    Certificado de un Match que devuelve selectClientCertificates.

  • Parámetros

    objeto

    Determina los parámetros del algoritmo de firma o hash, además de los parámetros fijos de 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 y EcKeyImportParams para una clave EC. Además, para las claves RSASSA-PKCS1-v1_5, el parámetro del 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 firma aplicará el padding PKCS#1 v1.5, pero no generará un hash de los datos proporcionados.

    Actualmente, este método solo admite los algoritmos "RSASSA-PKCS1-v1_5" y "ECDSA".

  • callback

    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 esta extensión no tiene acceso a él.

getKeyPairBySpki()

Chrome 85 y versiones posteriores
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Pasa el par de claves identificado por publicKeySpkiDer para usarlo con platformKeys.subtleCrypto a callback.

Parámetros

  • publicKeySpkiDer

    ArrayBuffer

    Es un SubjectPublicKeyInfo X.509 con codificación DER, que se obtiene, p.ej., llamando a la función exportKey de WebCrypto con format="spki".

  • Parámetros

    objeto

    Proporciona parámetros de algoritmo de firma y hash, además de los que fija 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. 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 una firma. Es posible pasar "none" como el nombre del hash, en cuyo caso la función de firma aplicará el padding PKCS#1 v1.5, pero no generará un hash de los datos proporcionados.

    Actualmente, este método admite el algoritmo "ECDSA" con la curva con nombre 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

    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 esta extensión no tiene acceso a él.

selectClientCertificates()

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

Este método filtra de una lista de certificados de cliente aquellos que la plataforma conoce, coinciden con request y para los que la extensión tiene permiso para acceder al certificado y a su clave privada. Si interactive es verdadero, se le mostrará al usuario un diálogo en el que podrá seleccionar entre los certificados coincidentes y otorgarle acceso 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.

Muestra

  • Promise<Match[]>

    Chrome 121 y versiones posteriores

    Las promesas solo se admiten en Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Es una implementación de SubtleCrypto de WebCrypto que permite operaciones criptográficas en claves de certificados de cliente disponibles para esta extensión.

Muestra

  • objeto | undefined

verifyTLSServerCertificate()

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

Comprueba si se puede confiar en details.serverCertificateChain 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á completamente especificado 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 CA conocida. Se supone que la implementación debe respetar el EKU serverAuth y admitir nombres alternativos de sujeto.

Parámetros

Muestra

  • Chrome 121 y versiones posteriores

    Las promesas solo se admiten en Manifest V3 y versiones posteriores. Otras plataformas deben usar devoluciones de llamada.