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
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 porselectClientCertificates
. -
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 eEcKeyImportParams
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.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()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
): 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
Retorna
-
Promise<Match[]>
Chrome 121+
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()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): 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
-
detalhes
Retorna
-
Promise<VerificationResult>
Chrome 121+