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 tal certificado em seu protocolo de autenticação personalizado. Por exemplo: permite o uso de certificados gerenciados pela plataforma em VPNs de terceiros (consulte chrome.vpnProvider).

Permissões

platformKeys

Disponibilidade

Chrome 45 ou superior Somente ChromeOS

Tipos

ClientCertificateRequest

Propriedades

  • certificateAuthorities

    ArrayBuffer[]

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

  • certificateTypes

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

    Buffer de matriz

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

  • keyAlgorithm

    objeto

    O KeyAlgorithm da chave certificada. 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 sign, 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 armazenamentos 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

    booleano

    Se verdadeiro, a lista filtrada é apresentada ao usuário para selecionar manualmente um certificado e, assim, conceder à extensão acesso aos certificados e chaves. Apenas os certificados selecionados serão retornados. Se for falso, a lista será reduzida a todos os certificados aos quais a extensão recebeu acesso (automática ou manualmente).

  • 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 da 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 relatados pela camada de rede. Caso contrário, a matriz fica vazia.

    Observação:essa lista é apenas para depuração e pode não conter todos os erros relevantes. Os erros retornados podem mudar em revisões futuras dessa API, e não há garantia de compatibilidade com versões anteriores ou posteriores.

  • confiável

    booleano

    O resultado da verificação de confiança: verdadeiro se for possível estabelecer a confiança nos detalhes da verificação fornecidos 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

    Buffer de matriz

    O certificado de um Match retornado por selectClientCertificates.

  • parâmetros

    objeto

    Determina os parâmetros do algoritmo de assinatura/hash, além dos parâmetros fixos 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" } }: Em seguida, a função de assinatura aplicará o preenchimento PKCS#1 v1.5, mas não fará o hash dos dados fornecidos.

    Atualmente, esse método oferece suporte apenas a "RSASSA-PKCS1-v1_5" e "ECDSA" algoritmos.

  • callback

    função

    O parâmetro callback tem esta aparência:

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

    • publicKey

      objeto

    • privateKey

      objeto opcional

      O valor poderá ser null se a extensão não tiver acesso a ela.

getKeyPairBySpki()

Chrome 85 ou superior
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

    Buffer de matriz

    Um SubjectPublicKeyInfo X.509 codificado por 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 "hash" parâmetro { "hash": { "name": string } }. O "hash" representa o nome do algoritmo de hash a ser usado na operação de resumo antes de um sinal. É possível passar "nenhum" como o nome do hash. Nesse caso, a função de sinal aplicará o preenchimento PKCS#1 v1.5 e não fará o hash dos dados fornecidos.

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

      O valor 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 verdadeiro, o usuário verá uma caixa de diálogo em que ele pode selecionar um dos 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 opcional

    O parâmetro callback tem esta aparência:

    (matches: Match[]) => void

    • correspondências

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

Retorna

  • Promessa<Match[]>

    Chrome 121 ou versões mais recentes

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

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

Retorna

  • object | indefinido

verifyTLSServerCertificate()

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

Verifica se o details.serverCertificateChain é 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 expiração do certificado, valida o caminho da certificação e verifica a confiança de uma AC conhecida. A implementação deve respeitar o serverAuth EKU e oferecer suporte a nomes alternativos do assunto.

Parâmetros

Retorna

  • Promise&lt;VerificationResult&gt;

    Chrome 121 ou versões mais recentes

    O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.