chrome.platformKeys

Descrição

Use a API chrome.platformKeys para acessar certificados do cliente gerenciados pela plataforma. Se o usuário ou a política conceder a permissão, uma extensão poderá usar esse certificado em seu 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+ Apenas no ChromeOS

Tipos

ClientCertificateRequest

Propriedades

  • certificateAuthorities

    ArrayBuffer[]

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

  • certificateTypes

    Esse campo é uma lista dos tipos de certificados solicitados, classificados em ordem de preferência do servidor. Somente os 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

Tipo enumerado

"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 (por exemplo, o comprimento da chave). Outros parâmetros, como a função hash usada pela função sinal, não estão incluídos.

SelectDetails

Propriedades

  • clientCerts

    ArrayBuffer[] opcional

    Se fornecido, o selectClientCertificates opera nessa lista. Caso contrário, recebe a lista de todos os certificados dos repositórios de certificados da plataforma 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

    boolean

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

  • Serão retornados somente os certificados que corresponderem a essa solicitação.

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 deve ser a codificação DER de um certificado X.509, a primeira entrada deve ser o certificado do servidor e cada entrada deve certificar a entrada que a precede.

VerificationResult

Propriedades

  • debug_errors

    string[]

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

    Observação:essa lista é destinada apenas a 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 há garantia de que sejam compatíveis com versões anteriores ou posteriores.

  • confiável

    boolean

    O resultado da verificação de confiança: verdadeiro se a confiança nos detalhes da verificação puder ser estabelecida e falso se a confiança for rejeitada por qualquer motivo.

Métodos

getKeyPair()

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

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

Parâmetros

  • certificado

    ArrayBuffer

    O certificado de uma Match retornado por selectClientCertificates.

  • parâmetros

    objeto

    Determina os parâmetros do 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 sinal vai aplicar o padding PKCS#1 v1.5, mas sem gerar hash dos dados fornecidos.

    Atualmente, esse método só oferece suporte aos 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

      Poderá ser null se a extensão não tiver acesso a ela.

getKeyPairBySpki()

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

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

Parâmetros

  • publicKeySpkiDer

    ArrayBuffer

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

  • parâmetros

    objeto

    Fornece parâmetros de algoritmo de hash e assinatura, além daqueles corrigidos 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": { "name": string } } de "hash". O parâmetro "hash" representa o nome do algoritmo de hash a ser usado na operação de resumo antes de um sinal. É possível transmitir "nenhum" como o nome do hash. Nesse caso, a função de sinal vai aplicar o preenchimento PKCS#1 v1.5 e não gerar hash dos dados fornecidos.

    Atualmente, esse método oferece suporte ao algoritmo "ECDSA" com o algoritmo de curva nomeada P-256 e "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

      Poderá ser null se a extensão não tiver acesso a ela.

selectClientCertificates()

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

Esse método filtra de uma lista de certificados do cliente os 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 verdadeira, o usuário verá uma caixa de diálogo em que poderá selecionar entre certificados correspondentes e conceder à extensão acesso ao certificado. Os certificados do cliente selecionados/filtrados serão transmitidos para callback.

Parâmetros

  • detalhes
  • callback

    função optional

    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 ou mais recente

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

subtleCrypto()

chrome.platformKeys.subtleCrypto()

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

Retorna

  • objeto|indefinido

verifyTLSServerCertificate()

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

Verifica se o details.serverCertificateChain é confiável para o 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 é totalmente especificado e pode mudar no futuro. A implementação da API verifica a validade do certificado, valida o caminho da certificação e confere a confiança de uma AC conhecida. A implementação precisa respeitar o EKU serverAuth e oferecer suporte a nomes alternativos do assunto.

Parâmetros

Retorna

  • Chrome 121 ou mais recente

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