chrome.platformKeys
Description
使用 chrome.platformKeys
API 访问由平台管理的客户端证书。如果用户或策略授予权限,扩展可以在其自定义身份验证协议中使用此类证书。例如。这允许在第三方 VPN 中使用平台管理的证书(请参阅 chrome.vpnProvider)。
Permissions
platformKeys
Availability
Chrome 45+
Foreground only
Summary
Types
Methods
Types
ClientCertificateRequest
PROPERTIES
certificateAuthorities
ArrayBuffer[]
服务器允许的证书颁发机构的专有名称列表。每个条目必须是 DER 编码的 X.509 DistinguishedName。
certificateTypes
此字段是所请求证书类型的列表,按服务器的首选项排序。仅检索此列表中包含的类型的证书。但是,如果
certificateTypes
是空列表,则将返回任何类型的证书。
ClientCertificateType
TYPE
"rsaSign", or "ecdsaSign"
Match
PROPERTIES
certificate
ArrayBuffer
X.509 证书的 DER 编码。
keyAlgorithm
object
认证密钥的密钥KeyAlgorithm算法。这包含证书密钥固有的算法参数(例如密钥长度)。不包括其他参数,如符号函数使用的哈希函数。
SelectDetails
PROPERTIES
clientCerts
ArrayBuffer[] optional
如果给定,则
selectClientCertificates
对该列表进行操作。否则,从该扩展可用的平台证书存储中获取所有证书的列表。扩展没有权限或与请求不匹配的条目将被删除。interactive
boolean
如果为真,则向用户呈现过滤列表以手动选择证书,从而授予对证书和密钥的扩展访问权。只会返回选定的证书。如果为 false,则列表将缩减为扩展已被授予访问权限(自动或手动)的所有证书。
request
只会返回与此请求匹配的证书。
VerificationDetails
PROPERTIES
hostname
string
用于验证证书的服务器的主机名,例如提供
serverCertificateChain
的服务器。serverCertificateChain
ArrayBuffer[]
每个链条目必须是 X.509 证书的 DER 编码,第一个条目必须是服务器证书,每个条目必须证明它前面的条目。
VerificationResult
PROPERTIES
debug_errors
string[]
如果信任验证失败,则该数组包含底层网络层报告的错误。否则,此数组为空。
注意:此列表仅用于调试,可能不包含所有相关错误。返回的错误可能会在此 API 的未来修订版中发生变化,并且不保证向前或向后兼容。
trusted
boolean
信任验证的结果:如果可以建立对给定验证详细信息的信任,则为 true,如果出于任何原因拒绝信任,则为 false。
Methods
getKeyPair
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
将用于 platformKeys.subtleCrypto
的证书密钥certificate
对传递给回调callback
。
PARAMETERS
certificate
ArrayBuffer
selectClientCertificates
返回的匹配Match
证书。parameters
object
除了由密钥本身固定的参数之外,还确定签名/哈希算法参数。 WebCrypto 的 importKey 函数接受相同的参数,例如RSASSA-PKCS1-v1_5 密钥为
RsaHashedImportParams
,EC 密钥为EcKeyImportParams
。此外,对于 RSASSA-PKCS1-v1_5 密钥,可以使用以下值之一指定散列算法名称参数:“none”、“SHA-1”、“SHA-256”、“SHA-384”或“SHA-512”,例如{"hash": { "name": "none" } }
。然后 sign 函数将应用 PKCS#1 v1.5 填充,但不会散列给定的数据。目前,该方法仅支持“RSASSA-PKCS1-v1_5”和“ECDSA”算法。
callback
function
The
callback
parameter looks like:(publicKey: object, privateKey?: object) => void
publicKey
object
privateKey
object optional
如果此扩展无权访问它,则可能为 null。
getKeyPairBySpki
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Chrome 85+
将 publicKeySpkiDer
标识的密钥对与platformKeys.subtleCrypto
一起使用传递给回调callback
。
PARAMETERS
publicKeySpkiDer
ArrayBuffer
DER 编码的 X.509 SubjectPublicKeyInfo,例如获得通过使用 format="spki" 调用 WebCrypto 的 exportKey 函数。
parameters
object
除了由密钥本身固定的参数外,还提供签名和哈希算法参数。 WebCrypto 的 importKey 函数接受相同的参数,例如RSASSA-PKCS1-v1_5 密钥的
RsaHashedImportParams
。对于 RSASSA-PKCS1-v1_5 密钥,我们还需要传递一个“hash”参数{“hash”:{“name”:string}}
。“hash”参数表示在符号前的摘要操作中使用的散列算法的名称。可以传递“none”作为散列名称,在这种情况下,符号函数将应用 PKCS#1 v1.5 填充,但不会散列给定的数据。目前,此方法支持使用命名曲线 P-256 的“ECDSA”算法和使用散列算法“none”、“SHA-1”、“SHA-256”、“SHA”之一的“RSASSA-PKCS1-v1_5”算法-384”和“SHA-512”。
callback
function
The
callback
parameter looks like:(publicKey: object, privateKey?: object) => void
publicKey
object
privateKey
object optional
如果此扩展无权访问它,则可能为
null
。
selectClientCertificates
chrome.platformKeys.selectClientCertificates( details: SelectDetails, callback: function, )
此方法从客户端证书列表中筛选出平台已知、匹配请求request
以及扩展程序有权访问证书及其私钥的证书。如果交互interactive
为真,则向用户显示一个对话框,他们可以在其中从匹配的证书中进行选择并授予扩展访问证书的权限。选定/过滤的客户端证书将传递给回调callback
。
PARAMETERS
details
callback
function
The
callback
parameter looks like:(matches: Match[]) => void
matches
Match[]
与请求匹配的证书列表,扩展程序具有权限,如果交互
interactive
为真,则由用户选择。
subtleCrypto
chrome.platformKeys.subtleCrypto()
WebCrypto 的 SubtleCrypto 的实现,它允许对此扩展可用的客户端证书的密钥进行加密操作。
RETURNS
- object | undefined
verifyTLSServerCertificate
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback: function,
)
根据平台的信任设置,检查 details.serverCertificateChain
是否可以信任 details.hostname
。注意:信任验证的实际行为并未完全指定,将来可能会发生变化。API 实现验证证书到期、验证证书路径并检查已知 CA 的信任。该实现应该尊重 EKU serverAuth 并支持主题备用名称。
PARAMETERS
details
callback
function
The
callback
parameter looks like:(result: VerificationResult) => void
result
By.一粒技术服务.