Opis
Użyj interfejsu chrome.platformKeys
API, aby uzyskać dostęp do certyfikatów klienta zarządzanych przez platformę. Jeśli użytkownik lub zasada przyzna te uprawnienia, rozszerzenie może używać takiego certyfikatu w swoim niestandardowym protokole uwierzytelniania. Pozwala to na przykład używać 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
TablicaBuffer[]
Lista wyróżniających się nazw urzędów certyfikacji dozwolonych przez serwer. Każdy wpis musi być zakodowanym w formacie DER formatem X.509 DistinguishedName.
-
certificateTypes
To pole zawiera listę typów żądanych certyfikatów posortowaną według preferencji serwera. Zostaną pobrane tylko certyfikaty typów znajdujących się na tej liście. Jeśli jednak lista
certificateTypes
jest pusta, zwracane będą 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 on parametry algorytmu, które są nieodłącznym elementem klucza certyfikatu (np. długość klucza). Inne parametry, takie jak funkcja skrótu używana przez funkcję podpisu, nie są uwzględniane.
SelectDetails
Właściwości
-
clientCerts
Tablica ArrayBuffer[] opcjonalna
Jeśli została podana,
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 są zgodne z żądaniem, zostaną usunięte. -
interaktywny
boolean
Jeśli ma wartość true (prawda), odfiltrowana lista zostanie wyświetlona użytkownikowi, aby mógł ręcznie wybrać certyfikat, a 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 zostanie ograniczona do wszystkich certyfikatów, do których rozszerzenie ma dostęp (automatycznie lub ręcznie).
-
Poproś
Zwrócone zostaną tylko certyfikaty pasujące do tego żądania.
VerificationDetails
Właściwości
-
nazwa hosta
string,
Nazwa hosta serwera, dla którego ma zostać sprawdzony certyfikat, np. serwer, który przedstawił
serverCertificateChain
. -
serverCertificateChain
TablicaBuffer[]
Każdy wpis w łańcuchu musi być kodowaniem DER certyfikatu X.509, pierwszy wpis musi być certyfikatem serwera, a każdy z nich musi poświadczać poprzedzający wpis.
VerificationResult
Właściwości
-
debug_errors
string[]
Jeśli weryfikacja zaufania się nie powiodła, tablica ta zawiera błędy zgłoszone przez 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ą się zmienić w kolejnych wersjach tego interfejsu API i nie ma gwarancji, że będą zgodne z poprzednią wersją ani wstecznie.
-
zaufane
boolean
Wynik weryfikacji zaufania: ma wartość „prawda”, jeśli można ustalić zaufanie dla danych do weryfikacji, lub „fałsz”, jeśli z jakiegokolwiek powodu zostanie ono odrzucone.
Metody
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
Przekazuje parę kluczy certificate
do użycia z platformKeys.subtleCrypto
do callback
.
Parametry
-
certyfikat
ArrayBuffer
certyfikat
Match
zwrócony przezselectClientCertificates
. -
Parametry
obiekt
Określa parametry algorytmu podpisu/szyfrowania oprócz parametrów ustalonych przez sam klucz. Te same parametry są akceptowane przez funkcję 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żna określić za pomocą jednej z tych wartości: „none”, „SHA-1”, „SHA-256”, „SHA-384” lub „SHA-512”, np.{"hash": { "name": "none" } }
. Funkcja znaku zastosuje następnie dopełnienie PKCS#1 w wersji 1.5, ale nie zaszyfruje podanych danych.Obecnie ta metoda obsługuje wyłącznie algorytmy „RSASSA-PKCS1-v1_5” i „ECDSA”.
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(publicKey: object, privateKey?: object) => void
-
publicKey
obiekt
-
privateKey
obiekt opcjonalnie
Jeśli to rozszerzenie nie ma do niego dostępu, może to być
null
.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Przekazuje parę kluczy zidentyfikowaną przez publicKeySpkiDer
do użycia z platformKeys.subtleCrypto
do callback
.
Parametry
-
publicKeySpkiDer
ArrayBuffer
SubjectPublicKeyInfo w formacie DER z kodowaniem DER, uzyskany np. przez wywołanie funkcji ExportKey programu WebCrypto z parametrem format="spki".
-
Parametry
obiekt
Zawiera parametry podpisu i algorytmu szyfrowania, oprócz tych ustalonych przez sam klucz. Te same parametry są akceptowane przez funkcję importKey WebCrypto, np.
RsaHashedImportParams
w przypadku klucza RSASSA-PKCS1-v1_5. W przypadku kluczy RSASSA-PKCS1-v1_5 trzeba też przekazać parametr „hash”{ "hash": { "name": string } }
. Parametr „hash” reprezentuje nazwę algorytmu szyfrowania, który ma być używany w operacji skrótu przed znakiem. Jako nazwę skrótu można przekazać „none” (brak). W takim przypadku funkcja znaku zastosuje dopełnienie PKCS#1 w wersji 1.5 i nie zaszyfruje podanych danych.Obecnie ta metoda obsługuje algorytm „ECDSA” z algorytmem krzywej nazwanej P-256 i „RSASSA-PKCS1-v1_5” z jednym z algorytmów haszowania: „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 opcjonalnie
Jeśli to rozszerzenie nie ma do niego dostępu, może to być
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 request
i w przypadku których rozszerzenie ma uprawnienia dostępu do certyfikatu i jego klucza prywatnego. Jeśli interactive
ma wartość true (prawda), użytkownik zobaczy okno dialogowe, w którym będzie mógł wybrać jeden z pasujących certyfikatów i przyznać rozszerzeniu dostęp do certyfikatu. Wybrane/filtrowane certyfikaty klienta zostaną przekazane do: callback
.
Parametry
Zwroty
-
Promise<Match[]>
Chrome 121 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
Implementacja pakietu SubtleCrypto firmy WebCrypto, która umożliwia operacje kryptograficzne na kluczach certyfikatów klienta, które są dostępne dla tego rozszerzenia.
Zwroty
-
obiekt | niezdefiniowany
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
Sprawdza, czy details.serverCertificateChain
może być zaufany dla details.hostname
na podstawie ustawień zaufania platformy. Uwaga: rzeczywiste działanie weryfikacji zaufania nie jest w pełni określone i może się zmienić. Implementacja interfejsu API weryfikuje datę ważności certyfikatu, ścieżkę certyfikacji i zaufanie znanego urzędu certyfikacji. Implementacja powinna uwzględniać mechanizm serwera EKU ServerAuth i obsługiwać alternatywne nazwy podmiotów.
Parametry
-
szczegóły
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(result: VerificationResult) => void
-
wynik
-
Zwroty
-
Promise<VerificationResult>
Chrome 121 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.