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 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()
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 apenas com o Manifest V3 e versões mais recentes. Outras plataformas precisam usar callbacks.