chrome.platformKeys

Opis

Użyj interfejsu API chrome.platformKeys, aby uzyskać dostęp do certyfikatów klienta zarządzanych przez platformę. Jeśli użytkownik lub zasady przyznają uprawnienia, rozszerzenie może używać takiego certyfikatu w swoim niestandardowym protokole uwierzytelniania. Umożliwia to np. korzystanie z certyfikatów zarządzanych przez platformę w usługach VPN innych firm (patrz chrome.vpnProvider).

Uprawnienia

platformKeys

Dostępność

Chrome 45 lub nowszy Tylko ChromeOS

Typy

ClientCertificateRequest

Właściwości

  • certificateAuthorities

    ArrayBuffer[]

    Lista nazw wyróżniających urzędów certyfikacji dozwolonych przez serwer. Każdy wpis musi być nazwą wyróżniającą X.509 zakodowaną w formacie DER.

  • certificateTypes

    To pole zawiera listę typów żądanych certyfikatów posortowanych według preferencji serwera. Pobrane zostaną tylko certyfikaty typu znajdującego się na tej liście. Jeśli jednak certificateTypes jest pustą listą, zostaną zwrócone certyfikaty dowolnego typu.

ClientCertificateType

Typ wyliczeniowy

„rsaSign”

„ecdsaSign”

Match

Właściwości

  • certyfikat

    ArrayBuffer

    Kodowanie DER certyfikatu X.509.

  • keyAlgorithm

    obiekt

    KeyAlgorithm certyfikowanego klucza. Zawiera parametry algorytmu, które są nieodłączne od klucza certyfikatu (np. długość klucza). Nie obejmuje to innych parametrów, takich jak funkcja skrótu używana przez funkcję podpisu.

SelectDetails

Właściwości

  • clientCerts

    ArrayBuffer[] opcjonalny

    Jeśli podano wartość, selectClientCertificates działa na tej liście. W przeciwnym razie pobiera listę wszystkich certyfikatów z magazynów certyfikatów platformy, które są dostępne dla tego rozszerzenia. Wpisy, do których rozszerzenie nie ma uprawnień lub które nie pasują do żądania, są usuwane.

  • interaktywny

    Wartość logiczna

    Jeśli ma wartość „true”, użytkownikowi zostanie wyświetlona przefiltrowana lista, z której może ręcznie wybrać certyfikat, a tym samym przyznać rozszerzeniu dostęp do certyfikatów i kluczy. Zostaną zwrócone tylko wybrane certyfikaty. Jeśli wartość to „false”, lista zostanie ograniczona do wszystkich certyfikatów, do których rozszerzenie ma dostęp (automatyczny lub ręczny).

  • Wyświetlane będą tylko certyfikaty zgodne z tym żądaniem.

VerificationDetails

Właściwości

  • nazwa hosta

    ciąg znaków

    Nazwa hosta serwera, dla którego ma zostać zweryfikowany certyfikat, np. serwera, który przedstawił serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Każdy wpis w łańcuchu musi być kodowaniem DER certyfikatu X.509. Pierwszy wpis musi być certyfikatem serwera, a każdy wpis musi potwierdzać wpis poprzedzający.

VerificationResult

Właściwości

  • debug_errors

    string[]

    Jeśli weryfikacja zaufania się nie powiodła, ta tablica zawiera błędy zgłoszone przez warstwę sieciową. W przeciwnym razie ta tablica jest pusta.

    Uwaga: ta lista jest przeznaczona wyłącznie do debugowania i może nie zawierać wszystkich istotnych błędów. Błędy zwracane przez ten interfejs API mogą ulec zmianie w przyszłych wersjach i nie gwarantują zgodności wstecznej ani przyszłej.

  • zaufane

    Wartość logiczna

    Wynik weryfikacji zaufania: „true”, jeśli na podstawie podanych szczegółów weryfikacji można było ustalić zaufanie, lub „false”, jeśli zaufanie zostało odrzucone z dowolnego powodu.

Metody

getKeyPair()

