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
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 porselectClientCertificates
. -
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 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" } }
: 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.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()
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 recentesAs promessas só têm suporte no Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.
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()
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
-
detalhes
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(result: VerificationResult) => void
-
resultado
-
Retorna
-
Promise<VerificationResult>
Chrome 121 ou versões mais recentesAs promessas só têm suporte no Manifesto V3 e versões mais recentes. Outras plataformas precisam usar callbacks.