ब्यौरा
प्लैटफ़ॉर्म से मैनेज किए गए क्लाइंट सर्टिफ़िकेट ऐक्सेस करने के लिए, chrome.platformKeys API का इस्तेमाल करें. अगर उपयोगकर्ता या नीति अनुमति देती है, तो एक्सटेंशन अपने कस्टम पुष्टि करने वाले प्रोटोकॉल में इस तरह के सर्टिफ़िकेट का इस्तेमाल कर सकता है. उदाहरण के लिए, इससे तीसरे पक्ष के वीपीएन में प्लैटफ़ॉर्म मैनेज किए गए सर्टिफ़िकेट का इस्तेमाल किया जा सकता है (chrome.vpnProvider देखें).
अनुमतियां
platformKeysउपलब्धता
टाइप
ClientCertificateRequest
प्रॉपर्टी
- 
    certificateAuthoritiesArrayBuffer[] सर्टिफ़िकेट देने वाली उन संस्थाओं के खास नामों की सूची जिन्हें सर्वर ने अनुमति दी है. हर एंट्री, DER-encoded X.509 DistinguishedName होनी चाहिए. 
- 
    certificateTypesयह फ़ील्ड, अनुरोध किए गए सर्टिफ़िकेट के टाइप की सूची है. इसे सर्वर की पसंद के हिसाब से क्रम में लगाया गया है. सिर्फ़ इस सूची में शामिल टाइप के सर्टिफ़िकेट वापस पाए जाएंगे. हालांकि, अगर certificateTypesखाली सूची है, तो किसी भी तरह के सर्टिफ़िकेट दिखाए जाएंगे.
ClientCertificateType
Enum
"rsaSign" 
 
"ecdsaSign" 
 
Match
प्रॉपर्टी
- 
    सर्टिफ़िकेटArrayBuffer X.509 सर्टिफ़िकेट का DER एन्कोडिंग. 
- 
    keyAlgorithmऑब्जेक्ट सर्टिफ़ाइड कुंजी का KeyAlgorithm. इसमें एल्गोरिदम के ऐसे पैरामीटर होते हैं जो सर्टिफ़िकेट की कुंजी के लिए ज़रूरी होते हैं. जैसे, कुंजी की लंबाई. हस्ताक्षर फ़ंक्शन के लिए इस्तेमाल किए गए हैश फ़ंक्शन जैसे अन्य पैरामीटर शामिल नहीं किए जाते. 
SelectDetails
प्रॉपर्टी
- 
    clientCertsArrayBuffer[] ज़रूरी नहीं है अगर यह सूची दी जाती है, तो selectClientCertificatesइस सूची के हिसाब से काम करता है. इसके अलावा, यह प्लैटफ़ॉर्म के सर्टिफ़िकेट स्टोर से उन सभी सर्टिफ़िकेट की सूची हासिल करता है जो इस एक्सटेंशन के लिए उपलब्ध हैं. जिन एंट्री के लिए एक्सटेंशन के पास अनुमति नहीं है या जो अनुरोध से मेल नहीं खाती हैं उन्हें हटा दिया जाता है.
- 
    इंटरैक्टिवबूलियन अगर यह वैल्यू सही है, तो उपयोगकर्ता को फ़िल्टर की गई सूची दिखाई जाती है. इससे वह मैन्युअल तरीके से कोई सर्टिफ़िकेट चुन सकता है. साथ ही, एक्सटेंशन को सर्टिफ़िकेट और कुंजियों का ऐक्सेस दे सकता है. सिर्फ़ चुने गए सर्टिफ़िकेट वापस लाए जाएंगे. अगर यह फ़ील्ड false पर सेट है, तो सूची में सिर्फ़ वे सर्टिफ़िकेट दिखेंगे जिन्हें एक्सटेंशन को ऐक्सेस करने की अनुमति मिली है. यह अनुमति, अपने-आप या मैन्युअल तरीके से मिली हो सकती है. 
- 
    CANNOT TRANSLATEसिर्फ़ वे सर्टिफ़िकेट दिखाए जाएंगे जो इस अनुरोध से मेल खाते हैं. 
VerificationDetails
प्रॉपर्टी
- 
    hostnameस्ट्रिंग उस सर्वर का होस्टनेम जिसके लिए सर्टिफ़िकेट की पुष्टि करनी है. उदाहरण के लिए, जिस सर्वर ने serverCertificateChainदिखाया है.
