ब्यौरा
प्लैटफ़ॉर्म से मैनेज किए गए क्लाइंट सर्टिफ़िकेट ऐक्सेस करने के लिए, chrome.platformKeys
API का इस्तेमाल करें. अगर उपयोगकर्ता या नीति अनुमति देती है, तो एक्सटेंशन अपने कस्टम पुष्टि करने वाले प्रोटोकॉल में इस तरह के सर्टिफ़िकेट का इस्तेमाल कर सकता है. उदाहरण के लिए, इससे तीसरे पक्ष के वीपीएन में प्लैटफ़ॉर्म मैनेज किए गए सर्टिफ़िकेट का इस्तेमाल किया जा सकता है (chrome.vpnProvider देखें).
अनुमतियां
platformKeys
उपलब्धता
टाइप
ClientCertificateRequest
प्रॉपर्टी
- certificateAuthorities
ArrayBuffer[]
सर्टिफ़िकेट देने वाली उन संस्थाओं के खास नामों की सूची जिन्हें सर्वर ने अनुमति दी है. हर एंट्री, DER-encoded X.509 DistinguishedName होनी चाहिए.
- certificateTypes
यह फ़ील्ड, अनुरोध किए गए सर्टिफ़िकेट के टाइप की सूची है. इसे सर्वर की पसंद के हिसाब से क्रम में लगाया गया है. सिर्फ़ इस सूची में शामिल टाइप के सर्टिफ़िकेट वापस पाए जाएंगे. हालांकि, अगर
certificateTypes
खाली सूची है, तो किसी भी तरह के सर्टिफ़िकेट दिखाए जाएंगे.
ClientCertificateType
Enum
"rsaSign"
"ecdsaSign"
Match
प्रॉपर्टी
- सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट का DER एन्कोडिंग.
- keyAlgorithm
ऑब्जेक्ट
सर्टिफ़ाइड कुंजी का KeyAlgorithm. इसमें एल्गोरिदम के ऐसे पैरामीटर होते हैं जो सर्टिफ़िकेट की कुंजी के लिए ज़रूरी होते हैं. जैसे, कुंजी की लंबाई. हस्ताक्षर फ़ंक्शन के लिए इस्तेमाल किए गए हैश फ़ंक्शन जैसे अन्य पैरामीटर शामिल नहीं किए जाते.
SelectDetails
प्रॉपर्टी
- clientCerts
ArrayBuffer[] ज़रूरी नहीं है
अगर यह सूची दी जाती है, तो
selectClientCertificates
इस सूची के हिसाब से काम करता है. इसके अलावा, यह प्लैटफ़ॉर्म के सर्टिफ़िकेट स्टोर से उन सभी सर्टिफ़िकेट की सूची हासिल करता है जो इस एक्सटेंशन के लिए उपलब्ध हैं. जिन एंट्री के लिए एक्सटेंशन के पास अनुमति नहीं है या जो अनुरोध से मेल नहीं खाती हैं उन्हें हटा दिया जाता है. - इंटरैक्टिव
बूलियन
अगर यह वैल्यू सही है, तो उपयोगकर्ता को फ़िल्टर की गई सूची दिखाई जाती है. इससे वह मैन्युअल तरीके से कोई सर्टिफ़िकेट चुन सकता है. साथ ही, एक्सटेंशन को सर्टिफ़िकेट और कुंजियों का ऐक्सेस दे सकता है. सिर्फ़ चुने गए सर्टिफ़िकेट वापस लाए जाएंगे. अगर यह फ़ील्ड false पर सेट है, तो सूची में सिर्फ़ वे सर्टिफ़िकेट दिखेंगे जिन्हें एक्सटेंशन को ऐक्सेस करने की अनुमति मिली है. यह अनुमति, अपने-आप या मैन्युअल तरीके से मिली हो सकती है.
- CANNOT TRANSLATE
सिर्फ़ वे सर्टिफ़िकेट दिखाए जाएंगे जो इस अनुरोध से मेल खाते हैं.
VerificationDetails
प्रॉपर्टी
- hostname
स्ट्रिंग
उस सर्वर का होस्टनेम जिसके लिए सर्टिफ़िकेट की पुष्टि करनी है. उदाहरण के लिए, जिस सर्वर ने
serverCertificateChain
दिखाया है. - serverCertificateChain
ArrayBuffer[]
चेन की हर एंट्री, X.509 सर्टिफ़िकेट की DER एन्कोडिंग होनी चाहिए. पहली एंट्री, सर्वर सर्टिफ़िकेट होनी चाहिए. साथ ही, हर एंट्री में उससे पहले वाली एंट्री की पुष्टि होनी चाहिए.
VerificationResult
प्रॉपर्टी
- debug_errors
string[]
अगर भरोसे की पुष्टि नहीं हो पाती है, तो इस कलेक्शन में नेटवर्क लेयर से मिली गड़बड़ियां शामिल होती हैं. ऐसा न होने पर, यह कैटगरी खाली होती है.
ध्यान दें: यह सूची सिर्फ़ डीबग करने के लिए है. ऐसा हो सकता है कि इसमें सभी ज़रूरी गड़बड़ियां शामिल न हों. इस एपीआई के आने वाले वर्शन में, गड़बड़ियों के बारे में दी गई जानकारी बदल सकती है. साथ ही, यह ज़रूरी नहीं है कि यह जानकारी, एपीआई के पुराने या नए वर्शन के साथ काम करे.
- भरोसेमंद
बूलियन
भरोसेमंद होने की पुष्टि का नतीजा: अगर पुष्टि के लिए दी गई जानकारी के आधार पर, भरोसेमंद होने की पुष्टि की जा सकती है, तो यह वैल्यू 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
ऑब्जेक्ट
- privateKey
object ज़रूरी नहीं है
अगर इस एक्सटेंशन के पास इसका ऐक्सेस नहीं है, तो हो सकता है कि यह
null
हो.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
यह कुकी, publicKeySpkiDer
से पहचाने गए मुख्य जोड़े को callback
को पास करती है, ताकि इसका इस्तेमाल platformKeys.subtleCrypto
के साथ किया जा सके.
पैरामीटर
- publicKeySpkiDer
ArrayBuffer
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
ऑब्जेक्ट
- privateKey
object ज़रूरी नहीं है
अगर इस एक्सटेंशन के पास इसका ऐक्सेस नहीं है, तो हो सकता है कि यह
null
हो.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
): Promise<Match[]>
यह तरीका, क्लाइंट सर्टिफ़िकेट की सूची में से उन सर्टिफ़िकेट को फ़िल्टर करता है जिनके बारे में प्लैटफ़ॉर्म को पता है, जो request
से मेल खाते हैं, और जिनके लिए एक्सटेंशन के पास सर्टिफ़िकेट और उसके निजी पासकोड को ऐक्सेस करने की अनुमति है. अगर interactive
की वैल्यू सही है, तो उपयोगकर्ता को एक डायलॉग बॉक्स दिखेगा. इसमें वह मिलते-जुलते सर्टिफ़िकेट में से कोई एक चुन सकता है. साथ ही, एक्सटेंशन को सर्टिफ़िकेट का ऐक्सेस दे सकता है. चुने गए/फ़िल्टर किए गए क्लाइंट सर्टिफ़िकेट, callback
को पास किए जाएंगे.
पैरामीटर
- विवरण
रिटर्न
-
Promise<Match[]>
Chrome 121 या इसके बाद के वर्शन
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
WebCrypto के SubtleCrypto का एक ऐसा वर्शन जो इस एक्सटेंशन के लिए उपलब्ध क्लाइंट सर्टिफ़िकेट की कुंजियों पर क्रिप्टो ऑपरेशन की अनुमति देता है.
रिटर्न
-
object | undefined
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): Promise<VerificationResult>
इस कुकी से यह पता चलता है कि प्लैटफ़ॉर्म की ट्रस्ट सेटिंग के मुताबिक, details.hostname
के लिए details.serverCertificateChain
पर भरोसा किया जा सकता है या नहीं. ध्यान दें: भरोसे की पुष्टि करने की प्रोसेस के बारे में पूरी जानकारी नहीं दी गई है. इसमें आने वाले समय में बदलाव हो सकता है. API लागू करने से, सर्टिफ़िकेट की समयसीमा खत्म होने की पुष्टि की जाती है. साथ ही, सर्टिफ़िकेट के पाथ की पुष्टि की जाती है और किसी जाने-माने CA से भरोसे की जांच की जाती है. लागू करने के दौरान, EKU serverAuth का पालन किया जाना चाहिए. साथ ही, इसमें विषय के अन्य नामों का इस्तेमाल किया जा सकता है.
पैरामीटर
- विवरण
रिटर्न
-
Promise<VerificationResult>
Chrome 121 या इसके बाद के वर्शन