Opis
Użyj interfejsu API chrome.platformKeys
, aby uzyskać dostęp do certyfikatów klienta zarządzanych przez platformę. Jeśli użytkownik lub zasada przyzna takie uprawnienia, rozszerzenie może używać takiego certyfikatu w swoim własnym protokole uwierzytelniania. Na przykład: umożliwia używanie certyfikatów zarządzanych przez platformę w sieciach VPN innych firm (zobacz chrome.vpnProvider).
Uprawnienia
platformKeys
Dostępność
Typy
ClientCertificateRequest
Właściwości
-
certificateAuthorities
ArrayBuffer[]
Lista wyróżnionych nazw 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, posortowaną w kolejności według preferencji serwera. Zostaną pobrane tylko certyfikaty typów znajdujących się na tej liście. Jeśli jednak
certificateTypes
jest pustą listą, zwracane są certyfikaty dowolnego typu.
ClientCertificateType
Typ wyliczeniowy
"rsaSign"
"ecdsaSign"
Match
Właściwości
-
certyfikat
SlateBuffer
Kodowanie DER certyfikatu X.509.
-
keyAlgorithm
Obiekt
KeyAlgorithm certyfikowanego klucza. Zawiera parametry algorytmu właściwe dla klucza certyfikatu (np. długość klucza). Inne parametry, np. funkcja skrótu używana przez funkcję znaku, nie są uwzględniane.
SelectDetails
Właściwości
-
clientCerts
ArrayBuffer[] opcjonalny
Jeśli jest podana, na tej liście działa
selectClientCertificates
. W przeciwnym razie uzyskuje listę wszystkich certyfikatów z magazynów certyfikatów platformy dostępnych 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 zasada ma wartość „prawda”, użytkownikowi jest przedstawiana lista filtrowana, aby ręcznie wybrać certyfikat i tym samym przyznać rozszerzeniu dostęp do certyfikatów i kluczy. Zwrócone zostaną tylko wybrane certyfikaty. Jeśli ma wartość false (fałsz), lista jest zmniejszona do wszystkich certyfikatów, do których rozszerzenie ma dostęp (automatycznie lub ręcznie).
-
żądanie
Zwrócone zostaną tylko certyfikaty pasujące do tego żądania.
VerificationDetails
Właściwości
-
nazwa hosta
ciąg znaków
Nazwa hosta serwera, dla którego ma zostać zweryfikowany certyfikat, np. serwer, który przedstawił
serverCertificateChain
. -
serverCertificateChain
ArrayBuffer[]
Każdy wpis w łańcuchu musi być kodowaniem DER certyfikatu X.509, pierwszym wpisem musi być certyfikat serwera, a każdy z nich musi potwierdzać poprzedzający wpis.
VerificationResult
Właściwości
-
debug_errors
ciąg znaków[]
Jeśli weryfikacja zaufania się nie udała, ta tablica zawiera błędy zgłoszone przez bazową warstwę sieciową. W przeciwnym razie tablica jest pusta.
Uwaga: ta lista jest przeznaczona tylko do debugowania i może nie zawierać wszystkich istotnych błędów. Zwrócone błędy mogą ulec zmianie w kolejnych wersjach tego interfejsu API i nie ma gwarancji, że będą one zgodne zarówno w przód, jak i w tył.
-
zaufany
wartość logiczna
Wynik weryfikacji zaufania: „true”, jeśli można ustanowić zaufanie dla podanych szczegółów weryfikacji, oraz „false”, jeśli z jakiegokolwiek powodu zaufanie zostało odrzucone.
Metody
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
Przekazuje parę kluczy certificate
na potrzeby użycia z platformKeys.subtleCrypto
do callback
.
Parametry
-
certyfikat
SlateBuffer
Certyfikat
Match
zwrócony przezselectClientCertificates
. -
parametry
Obiekt
Określa parametry algorytmu podpisu i haszowania oprócz parametrów ustalonych przez sam klucz. Akceptowane są te same parametry, co funkcja importKey WebCrypto, np.
RsaHashedImportParams
dla klucza RSASSA-PKCS1-v1_5 iEcKeyImportParams
dla klucza EC. Dodatkowo w przypadku kluczy RSASSA-PKCS1-v1_5 parametr nazwy algorytmu szyfrowania może być określony za pomocą jednej z tych wartości: „none”, „SHA-1”, „SHA-256”, „SHA-384” lub „SHA-512”, np.{"hash": { "name": "none" } }
Funkcja podpisywania zastosuje dopełnienie w formacie PKCS#1 w wersji 1.5, ale nie zaszyfruje danych.Obecnie ta metoda obsługuje tylko format „RSASSA-PKCS1-v1_5” i „ECDSA” za pomocą algorytmów.
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(publicKey: object, privateKey?: object) => void
-
publicKey
Obiekt
-
privateKey
obiekt opcjonalny
Jeśli to rozszerzenie nie ma do niego dostępu, może mieć wartość
null
.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Przekazuje parę kluczy identyfikowaną przez publicKeySpkiDer
na potrzeby użycia z platformKeys.subtleCrypto
do callback
.
Parametry
-
publicKeySpkiDer
SlateBuffer
SubjectPublicKeyInfo z kodowaniem DER, uzyskany np. przez wywołanie funkcji ExportKey w WebCrypto z wartością format="spki".
-
parametry
Obiekt
Udostępnia parametry algorytmu podpisu i szyfrowania, a także parametry ustalone przez sam klucz. Akceptowane są te same parametry, co funkcja importKey WebCrypto, np.
RsaHashedImportParams
dla klucza RSASSA-PKCS1-v1_5. W przypadku kluczy RSASSA-PKCS1-v1_5 trzeba również przekazać „hash”{ "hash": { "name": string } }
. Wartość skrótu reprezentuje nazwę algorytmu szyfrowania, który ma być użyty w operacji skrótu przed znakiem. Można przekazać „brak” jako nazwę skrótu. W takim przypadku funkcja znaku zastosuje dopełnienie w formacie PKCS#1 w wersji 1.5, ale nie zaszyfruje danych.Obecnie ta metoda obsługuje „ECDSA” algorytm z krzywą o nazwie P-256 i „RSASSA-PKCS1-v1_5” z jednym z algorytmów haszujących „none”, „SHA-1”, „SHA-256”, „SHA-384” i „SHA-512”.
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(publicKey: object, privateKey?: object) => void
-
publicKey
Obiekt
-
privateKey
obiekt opcjonalny
Jeśli to rozszerzenie nie ma do niego dostępu, może mieć wartość
null
.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
Ta metoda odfiltrowuje z listy certyfikatów klienta te, które są znane platformie, pasują do atrybutu request
i w przypadku których rozszerzenie ma uprawnienia dostępu do certyfikatu i jego klucza prywatnego. Jeśli interactive
ma wartość prawda, użytkownikowi wyświetla się okno, w którym może wybrać jeden z pasujących certyfikatów i przyznać rozszerzeniu dostęp do certyfikatu. Wybrane/filtrowane certyfikaty klienta zostaną przekazane do: callback
.
Parametry
-
szczegóły
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(matches: Match[]) => void
-
pasuje do
Lista certyfikatów wybranych przez użytkownika, które pasują do żądania, do których rozszerzenie ma uprawnienia oraz, jeśli
interactive
ma wartość prawda.
-
Zwroty
-
Obietnica<dopasowanie[]>
Chrome w wersji 121 lub nowszej .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
Implementacja technologii SubtleCrypto firmy WebCrypto, która umożliwia wykonywanie operacji kryptograficznych na kluczach certyfikatów klienta dostępnych dla tego rozszerzenia.
Zwroty
-
object | nie zdefiniowano
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
Sprawdza, czy platforma details.serverCertificateChain
może być godna zaufania w details.hostname
zgodnie z ustawieniami zaufania platformy. Uwaga: rzeczywisty sposób weryfikacji zaufania nie jest w pełni doprecyzowany i w przyszłości może się zmienić. Implementacja interfejsu API weryfikuje datę ważności certyfikatu, weryfikuje ścieżkę certyfikacyjną oraz sprawdza zaufanie przez znany urząd certyfikacji. Implementacja powinna uwzględniać uwierzytelnianie EKU serverAuth i obsługiwać alternatywne nazwy podmiotów.
Parametry
-
szczegóły
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(result: VerificationResult) => void
-
wynik
-
Zwroty
-
Promise<VerificationResult>
Chrome w wersji 121 lub nowszej .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.