Описание
 Используйте API chrome.platformKeys для доступа к клиентским сертификатам, управляемым платформой. Если пользователь или политика предоставляет разрешение, расширение может использовать такой сертификат в своём собственном протоколе аутентификации. Например, это позволяет использовать управляемые платформой сертификаты в сторонних VPN (см. chrome.vpnProvider ).
Разрешения
platformKeysДоступность
Типы
ClientCertificateRequest
Характеристики
- сертификационные органыArrayBuffer[] Список различающихся имён центров сертификации, разрешённых сервером. Каждая запись должна быть представлена в формате X.509 DistinguishedName, закодированном в формате DER. 
- типы сертификатовЭто поле представляет собой список запрошенных типов сертификатов, отсортированный в порядке предпочтения сервера. Будут извлечены только сертификаты того типа, который содержится в этом списке. Однако, если список certificateTypesпуст, будут возвращены сертификаты любого типа.
ClientCertificateType
Перечисление
 "rsaSign"   "ecdsaSign" 
Match
Характеристики
- сертификатArrayBuffer Кодировка DER сертификата X.509. 
- keyAlgorithmобъект Алгоритм KeyAlgorithm сертифицированного ключа. Содержит параметры алгоритма, присущие ключу сертификата (например, длину ключа). Другие параметры, такие как хеш-функция, используемая функцией подписи, не включены. 
SelectDetails
Характеристики
- clientCertsArrayBuffer[] необязательно Если этот параметр задан, функция selectClientCertificatesработает с этим списком. В противном случае получает список всех сертификатов из хранилищ сертификатов платформы, доступных этому расширению. Записи, на которые у расширения нет разрешения или которые не соответствуют запросу, удаляются.
- интерактивныйбулев Если задано значение true, отфильтрованный список предоставляется пользователю для ручного выбора сертификата, что позволяет расширению получить доступ к сертификатам и ключам. Будут возвращены только выбранные сертификаты. Если задано значение false, список сокращается до всех сертификатов, к которым расширению был предоставлен доступ (автоматически или вручную). 
- запросБудут возвращены только сертификаты, соответствующие данному запросу. 
VerificationDetails
Характеристики
- имя хостанить Имя хоста сервера, для которого необходимо проверить сертификат, например, сервер, предоставивший serverCertificateChain.
- serverCertificateChainArrayBuffer[] Каждая запись цепочки должна представлять собой DER-кодировку сертификата X.509, первая запись должна быть сертификатом сервера, и каждая запись должна сертифицировать предыдущую запись. 
VerificationResult
Характеристики
- debug_errorsнить[] Если проверка доверия не пройдена, этот массив содержит ошибки, о которых сообщил базовый сетевой уровень. В противном случае этот массив пуст. Примечание: Этот список предназначен только для отладки и может содержать не все соответствующие ошибки. Возвращаемые ошибки могут измениться в будущих версиях этого API, и их прямая или обратная совместимость не гарантируется. 
- доверенныйбулев Результат проверки доверия: true, если на основании предоставленных данных проверки доверие может быть установлено, и false, если по какой-либо причине доверие отклонено. 
Методы
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
 Передает пару ключей certificate для использования с platformKeys.subtleCrypto в callback . 
Параметры
- сертификатArrayBuffer Сертификат Match, возвращаемыйselectClientCertificates.
- параметрыобъект Определяет параметры алгоритма подписи/хэширования в дополнение к параметрам, фиксированным самим ключом. Принимаются те же параметры, что и для функции importKey в WebCrypto, например, RsaHashedImportParamsдля ключа RSASSA-PKCS1-v1_5 иEcKeyImportParamsдля ключа EC. Кроме того, для ключей 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выглядит так:(publicKey: object, privateKey?: object) => void - publicKeyобъект 
- privateKeyобъект необязательный Может быть nullесли у этого расширения нет к нему доступа.
 
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
 Передает пару ключей, идентифицированную publicKeySpkiDer , для использования с platformKeys.subtleCrypto в callback . 
Параметры
- publicKeySpkiDerArrayBuffer Закодированный в DER ключ X.509 SubjectPublicKeyInfo, полученный, например, путем вызова функции exportKey WebCrypto с format="spki". 
- параметрыобъект Предоставляет параметры алгоритма подписи и хэширования, в дополнение к тем, которые фиксируются самим ключом. Принимаются те же параметры, что и для функции importKey WebCrypto, например, RsaHashedImportParamsдля ключа RSASSA-PKCS1-v1_5. Для ключей RSASSA-PKCS1-v1_5 необходимо также передать параметр "hash"{ "hash": { "name": string } }. Параметр "hash" представляет собой имя алгоритма хэширования, используемого в операции дайджеста перед подписью. Можно передать "none" в качестве имени хэша, в этом случае функция sign применит дополнение PKCS#1 v1.5, но не будет хэшировать данные.В настоящее время этот метод поддерживает алгоритм «ECDSA» с именованной кривой P-256 и алгоритм «RSASSA-PKCS1-v1_5» с одним из алгоритмов хеширования «none», «SHA-1», «SHA-256», «SHA-384» и «SHA-512». 
- перезвонитьфункция Параметр callbackвыглядит так:(publicKey: object, privateKey?: object) => void - publicKeyобъект 
- privateKeyобъект необязательный Может быть nullесли у этого расширения нет к нему доступа.
 
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
): Promise<Match[]>
 Этот метод отфильтровывает из списка клиентских сертификатов те, которые известны платформе, соответствуют request и к которым у расширения есть разрешение на доступ к сертификату и его закрытому ключу. Если interactive равно true, пользователю открывается диалоговое окно, в котором он может выбрать подходящий сертификат и предоставить расширению доступ к нему. Выбранные/отфильтрованные клиентские сертификаты будут переданы в callback . 
Параметры
- подробности
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(matches: Match[]) => void - спичкиСписок сертификатов, соответствующих запросу, на которые у расширения есть разрешение и, если interactive, которые были выбраны пользователем.
 
Возврат
- Обещание< Соответствие []> Хром 121+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы. 
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Реализация SubtleCrypto от WebCrypto, позволяющая выполнять криптографические операции с ключами клиентских сертификатов, доступных этому расширению.
Возврат
- объект | неопределенный 
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
): Promise<VerificationResult>
 Проверяет, можно ли доверять details.serverCertificateChain для details.hostname в соответствии с настройками доверия платформы. Примечание: Фактическое поведение проверки доверия не полностью определено и может измениться в будущем. Реализация API проверяет срок действия сертификата, путь сертификации и уровень доверия известного центра сертификации. Предполагается, что реализация будет учитывать EKU serverAuth и поддерживать альтернативные имена субъектов. 
Параметры
- подробности
- перезвонитьфункция необязательна Параметр callbackвыглядит так:(result: VerificationResult) => void - результат
 
Возврат
- Обещание< Результат проверки > Хром 121+- Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.