- 
    serverCertificateChainArrayBuffer[] चेन की हर एंट्री, X.509 सर्टिफ़िकेट की DER एन्कोडिंग होनी चाहिए. पहली एंट्री, सर्वर सर्टिफ़िकेट होनी चाहिए. साथ ही, हर एंट्री में उससे पहले वाली एंट्री की पुष्टि होनी चाहिए. 
VerificationResult
प्रॉपर्टी
- 
    debug_errorsstring[] अगर भरोसे की पुष्टि नहीं हो पाती है, तो इस कलेक्शन में नेटवर्क लेयर से मिली गड़बड़ियां शामिल होती हैं. ऐसा न होने पर, यह कैटगरी खाली होती है. ध्यान दें: यह सूची सिर्फ़ डीबग करने के लिए है. ऐसा हो सकता है कि इसमें सभी ज़रूरी गड़बड़ियां शामिल न हों. इस एपीआई के आने वाले वर्शन में, गड़बड़ियों के बारे में दी गई जानकारी बदल सकती है. साथ ही, यह ज़रूरी नहीं है कि यह जानकारी, एपीआई के पुराने या नए वर्शन के साथ काम करे. 
- 
    भरोसेमंदबूलियन भरोसेमंद होने की पुष्टि का नतीजा: अगर पुष्टि के लिए दी गई जानकारी के आधार पर, भरोसेमंद होने की पुष्टि की जा सकती है, तो यह वैल्यू true होती है. अगर किसी वजह से भरोसेमंद होने की पुष्टि नहीं की जा सकती, तो यह वैल्यू false होती है. 
तरीके
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
callback को platformKeys.subtleCrypto के साथ इस्तेमाल करने के लिए, certificate का की-वैल्यू पेयर पास करता है.
पैरामीटर
- 
    सर्टिफ़िकेटArrayBuffer selectClientCertificatesनेMatchका सर्टिफ़िकेट वापस कर दिया है.
- 
    पैरामीटरऑब्जेक्ट यह कुंजी के ज़रिए तय किए गए पैरामीटर के अलावा, हस्ताक्षर/हैश एल्गोरिदम के पैरामीटर भी तय करता है. WebCrypto के importKey फ़ंक्शन की तरह ही, इन पैरामीटर को स्वीकार किया जाता है. उदाहरण के लिए, RSASSA-PKCS1-v1_5 कुंजी के लिए RsaHashedImportParamsऔर EC कुंजी के लिएEcKeyImportParams. इसके अलावा, RSASSA-PKCS1-v1_5 कुंजियों के लिए, हैशिंग एल्गोरिदम के नाम वाले पैरामीटर को इनमें से किसी एक वैल्यू के साथ तय किया जा सकता है: "none", "SHA-1", "SHA-256", "SHA-384" या "SHA-512". उदाहरण के लिए,{"hash": { "name": "none" } }. इसके बाद, हस्ताक्षर करने वाला फ़ंक्शन PKCS#1 v1.5 पैडिंग लागू करेगा, लेकिन दिए गए डेटा को हैश नहीं करेगा.फ़िलहाल, यह तरीका सिर्फ़ "RSASSA-PKCS1-v1_5" और "ECDSA" एल्गोरिदम के साथ काम करता है. 
- 
    कॉलबैकफ़ंक्शन callbackपैरामीटर ऐसा दिखता है:(publicKey: object, privateKey?: object) => void - 
    publicKeyऑब्जेक्ट 
- 
    privateKeyobject ज़रूरी नहीं है अगर इस एक्सटेंशन के पास इसका ऐक्सेस नहीं है, तो हो सकता है कि यह nullहो.
 
- 
    
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
यह कुकी, publicKeySpkiDer से पहचाने गए मुख्य जोड़े को callback को पास करती है, ताकि इसका इस्तेमाल platformKeys.subtleCrypto के साथ किया जा सके.
पैरामीटर
- 
    publicKeySpkiDerArrayBuffer DER-एन्कोड किया गया X.509 SubjectPublicKeyInfo. इसे WebCrypto के exportKey फ़ंक्शन को format="spki" के साथ कॉल करके हासिल किया जाता है. 
