Описание
Используйте 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
Характеристики
- clientCerts
ArrayBuffer[] необязательно
Если этот параметр задан, функция
selectClientCertificates
работает с этим списком. В противном случае получает список всех сертификатов из хранилищ сертификатов платформы, доступных этому расширению. Записи, на которые у расширения нет разрешения или которые не соответствуют запросу, удаляются. - интерактивный
булев
Если задано значение true, отфильтрованный список предоставляется пользователю для ручного выбора сертификата, что позволяет расширению получить доступ к сертификатам и ключам. Будут возвращены только выбранные сертификаты. Если задано значение false, список сокращается до всех сертификатов, к которым расширению был предоставлен доступ (автоматически или вручную).
- запрос
Будут возвращены только сертификаты, соответствующие данному запросу.
VerificationDetails
Характеристики
- имя хоста
нить
Имя хоста сервера, для которого необходимо проверить сертификат, например, сервер, предоставивший
serverCertificateChain
. - serverCertificateChain
ArrayBuffer[]
Каждая запись цепочки должна представлять собой 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
.
Параметры
- publicKeySpkiDer
ArrayBuffer
Закодированный в 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,
): Promise<Match[]>
Этот метод отфильтровывает из списка клиентских сертификатов те, которые известны платформе, соответствуют request
и к которым у расширения есть разрешение на доступ к сертификату и его закрытому ключу. Если interactive
равно true, пользователю открывается диалоговое окно, в котором он может выбрать подходящий сертификат и предоставить расширению доступ к нему. Выбранные/отфильтрованные клиентские сертификаты будут переданы в callback
.
Параметры
- подробности
Возврат
Обещание< Соответствие []>
Хром 121+
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Реализация SubtleCrypto от WebCrypto, позволяющая выполнять криптографические операции с ключами клиентских сертификатов, доступных этому расширению.
Возврат
объект | неопределенный
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): Promise<VerificationResult>
Проверяет, можно ли доверять details.serverCertificateChain
для details.hostname
в соответствии с настройками доверия платформы. Примечание: Фактическое поведение проверки доверия не полностью определено и может измениться в будущем. Реализация API проверяет срок действия сертификата, путь сертификации и уровень доверия известного центра сертификации. Предполагается, что реализация будет учитывать EKU serverAuth и поддерживать альтернативные имена субъектов.
Параметры
- подробности
Возврат
Обещание< Результат проверки >
Хром 121+