chrome.platformKeys.getKeyPair(
  certificate: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Przekazuje parę kluczy certificate do użycia w platformKeys.subtleCrypto do callback.

Parametry

  • certyfikat

    ArrayBuffer

    Certyfikat Match zwrócony przez selectClientCertificates.

  • parametry

    obiekt

    Określa parametry algorytmu podpisu lub funkcji skrótu oprócz parametrów ustalonych przez sam klucz. Akceptowane są te same parametry co w przypadku funkcji importKey interfejsu WebCrypto, np. RsaHashedImportParams w przypadku klucza RSASSA-PKCS1-v1_5 i EcKeyImportParams w przypadku klucza EC. W przypadku kluczy RSASSA-PKCS1-v1_5 można też określić parametr nazwy algorytmu mieszającego z jedną z tych wartości: „none”, „SHA-1”, „SHA-256”, „SHA-384” lub „SHA-512”, np. {"hash": { "name": "none" } }. Funkcja podpisywania zastosuje wtedy dopełnienie PKCS#1 v1.5, ale nie wygeneruje skrótu podanych danych.

    Obecnie ta metoda obsługuje tylko algorytmy „RSASSA-PKCS1-v1_5” i „ECDSA”.

  • callback

    funkcja

    Parametr callback wygląda tak:

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

    • publicKey

      obiekt

    • privateKey

      obiekt opcjonalny

      Może to być null, jeśli rozszerzenie nie ma do niego dostępu.

getKeyPairBySpki()

Chrome w wersji 85 lub nowszej
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Przekazuje parę kluczy zidentyfikowaną przez publicKeySpkiDer do użycia z platformKeys.subtleCrypto do callback.

Parametry

  • publicKeySpkiDer

    ArrayBuffer

    Zakodowany w formacie DER obiekt X.509 SubjectPublicKeyInfo, uzyskany np. przez wywołanie funkcji exportKey interfejsu WebCrypto z parametrem format="spki".

  • parametry

    obiekt

    Zawiera parametry algorytmu podpisu i funkcji skrótu, oprócz tych, które są stałe dla samego klucza. Akceptowane są te same parametry co w przypadku funkcji importKey interfejsu WebCrypto, np. RsaHashedImportParams w przypadku klucza RSASSA-PKCS1-v1_5. W przypadku kluczy RSASSA-PKCS1-v1_5 musimy też przekazać parametr „hash” { "hash": { "name": string } }. Parametr „hash” reprezentuje nazwę algorytmu mieszania, który ma być użyty w operacji skrótu przed podpisem. Jako nazwę skrótu można przekazać „none”. W takim przypadku funkcja podpisywania zastosuje do podanych danych dopełnienie PKCS#1 v1.5, ale nie utworzy ich skrótu.

    Obecnie ta metoda obsługuje algorytm „ECDSA” z nazwaną krzywą P-256 oraz algorytm „RSASSA-PKCS1-v1_5” z jednym z algorytmów szyfrowania „none”, „SHA-1”, „SHA-256”, „SHA-384” i „SHA-512”.

  • callback

    funkcja

    Parametr callback wygląda tak:

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

    • publicKey

      obiekt

    • privateKey

      obiekt opcjonalny

      Może to być null, jeśli rozszerzenie nie ma do niego dostępu.

selectClientCertificates()

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

Ta metoda filtruje z listy certyfikatów klienta te, które są znane platformie, pasują do request i do których rozszerzenie ma uprawnienia dostępu do certyfikatu i jego klucza prywatnego. Jeśli interactive ma wartość true, użytkownik zobaczy okno, w którym może wybrać pasujące certyfikaty i przyznać rozszerzeniu dostęp do certyfikatu. Wybrane lub odfiltrowane certyfikaty klienta zostaną przekazane do callback.

Parametry

Zwroty

  • Promise<Match[]>

    Chrome 121 lub nowsza

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Implementacja interfejsu SubtleCrypto WebCrypto, która umożliwia operacje kryptograficzne na kluczach certyfikatów klienta dostępnych dla tego rozszerzenia.

Zwroty

  • object | undefined

verifyTLSServerCertificate()

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

Sprawdza, czy witryna details.serverCertificateChain może być zaufana w przypadku details.hostname zgodnie z ustawieniami zaufania platformy. Uwaga: rzeczywiste działanie weryfikacji zaufania nie jest w pełni określone i może się w przyszłości zmienić. Implementacja interfejsu API sprawdza datę ważności certyfikatu, weryfikuje ścieżkę certyfikacji i sprawdza zaufanie do znanego urzędu certyfikacji. Implementacja powinna uwzględniać rozszerzenie EKU serverAuth i obsługiwać alternatywne nazwy podmiotu.

Parametry

Zwroty