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 com o Manifest V3 e versões mais recentes, mas callbacks são fornecidos para compatibilidade com versões anteriores. Não é possível usar os dois na mesma chamada de função. A promessa é resolvida com o mesmo tipo que é passado para o callback.

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 com o Manifest V3 e versões mais recentes, mas callbacks são fornecidos para compatibilidade com versões anteriores. Não é possível usar os dois na mesma chamada de função. A promessa é resolvida com o mesmo tipo que é passado para o callback.