chrome.platformKeys

Описание

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

Разрешения

platformKeys

Доступность

Только ChromeOS 45+

Типы

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

Хром 85+
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 .

Параметры

Возврат

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

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

Возврат

  • объект | неопределенный

verifyTLSServerCertificate()

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

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

Параметры

Возврат