- 
    पैरामीटरऑब्जेक्ट यह हस्ताक्षर और हैश एल्गोरिदम पैरामीटर उपलब्ध कराता है. इसके अलावा, यह उन पैरामीटर को भी उपलब्ध कराता है जिन्हें कुंजी खुद तय करती है. इसमें वही पैरामीटर स्वीकार किए जाते हैं जो WebCrypto के importKey फ़ंक्शन में स्वीकार किए जाते हैं. जैसे, RSASSA-PKCS1-v1_5 कुंजी के लिए RsaHashedImportParams. RSASSA-PKCS1-v1_5 कुंजियों के लिए, हमें "हैश" पैरामीटर{ "hash": { "name": string } }भी पास करना होगा. "hash" पैरामीटर, हैशिंग एल्गोरिदम के नाम को दिखाता है. इसका इस्तेमाल, हस्ताक्षर से पहले डाइजेस्ट ऑपरेशन में किया जाता है. हैश के नाम के तौर पर "none" पास किया जा सकता है. इस मामले में, हस्ताक्षर करने वाला फ़ंक्शन 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ऑब्जेक्ट 
- 
    privateKeyobject ज़रूरी नहीं है अगर इस एक्सटेंशन के पास इसका ऐक्सेस नहीं है, तो हो सकता है कि यह nullहो.
 
- 
    
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
): Promise<Match[]>
यह तरीका, क्लाइंट सर्टिफ़िकेट की सूची में से उन सर्टिफ़िकेट को फ़िल्टर करता है जिनके बारे में प्लैटफ़ॉर्म को पता है, जो request से मेल खाते हैं, और जिनके लिए एक्सटेंशन के पास सर्टिफ़िकेट और उसके निजी पासकोड को ऐक्सेस करने की अनुमति है. अगर interactive की वैल्यू सही है, तो उपयोगकर्ता को एक डायलॉग बॉक्स दिखेगा. इसमें वह मिलते-जुलते सर्टिफ़िकेट में से कोई एक चुन सकता है. साथ ही, एक्सटेंशन को सर्टिफ़िकेट का ऐक्सेस दे सकता है. चुने गए/फ़िल्टर किए गए क्लाइंट सर्टिफ़िकेट, callback को पास किए जाएंगे.
पैरामीटर
- 
    विवरण
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(matches: Match[]) => void - 
    मैचMatch[] अनुरोध से मेल खाने वाले सर्टिफ़िकेट की सूची. साथ ही, एक्सटेंशन के पास जिन सर्टिफ़िकेट का ऐक्सेस है उनकी सूची. इसके अलावा, अगर interactiveकी वैल्यू सही है, तो उपयोगकर्ता ने जिन सर्टिफ़िकेट को चुना है उनकी सूची.
 
- 
    
रिटर्न
- 
            Promise<Match[]> Chrome 121 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
WebCrypto के SubtleCrypto का एक ऐसा वर्शन जो इस एक्सटेंशन के लिए उपलब्ध क्लाइंट सर्टिफ़िकेट की कुंजियों पर क्रिप्टो ऑपरेशन की अनुमति देता है.
रिटर्न
- 
            object | undefined 
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
): Promise<VerificationResult>
इस कुकी से यह पता चलता है कि प्लैटफ़ॉर्म की ट्रस्ट सेटिंग के मुताबिक, details.hostname के लिए details.serverCertificateChain पर भरोसा किया जा सकता है या नहीं. ध्यान दें: भरोसे की पुष्टि करने की प्रोसेस के बारे में पूरी जानकारी नहीं दी गई है. इसमें आने वाले समय में बदलाव हो सकता है. API लागू करने से, सर्टिफ़िकेट की समयसीमा खत्म होने की पुष्टि की जाती है. साथ ही, सर्टिफ़िकेट के पाथ की पुष्टि की जाती है और किसी जाने-माने CA से भरोसे की जांच की जाती है. लागू करने के दौरान, EKU serverAuth का पालन किया जाना चाहिए. साथ ही, इसमें विषय के अन्य नामों का इस्तेमाल किया जा सकता है.
पैरामीटर
- 
    विवरण
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(result: VerificationResult) => void - 
    नतीजा
 
- 
    
रिटर्न
- 
            Promise<VerificationResult> Chrome 121 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा.