chrome.platformKeys

.

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. P.ej., esto permite el uso de certificados administrados por la plataforma en VPN 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 autoridades certificadoras que permite el servidor. Cada entrada debe ser un DistinguishedName X.509 con codificación DER.

  • certificateTypes

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

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

Propiedades

  • certificado

    ArrayBuffer

    Codificación DER de un certificado X.509.

  • keyAlgorithm

    objeto

    El KeyAlgorithm de la clave certificada. Contiene los 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 usa 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 esta extensión. 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, así, le otorga a la extensión el acceso a los certificados y a las claves. Solo se mostrarán los certificados seleccionados. Si se establece como "false", la lista se reduce a todos los certificados a los que se le otorgó acceso a la extensión (de forma automática o manual).

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

VerificationDetails

Propiedades

  • Nombre de host

    string

    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 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 que la precede.

VerificationResult

Propiedades

  • debug_errors

    string[]

    Si falla la verificación de confianza, este array contiene los errores informados por la capa de red subyacente. De lo contrario, este array estará vacío.

    Nota: Esta lista está destinada solo para depuración y puede que no contenga todos los errores relevantes. Es posible que los errores que se muestren cambien en revisiones futuras de esta API y no se garantiza su compatibilidad con versiones futuras ni con versiones anteriores.

  • de confianza

    boolean

    El resultado de la verificación de confianza: verdadero si se puede establecer la confianza para los detalles de verificación proporcionados y falso si se rechaza la confianza por cualquier motivo.

Métodos

getKeyPair()

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

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

Parámetros

  • certificado

    ArrayBuffer

    Es el certificado de un Match que muestra selectClientCertificates.

  • Parámetros

    objeto

    Determina los parámetros del algoritmo de firma/hash además de los parámetros fijados por 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 y EcKeyImportParams para una clave de 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 firma aplicará un relleno PKCS#1 v1.5, pero no generará un hash para los datos proporcionados.

    Actualmente, este método solo es compatible con el estándar “RSASSA-PKCS1-v1_5” y “ECDSA” con algoritmos criptográficos eficaces.

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

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

    • publicKey

      objeto

    • privateKey

      objeto opcional

      Podría ser null si la extensión no tiene acceso a ella.

getKeyPairBySpki()

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

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

Parámetros

  • publicKeySpkiDer

    ArrayBuffer

    Un objeto X.509 SubjectPublicKeyInfo con codificación DER, obtenido, p.ej., llamando a la función exportKey de WebCrypto con format="spki".

  • Parámetros

    objeto

    Proporciona parámetros de firma y algoritmo de hash, además de los que corrige 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 “hash” parámetro { "hash": { "name": string } }. El "hash" representa el nombre del algoritmo de hash que se usará en la operación de resumen antes de un signo. Es posible pasar "ninguna" como el nombre de hash, en cuyo caso la función sign aplicará el relleno PKCS#1 v1.5 y no generará un hash para los datos proporcionados.

    Actualmente, este método es compatible con el modelo “ECDSA” algoritmo con curva con nombre P-256 y “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

      Podría ser null si la extensión no tiene acceso a ella.

selectClientCertificates()

Promesa
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

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

  • Promesa<Coincidencia[]>

    Chrome 121 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El 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 las operaciones criptográficas en claves de certificados de cliente que están disponibles para esta extensión.

Muestra

  • object | indefinido

verifyTLSServerCertificate()

Promesa
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

Verifica 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á completamente especificado y podría cambiar en el futuro. La implementación de la API verifica el vencimiento del certificado, valida la ruta de la certificación y comprueba la confianza mediante una AC conocida. La implementación debe respetar la EKU serverAuth y admitir nombres alternativos de entidad.

Parámetros

Muestra

  • Promise&lt;VerificationResult&gt;

    Chrome 121 y versiones posteriores

    Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.