chrome.platformKeys

refresh date: 2026-09-25 robots: noindex

Описание

Используйте API chrome.platformKeys, чтобы получить доступ к сертификатам клиента, управляемым платформой. Если пользователь или правило предоставляет разрешение, расширение может использовать такой сертификат в своем пользовательском протоколе аутентификации. Например, это позволяет использовать управляемые платформой сертификаты в сторонних VPN (см. chrome.vpnProvider).

Разрешения

platformKeys

Доступность

Chrome 45 и более поздних версий Только ChromeOS

Типы

ClientCertificateRequest

Свойства

  • certificateAuthorities

    ArrayBuffer[]

    Список уникальных имен центров сертификации, разрешенных сервером. Каждая запись должна быть DistinguishedName X.509 в кодировке DER.

  • certificateTypes

    Это поле содержит список типов запрашиваемых сертификатов, отсортированных в порядке предпочтения сервера. Будут получены только сертификаты, тип которых указан в этом списке. Если список certificateTypes пуст, будут возвращены сертификаты всех типов.

ClientCertificateType

Перечисление

"rsaSign"

"ecdsaSign"

Match

Свойства

  • сертификат

    ArrayBuffer

    Кодировка DER сертификата X.509.

  • keyAlgorithm

    Объект

    KeyAlgorithm сертифицированного ключа. Содержит параметры алгоритма, присущие ключу сертификата (например, длину ключа). Другие параметры, например хеш-функция, используемая функцией подписи, не включаются.

SelectDetails

Свойства

  • clientCerts

    ArrayBuffer[] необязательный

    Если он указан, selectClientCertificates работает с этим списком. В противном случае расширение получает список всех сертификатов из хранилищ сертификатов платформы, доступных для этого расширения. Записи, на которые у расширения нет разрешения или которые не соответствуют запросу, удаляются.

  • интерактивный

    Логическое значение

    Если задано значение True, пользователю будет показан отфильтрованный список, из которого он сможет вручную выбрать сертификат и тем самым предоставить расширению доступ к сертификатам и ключам. Будут возвращены только выбранные сертификаты. Если задано значение False, в списке остаются только сертификаты, к которым расширению предоставлен доступ (автоматически или вручную).

  • Будут возвращены только сертификаты, соответствующие этому запросу.

VerificationDetails

Свойства

  • hostname

    string

    Имя хоста сервера, для которого нужно проверить сертификат, например сервера, предоставившего serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Каждая запись в цепочке должна быть закодирована по стандарту DER сертификата X.509. Первая запись должна быть сертификатом сервера, а каждая последующая запись должна подтверждать предыдущую.

VerificationResult

Свойства

  • debug_errors

    string[]

    Если проверка доверия не удалась, этот массив содержит ошибки, о которых сообщил базовый сетевой уровень. В противном случае массив будет пустым.

    Примечание. Этот список предназначен только для отладки и может не содержать всех ошибок. Возвращаемые ошибки могут измениться в будущих версиях этого 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" } }. Функция подписи применит дополнение PKCS#1 v1.5, но не будет хешировать предоставленные данные.

    В настоящее время этот метод поддерживает только алгоритмы RSASSA-PKCS1-v1_5 и ECDSA.

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (publicKey: object, privateKey?: object) => void

    • publicKey

      Объект

    • privateKey

      Объект (необязательно)

      Если у расширения нет доступа к URL, значением будет null.

getKeyPairBySpki()

Chrome 85 и более поздних версий;
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Передает пару ключей, идентифицированную publicKeySpkiDer, для использования с platformKeys.subtleCrypto в callback.

Параметры

  • publicKeySpkiDer

    ArrayBuffer

    Закодированный по правилам DER объект SubjectPublicKeyInfo стандарта X.509, полученный, например, путем вызова функции exportKey WebCrypto с параметром format="spki".

  • Параметры

    Объект

    Предоставляет параметры алгоритма подписи и хеширования в дополнение к тем, которые фиксируются самим ключом. Принимаются те же параметры, что и в функции importKey WebCrypto, например RsaHashedImportParams для ключа RSASSA-PKCS1-v1_5. Для ключей RSASSA-PKCS1-v1_5 также нужно передать параметр hash { "hash": { "name": string } }. Параметр hash представляет собой название алгоритма хеширования, который будет использоваться в операции дайджеста перед подписью. В качестве названия хеша можно передать "none". В этом случае функция подписи применит дополнение PKCS#1 v1.5, но не будет хешировать данные.

    В настоящее время этот метод поддерживает алгоритм ECDSA с именованной кривой P-256 и алгоритм RSASSA-PKCS1-v1_5 с одним из алгоритмов хеширования: none, SHA-1, SHA-256, SHA-384 и SHA-512.

  • обратный вызов

    function

    Параметр callback выглядит следующим образом:

    (publicKey: object, privateKey?: object) => void

    • publicKey

      Объект

    • privateKey

      Объект (необязательно)

      Если у расширения нет доступа к URL, значением будет null.

selectClientCertificates()

Promise
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)
: Promise<Match[]>

Этот метод фильтрует из списка сертификатов клиентов те, которые известны платформе, соответствуют request и для которых у расширения есть разрешение на доступ к сертификату и его закрытому ключу. Если для правила interactive задано значение True, пользователю предлагается диалоговое окно, в котором он может выбрать подходящие сертификаты и предоставить расширению доступ к ним. Выбранные или отфильтрованные сертификаты клиентов будут переданы в callback.

Параметры

  • подробные сведения
  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    (matches: Match[]) => void

    • соответствует

      Список сертификатов, соответствующих запросу, на которые у расширения есть разрешение и которые были выбраны пользователем (если для параметра interactive задано значение true).

Возвраты

  • Promise<Match[]>

    Chrome 121 и более поздних версий

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Реализация SubtleCrypto WebCrypto, которая позволяет выполнять криптографические операции с ключами сертификатов клиента, доступных этому расширению.

Возвраты

  • object | undefined

verifyTLSServerCertificate()

Promise
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)
: Promise<VerificationResult>

Проверяет, можно ли доверять details.serverCertificateChain для details.hostname в соответствии с настройками доверия платформы. Примечание. Фактическое поведение проверки доверия не определено полностью и может измениться в будущем. Реализация API проверяет срок действия сертификата, путь сертификации и доверие со стороны известного ЦС. Реализация должна учитывать расширенное использование ключа serverAuth и поддерживать альтернативные имена субъектов.

Параметры

  • подробные сведения
  • обратный вызов

    function необязательно

    Параметр callback выглядит следующим образом:

    (result: VerificationResult) => void

Возвраты

  • Chrome 121 и более поздних версий

    Объекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.