説明
chrome.platformKeys
API を使用して、プラットフォームが管理するクライアント証明書にアクセスします。ユーザーまたはポリシーが権限を付与した場合、拡張機能はその証明書をカスタム認証プロトコルで使用できます。例:これにより、サードパーティの VPN でプラットフォームが管理する証明書を使用できるようになります(chrome.vpnProvider を参照)。
権限
platformKeys
対象
型
ClientCertificateRequest
プロパティ
-
certificateAuthorities
ArrayBuffer[]
サーバーで許可されている認証局の識別名のリスト。各エントリは、DER でエンコードされた X.509 DistinguishedName にする必要があります。
-
certificateTypes
このフィールドは、リクエストされた証明書の種類をサーバーの優先順で並べ替えたリストです。このリストに含まれるタイプの証明書のみを取得します。ただし、
certificateTypes
が空のリストの場合は、任意のタイプの証明書が返されます。
ClientCertificateType
列挙型
"rsaSign"
"ecdsaSign"
Match
プロパティ
-
証明書
ArrayBuffer
X.509 証明書の DER エンコード。
-
keyAlgorithm
オブジェクト
認定された鍵の KeyAlgorithm。これには、証明書の鍵に固有のアルゴリズム パラメータ(鍵の長さなど)が含まれます。署名関数で使用されるハッシュ関数などの他のパラメータは含まれません。
SelectDetails
プロパティ
-
clientCerts
ArrayBuffer[] 省略可
指定すると、
selectClientCertificates
はこのリストで動作します。それ以外の場合、プラットフォームの証明書ストアからこの拡張機能で利用できるすべての証明書のリストを取得します。拡張機能に権限がないエントリや、リクエストと一致しないエントリは削除されます。 -
インタラクティブ
ブール値
true の場合、フィルタされたリストがユーザーに提示され、証明書を手動で選択することで、証明書と鍵へのアクセス権が拡張機能に付与されます。選択した証明書のみが返されます。false の場合、拡張機能が(自動または手動で)アクセスを許可されているすべての証明書にリストが縮小されます。
-
request
このリクエストに一致する証明書のみが返されます。
VerificationDetails
プロパティ
-
hostname
文字列
証明書を検証するサーバーのホスト名(例:
serverCertificateChain
を提示したサーバー。 -
serverCertificateChain
ArrayBuffer[]
各チェーン エントリは X.509 証明書の DER エンコードでなければならず、最初のエントリはサーバー証明書でなければならず、各エントリは先行するエントリを証明する必要があります。
VerificationResult
プロパティ
-
debug_errors
string[]
信頼性の検証で不合格だった場合、この配列には基盤となるネットワーク レイヤから報告されたエラーが含まれます。それ以外の場合、この配列は空です。
注: このリストはデバッグのみを目的としており、関連するエラーがすべて含まれているとは限りません。返されるエラーは、この API の将来のリビジョンで変更される可能性があります。また、上位互換性や下位互換性は保証されません。
-
trusted
ブール値
信頼検証の結果。指定された検証の詳細に対する信頼が確立できた場合は true、なんらかの理由で信頼が拒否された場合は false です。
メソッド
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
platformKeys.subtleCrypto
で使用する certificate
の鍵ペアを callback
に渡します。
パラメータ
-
証明書
ArrayBuffer
selectClientCertificates
から返されるMatch
の証明書。 -
パラメータ
オブジェクト
鍵自体によって固定されたパラメータに加えて、署名/ハッシュ アルゴリズム パラメータを決定します。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" } }
。署名関数は PKCS#1 v1.5 のパディングを適用しますが、指定されたデータをハッシュ化しません。現在、このメソッドは「RSASSA-PKCS1-v1_5」および「ECDSA」学習します。
-
callback
関数
callback
パラメータは次のようになります。(publicKey: object, privateKey?: object) => void
-
publicKey
オブジェクト
-
privateKey
オブジェクト(省略可)
この拡張機能がアクセスできない場合は、
null
である可能性があります。
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
platformKeys.subtleCrypto
で使用するために publicKeySpkiDer
で識別される鍵ペアを callback
に渡します。
パラメータ
-
publicKeySpkiDer
ArrayBuffer
DER でエンコードされた X.509 SubjectPublicKeyInfo。例:format="spki" を指定して WebCrypto の exportKey 関数を呼び出します。
-
パラメータ
オブジェクト
鍵自体によって固定されるパラメータに加えて、署名パラメータとハッシュ アルゴリズム パラメータを提供します。WebCrypto の importKey 関数と同じパラメータを使用できます。次に例を示します。RSASSA-PKCS1-v1_5 鍵の場合は
RsaHashedImportParams
。RSASSA-PKCS1-v1_5 鍵の場合は、「hash」も渡す必要があります。パラメータ{ "hash": { "name": string } }
。「ハッシュ」パラメータは、署名前のダイジェスト オペレーションで使用されるハッシュ アルゴリズムの名前を表します。「none」を渡したり、として渡されます。この場合、符号関数は PKCS#1 v1.5 のパディングを適用しますが、指定されたデータをハッシュ化しません。現在、このメソッドは「ECDSA」名前付き曲線 P-256 と「RSASSA-PKCS1-v1_5」を使用したアルゴリズム「none」、「SHA-1」、「SHA-256」、「SHA-384」、「SHA-512」のいずれかのハッシュ アルゴリズムを持つアルゴリズムです。
-
callback
関数
callback
パラメータは次のようになります。(publicKey: object, privateKey?: object) => void
-
publicKey
オブジェクト
-
privateKey
オブジェクト(省略可)
この拡張機能がアクセスできない場合は、
null
である可能性があります。
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
このメソッドは、プラットフォームで認識され、request
と一致し、拡張機能が証明書とその秘密鍵にアクセスする権限を持つクライアント証明書をリストからフィルタします。interactive
が true の場合、ユーザーはダイアログが表示され、一致する証明書の中から証明書を選択して拡張機能に証明書へのアクセス権を付与できます。選択またはフィルタしたクライアント証明書が callback
に渡されます。
パラメータ
戻り値
-
Promise<Match[]>
Chrome 121 以降Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。
subtleCrypto()
chrome.platformKeys.subtleCrypto()
この拡張機能で利用可能なクライアント証明書の鍵に対する暗号オペレーションを可能にする、WebCrypto の SubtleCrypto の実装。
戻り値
-
object |未定義
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
プラットフォームの信頼設定に従って、details.serverCertificateChain
が details.hostname
に対して信頼できるかどうかを確認します。注: 信頼性検証の実際の動作は完全には指定されておらず、今後変更される可能性があります。API 実装では、証明書の有効期限の検証、証明書のパスの検証、既知の CA による信頼のチェックを行います。この実装では、EKU の serverAuth を尊重し、サブジェクトの代替名をサポートすることになっています。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(result: VerificationResult) => void
-
件の結果
-
戻り値
-
Promise<VerificationResult>
Chrome 121 以降Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。