Beschrijving
Gebruik de chrome.platformKeys
API om toegang te krijgen tot clientcertificaten die door het platform worden beheerd. Als de gebruiker of het beleid hiervoor toestemming geeft, kan een extensie een dergelijk certificaat gebruiken in zijn eigen authenticatieprotocol. Dit maakt bijvoorbeeld het gebruik van door het platform beheerde certificaten in VPN's van derden mogelijk (zie chrome.vpnProvider ).
Machtigingen
platformKeys
Beschikbaarheid
Typen
ClientCertificateRequest
Eigenschappen
- certificaatautoriteiten
ArrayBuffer[]
Lijst met DN-namen van certificeringsinstanties die door de server zijn toegestaan. Elk item moet een DER-gecodeerde X.509 DistinguishedName zijn.
- certificaattypen
Dit veld bevat een lijst met de aangevraagde certificaattypen, gesorteerd op basis van de voorkeur van de server. Alleen certificaten van een type dat in deze lijst voorkomt, worden opgehaald. Als
certificateTypes
echter een lege lijst is, worden certificaten van elk type geretourneerd.
ClientCertificateType
Enum
"rsaSign" "ecdsaSign"
Match
Eigenschappen
- certificaat
ArrayBuffer
De DER-codering van een X.509-certificaat.
- sleutelalgoritme
voorwerp
Het sleutelalgoritme van de gecertificeerde sleutel. Dit bevat algoritmeparameters die inherent zijn aan de sleutel van het certificaat (bijvoorbeeld de sleutellengte). Andere parameters, zoals de hashfunctie die door de tekenfunctie wordt gebruikt, zijn niet opgenomen.
SelectDetails
Eigenschappen
- clientCerts
ArrayBuffer[] optioneel
Indien opgegeven, werkt
selectClientCertificates
op deze lijst. Anders wordt de lijst met alle certificaten uit de certificaatopslag van het platform opgehaald die beschikbaar zijn voor deze extensies. Vermeldingen waarvoor de extensie geen toestemming heeft of die niet aan de aanvraag voldoen, worden verwijderd. - interactieve
Booleaanse
Indien true, wordt de gefilterde lijst aan de gebruiker gepresenteerd om handmatig een certificaat te selecteren en daarmee de extensie toegang te verlenen tot het/de certificaat(en) en de sleutel(s). Alleen de geselecteerde certificaten worden geretourneerd. Indien false, wordt de lijst gereduceerd tot alle certificaten waartoe de extensie toegang heeft gekregen (automatisch of handmatig).
- verzoek
Alleen certificaten die aan deze aanvraag voldoen, worden geretourneerd.
VerificationDetails
Eigenschappen
- hostnaam
snaar
De hostnaam van de server waarvoor het certificaat moet worden geverifieerd, bijvoorbeeld de server die de
serverCertificateChain
heeft gepresenteerd. - serverCertificateChain
ArrayBuffer[]
Elk ketenitem moet de DER-codering van een X.509-certificaat zijn, het eerste item moet het servercertificaat zijn en elk item moet het voorgaande item certificeren.
VerificationResult
Eigenschappen
- debug_fouten
snaar[]
Als de vertrouwensverificatie mislukt, bevat deze array de fouten die door de onderliggende netwerklaag zijn gerapporteerd. Anders is deze array leeg.
Let op: Deze lijst is alleen bedoeld voor foutopsporing en bevat mogelijk niet alle relevante fouten. De geretourneerde fouten kunnen in toekomstige revisies van deze API veranderen en er is geen garantie dat ze voorwaarts of achterwaarts compatibel zijn.
- vertrouwd
Booleaanse
Het resultaat van de vertrouwensverificatie: true als het vertrouwen voor de opgegeven verificatiedetails kon worden vastgesteld en false als het vertrouwen om welke reden dan ook wordt afgewezen.
Methoden
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
Geeft het sleutelpaar van het certificate
door voor gebruik met platformKeys.subtleCrypto
aan callback
.
Parameters
- certificaat
ArrayBuffer
Het certificaat van een
Match
dat is geretourneerd doorselectClientCertificates
. - parameters
voorwerp
Bepaalt parameters voor handtekening/hash-algoritmen, naast de parameters die door de sleutel zelf zijn vastgelegd. Dezelfde parameters worden geaccepteerd als door de importKey- functie van WebCrypto, bijvoorbeeld
RsaHashedImportParams
voor een RSASSA-PKCS1-v1_5-sleutel enEcKeyImportParams
voor een EC-sleutel. Daarnaast kan voor RSASSA-PKCS1-v1_5-sleutels de hash-algoritmenaamparameter worden opgegeven met een van de volgende waarden: "none", "SHA-1", "SHA-256", "SHA-384" of "SHA-512", bijvoorbeeld{"hash": { "name": "none" } }
. De sign-functie past dan PKCS#1 v1.5-padding toe, maar hasht de gegeven gegevens niet.Momenteel ondersteunt deze methode alleen de algoritmen "RSASSA-PKCS1-v1_5" en "ECDSA".
- terugbellen
functie
De
callback
ziet er als volgt uit:(publicKey: object, privateKey?: object) => void
- publieke sleutel
voorwerp
- privésleutel
object optioneel
Kan
null
zijn als deze extensie er geen toegang toe heeft.
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
Geeft het sleutelpaar dat door publicKeySpkiDer
is geïdentificeerd voor gebruik met platformKeys.subtleCrypto
door aan callback
.
Parameters
- publicKeySpkiDer
ArrayBuffer
Een DER-gecodeerde X.509 SubjectPublicKeyInfo, verkregen bijvoorbeeld door de exportKey-functie van WebCrypto aan te roepen met format="spki".
- parameters
voorwerp
Biedt handtekening- en hash-algoritmeparameters, naast de parameters die door de sleutel zelf zijn vastgelegd. Dezelfde parameters worden geaccepteerd als door de importKey- functie van WebCrypto, bijvoorbeeld
RsaHashedImportParams
voor een RSASSA-PKCS1-v1_5-sleutel. Voor RSASSA-PKCS1-v1_5-sleutels moeten we ook een hashparameter doorgeven{ "hash": { "name": string } }
. De hashparameter vertegenwoordigt de naam van het hash-algoritme dat in de digest-bewerking moet worden gebruikt vóór een sign. Het is mogelijk om "none" als hashnaam door te geven. In dat geval past de sign-functie PKCS#1 v1.5-padding toe, maar hasht de opgegeven gegevens niet.Momenteel ondersteunt deze methode het "ECDSA"-algoritme met de benoemde curve P-256 en het "RSASSA-PKCS1-v1_5"-algoritme met een van de hash-algoritmen "none", "SHA-1", "SHA-256", "SHA-384" en "SHA-512".
- terugbellen
functie
De
callback
ziet er als volgt uit:(publicKey: object, privateKey?: object) => void
- publieke sleutel
voorwerp
- privésleutel
object optioneel
Kan
null
zijn als deze extensie er geen toegang toe heeft.
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
): Promise<Match[]>
Deze methode filtert uit een lijst met clientcertificaten de certificaten die bekend zijn bij het platform, overeenkomen met request
en waarvoor de extensie toegang heeft tot het certificaat en de bijbehorende privésleutel. Als interactive
is ingesteld op 'true', krijgt de gebruiker een dialoogvenster te zien waarin hij of zij een overeenkomende certificaten kan selecteren en de extensie toegang tot het certificaat kan verlenen. De geselecteerde/gefilterde clientcertificaten worden doorgegeven aan callback
.
Parameters
- details
Retourneren
Belofte< Match []>
Chroom 121+
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Een implementatie van SubtleCrypto van WebCrypto die cryptobewerkingen mogelijk maakt op sleutels van clientcertificaten die beschikbaar zijn voor deze extensie.
Retourneren
object | ongedefinieerd
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): Promise<VerificationResult>
Controleert of details.serverCertificateChain
vertrouwd kan worden voor details.hostname
volgens de vertrouwensinstellingen van het platform. Opmerking: Het daadwerkelijke gedrag van de vertrouwensverificatie is niet volledig gespecificeerd en kan in de toekomst veranderen. De API-implementatie controleert de vervaldatum van certificaten, valideert het certificeringspad en controleert het vertrouwen van een bekende CA. De implementatie moet de EKU serverAuth respecteren en alternatieve onderwerpnamen ondersteunen.
Parameters
- details
Retourneren
Belofte< VerificatieResultaat >
Chroom 121+