chrome.platformKeys

Descrição

Use a API chrome.platformKeys para acessar certificados de cliente gerenciados pela plataforma. Se o usuário ou a política conceder a permissão, uma extensão poderá usar esse certificado no protocolo de autenticação personalizado. Por exemplo, isso permite o uso de certificados gerenciados pela plataforma em VPNs de terceiros (consulte chrome.vpnProvider).

Permissões

platformKeys

Disponibilidade

Chrome 45 ou mais recente Somente no ChromeOS

Tipos

ClientCertificateRequest

Propriedades

  • certificateAuthorities

    ArrayBuffer[]

    Lista de nomes distintos de autoridades certificadoras permitidas pelo servidor. Cada entrada precisa ser um DistinguishedName X.509 codificado em DER.

  • certificateTypes

    Este campo é uma lista dos tipos de certificados solicitados, classificados de acordo com a preferência do servidor. Somente certificados de um tipo contido nesta lista serão recuperados. No entanto, se certificateTypes for a lista vazia, certificados de qualquer tipo serão retornados.

ClientCertificateType

Enumeração

"rsaSign"

"ecdsaSign"

Match

Propriedades

  • certificado

    ArrayBuffer

    A codificação DER de um certificado X.509.

  • keyAlgorithm

    objeto

    O KeyAlgorithm da chave certificada. Ele contém parâmetros de algoritmo inerentes à chave do certificado, como o comprimento da chave. Outros parâmetros, como a função de hash usada pela função de sinalização, não estão incluídos.

SelectDetails

Propriedades

  • clientCerts

    ArrayBuffer[] opcional

    Se fornecido, o selectClientCertificates vai operar nessa lista. Caso contrário, vai buscar a lista de todos os certificados dos repositórios de certificados da plataforma que estão disponíveis para essas extensões. As entradas para as quais a extensão não tem permissão ou que não correspondem à solicitação são removidas.

  • interativo

    booleano

    Se for "true", a lista filtrada será apresentada ao usuário para que ele selecione manualmente um certificado, concedendo à extensão acesso aos certificados e chaves. Somente os certificados selecionados serão retornados. Se for "false", a lista será reduzida a todos os certificados que a extensão tem permissão para acessar (de forma automática ou manual).

  • solicitação

    Somente os certificados que corresponderem a essa solicitação serão retornados.

VerificationDetails

Propriedades

  • nome do host

    string

    O nome do host do servidor para verificar o certificado, por exemplo, o servidor que apresentou o serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Cada entrada de cadeia precisa ser a codificação DER de um certificado X.509. A primeira entrada precisa ser o certificado do servidor, e cada entrada precisa certificar a entrada anterior.

VerificationResult

Propriedades

  • debug_errors

    string[]

    Se a verificação de confiança falhar, essa matriz vai conter os erros informados pela camada de rede subjacente. Caso contrário, a matriz fica vazia.

    Observação:essa lista é destinada apenas à depuração e pode não conter todos os erros relevantes. Os erros retornados podem mudar em revisões futuras desta API e não têm garantia de compatibilidade com versões anteriores ou posteriores.

  • confiável

    booleano

    O resultado da verificação de confiança: "true" se a confiança para os detalhes de verificação fornecidos puder ser estabelecida e "false" se a confiança for rejeitada por qualquer motivo.

Métodos

getKeyPair()

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

Transmite o par de chaves de certificate para uso com platformKeys.subtleCrypto para callback.

Parâmetros

  • certificado

    ArrayBuffer

    O certificado de um Match retornado por selectClientCertificates.

  • parâmetros

    objeto

    Determina parâmetros de algoritmo de assinatura/hash, além dos parâmetros fixados pela própria chave. Os mesmos parâmetros são aceitos pela função importKey do WebCrypto, por exemplo, RsaHashedImportParams para uma chave RSASSA-PKCS1-v1_5 e EcKeyImportParams para uma chave EC. Além disso, para chaves RSASSA-PKCS1-v1_5, o parâmetro de nome do algoritmo de hash pode ser especificado com um dos seguintes valores: "none", "SHA-1", "SHA-256", "SHA-384" ou "SHA-512", por exemplo, {"hash": { "name": "none" } }. A função de assinatura vai aplicar o padding PKCS#1 v1.5, mas não vai fazer hash dos dados fornecidos.

    No momento, esse método só é compatível com os algoritmos "RSASSA-PKCS1-v1_5" e "ECDSA".

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • publicKey

      objeto

    • privateKey

      objeto opcional

      Pode ser null se a extensão não tiver acesso a ele.

getKeyPairBySpki()

Chrome 85 ou mais recente
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Transfere o par de chaves identificado por publicKeySpkiDer para uso com platformKeys.subtleCrypto para callback.

Parâmetros

  • publicKeySpkiDer

    ArrayBuffer

    Um SubjectPublicKeyInfo X.509 codificado em DER, obtido, por exemplo, chamando a função exportKey do WebCrypto com format="spki".

  • parâmetros

    objeto

    Fornece parâmetros de algoritmo de assinatura e hash, além daqueles fixados pela própria chave. Os mesmos parâmetros são aceitos pela função importKey do WebCrypto, por exemplo, RsaHashedImportParams para uma chave RSASSA-PKCS1-v1_5. Para chaves RSASSA-PKCS1-v1_5, também precisamos transmitir um parâmetro "hash" { "hash": { "name": string } }. O parâmetro "hash" representa o nome do algoritmo de hash a ser usado na operação de resumo antes de uma assinatura. É possível transmitir "none" como o nome do hash. Nesse caso, a função de assinatura vai aplicar o padding PKCS#1 v1.5, mas não vai fazer hash dos dados fornecidos.

    No momento, esse método é compatível com o algoritmo "ECDSA" com curva nomeada P-256 e o algoritmo "RSASSA-PKCS1-v1_5" com um dos algoritmos de hash "none", "SHA-1", "SHA-256", "SHA-384" e "SHA-512".

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • publicKey

      objeto

    • privateKey

      objeto opcional

      Pode ser null se a extensão não tiver acesso a ele.

selectClientCertificates()

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

Esse método filtra de uma lista de certificados de cliente aqueles que são conhecidos pela plataforma, correspondem a request e para os quais a extensão tem permissão para acessar o certificado e a chave privada dele. Se interactive for verdadeiro, o usuário vai receber uma caixa de diálogo em que poderá selecionar entre os certificados correspondentes e conceder acesso da extensão ao certificado. Os certificados de cliente selecionados/filtrados serão transmitidos para callback.

Parâmetros

  • detalhes
  • callback

    função opcional

    O parâmetro callback tem esta aparência:

    (matches: Match[]) => void

    • correspondências

      A lista de certificados que correspondem à solicitação, para os quais a extensão tem permissão e, se interactive for verdadeiro, que foram selecionados pelo usuário.

Retorna

  • Promise<Match[]>

    Chrome 121+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Uma implementação do SubtleCrypto da WebCrypto que permite operações criptográficas em chaves de certificados do cliente disponíveis para essa extensão.

Retorna

  • object | undefined

verifyTLSServerCertificate()

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

Verifica se details.serverCertificateChain pode ser confiável para details.hostname de acordo com as configurações de confiança da plataforma. Observação: o comportamento real da verificação de confiança não está totalmente especificado e pode mudar no futuro. A implementação da API verifica a validade do certificado, valida o caminho de certificação e verifica a confiança por uma CA conhecida. A implementação precisa respeitar o EKU serverAuth e aceitar nomes alternativos de assunto.

Parâmetros

Retorna

  • Chrome 121+

    As promessas só são compatíveis com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.