chrome.platformKeys

Описание

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

Разрешения

platformKeys

Доступность

Chrome 45+ только для ChromeOS

Типы

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()

Хром 85+
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 и поддерживать альтернативные имена субъектов.

Параметры

Возврат

  • Обещание <VerificationResult>

    Хром 121+

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