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