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. Isso permite, por exemplo, 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 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).
-
request
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 porselectClientCertificates
. -
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 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 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.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()
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 recentePromessas 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()
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
-
detalhes
-
callback
função optional
O parâmetro
callback
tem esta aparência:(result: VerificationResult) => void
-
resultado
-
Retorna
-
Promise<VerificationResult>
Chrome 121 ou mais recentePromessas 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.