ब्यौरा
इस एपीआई का इस्तेमाल करके, प्लैटफ़ॉर्म पर सर्टिफ़िकेट उपलब्ध कराएं. प्लैटफ़ॉर्म, इन सर्टिफ़िकेट का इस्तेमाल टीएलएस की पुष्टि करने के लिए कर सकता है.
अनुमतियां
certificateProviderउपलब्धता
कॉन्सेप्ट और इस्तेमाल
ChromeOS को क्लाइंट सर्टिफ़िकेट दिखाने के लिए, इस एपीआई का इस्तेमाल आम तौर पर इन चरणों के मुताबिक किया जाता है:
- एक्सटेंशन,
onCertificatesUpdateRequestedऔरonSignatureRequestedइवेंट के लिए रजिस्टर करता है. - एक्सटेंशन, शुरू होने के बाद सर्टिफ़िकेट की शुरुआती सूची देने के लिए,
setCertificates()को कॉल करता है. - एक्सटेंशन, उपलब्ध सर्टिफ़िकेट की सूची में होने वाले बदलावों पर नज़र रखता है. साथ ही, हर बदलाव के बारे में ब्राउज़र को सूचना देने के लिए,
setCertificates()को कॉल करता है. - टीएलएस हैंडशेक के दौरान, ब्राउज़र को क्लाइंट सर्टिफ़िकेट का अनुरोध मिलता है.
onCertificatesUpdateRequestedइवेंट की मदद से, ब्राउज़र एक्सटेंशन से उन सभी सर्टिफ़िकेट की जानकारी देने के लिए कहता है जो वह फ़िलहाल उपलब्ध कराता है. - एक्सटेंशन,
setCertificates()तरीके का इस्तेमाल करके, फ़िलहाल उपलब्ध सर्टिफ़िकेट की जानकारी देता है. - ब्राउज़र, उपलब्ध सभी सर्टिफ़िकेट को रिमोट होस्ट से मिले क्लाइंट सर्टिफ़िकेट के अनुरोध से मैच करता है. उपयोगकर्ता को एक डायलॉग बॉक्स में, मिलते-जुलते नतीजे दिखाए जाते हैं.
- उपयोगकर्ता कोई सर्टिफ़िकेट चुन सकता है. इसके बाद, वह पुष्टि करने की प्रक्रिया को मंज़ूरी दे सकता है या उसे रद्द कर सकता है.
- अगर उपयोगकर्ता, पुष्टि करने की प्रोसेस को रद्द कर देता है या अनुरोध से कोई सर्टिफ़िकेट मैच नहीं होता है, तो टीएलएस क्लाइंट की पुष्टि करने की प्रोसेस रद्द कर दी जाती है.
- अगर उपयोगकर्ता इस एक्सटेंशन से मिले सर्टिफ़िकेट की मदद से पुष्टि करने की अनुमति देता है, तो ब्राउज़र, एक्सटेंशन से डेटा पर हस्ताक्षर करने का अनुरोध करता है, ताकि टीएलएस हैंडशेक जारी रखा जा सके. अनुरोध को
onSignatureRequestedइवेंट के तौर पर भेजा जाता है. - इस इवेंट में इनपुट डेटा होता है. साथ ही, यह बताता है कि हस्ताक्षर जनरेट करने के लिए किस एल्गोरिदम का इस्तेमाल करना है. इसके अलावा, यह इस एक्सटेंशन से रिपोर्ट किए गए किसी एक सर्टिफ़िकेट के बारे में बताता है. एक्सटेंशन को दिए गए डेटा के लिए, रेफ़रंस के तौर पर दिए गए सर्टिफ़िकेट से जुड़े निजी पासकोड का इस्तेमाल करके एक हस्ताक्षर बनाना होगा. हस्ताक्षर बनाने के लिए, हस्ताक्षर करने से पहले, DigestInfo को जोड़ना और नतीजे को पैड करना ज़रूरी हो सकता है.
- एक्सटेंशन,
reportSignature()तरीके का इस्तेमाल करके, हस्ताक्षर को ब्राउज़र पर वापस भेजता है. अगर हस्ताक्षर का हिसाब नहीं लगाया जा सका, तो तरीके को बिना हस्ताक्षर के कॉल करना होगा. - अगर हस्ताक्षर दिया गया है, तो ब्राउज़र टीएलएस हैंडशेक की प्रोसेस पूरी करता है.
हालांकि, चरणों का असल क्रम अलग हो सकता है. उदाहरण के लिए, अगर सर्टिफ़िकेट को अपने-आप चुनने के लिए एंटरप्राइज़ नीति का इस्तेमाल किया जाता है, तो उपयोगकर्ता से सर्टिफ़िकेट चुनने के लिए नहीं कहा जाएगा. इसके बारे में ज़्यादा जानने के लिए, AutoSelectCertificateForUrls और उपयोगकर्ताओं के लिए Chrome की नीतियां देखें.
एक्सटेंशन में, यह इस स्निपेट जैसा दिख सकता है:
function collectAvailableCertificates() {
// Return all certificates that this Extension can currently provide.
// For example:
return [{
certificateChain: [new Uint8Array(...)],
supportedAlgorithms: ['RSASSA_PKCS1_v1_5_SHA256']
}];
}
// The Extension calls this function every time the currently available list of
// certificates changes, and also once after the Extension's initialization.
function onAvailableCertificatesChanged() {
browser.certificateProvider.setCertificates({
clientCertificates: collectAvailableCertificates()
});
}
function handleCertificatesUpdateRequest(request) {
// Report the currently available certificates as a response to the request
// event. This is important for supporting the case when the Extension is
// unable to detect the changes proactively.
browser.certificateProvider.setCertificates({
certificatesRequestId: request.certificatesRequestId,
clientCertificates: collectAvailableCertificates()
});
}
// Returns a private key handle for the given DER-encoded certificate.
// |certificate| is an ArrayBuffer.
function getPrivateKeyHandle(certificate) {...}
// Digests and signs |input| with the given private key. |input| is an
// ArrayBuffer. |algorithm| is an Algorithm.
// Returns the signature as ArrayBuffer.
function signUnhashedData(privateKey, input, algorithm) {...}
function handleSignatureRequest(request) {
// Look up the handle to the private key of |request.certificate|.
const key = getPrivateKeyHandle(request.certificate);
if (!key) {
// Handle if the key isn't available.
console.error('Key for requested certificate no available.');
// Abort the request by reporting the error to the API.
browser.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
error: 'GENERAL_ERROR'
});
return;
}
const signature = signUnhashedData(key, request.input, request.algorithm);
browser.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
signature: signature
});
}
browser.certificateProvider.onCertificatesUpdateRequested.addListener(
handleCertificatesUpdateRequest);
browser.certificateProvider.onSignatureRequested.addListener(
handleSignatureRequest);
टाइप
Algorithm
इस्तेमाल किए जा सकने वाले क्रिप्टोग्राफ़िक सिग्नेचर एल्गोरिदम के टाइप.
Enum
"RSASSA_PKCS1_v1_5_MD5_SHA1"
यह MD5-SHA-1 हैशिंग के साथ RSASSA PKCS#1 v1.5 सिग्नेचर एल्गोरिदम के बारे में बताता है. एक्सटेंशन को DigestInfo प्रीफ़िक्स नहीं जोड़ना चाहिए. उसे सिर्फ़ PKCS#1 पैडिंग जोड़नी चाहिए. इस एल्गोरिदम का इस्तेमाल नहीं किया जा सकता. Chrome के वर्शन 109 से, इस एल्गोरिदम का अनुरोध कभी नहीं किया जाएगा.
"RSASSA_PKCS1_v1_5_SHA1"
यह SHA-1 हैश फ़ंक्शन के साथ RSASSA PKCS#1 v1.5 सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PKCS1_v1_5_SHA256"
यह SHA-256 हैशिंग फ़ंक्शन के साथ RSASSA PKCS#1 v1.5 सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PKCS1_v1_5_SHA384"
यह SHA-384 हैशिंग फ़ंक्शन के साथ RSASSA PKCS#1 v1.5 सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PKCS1_v1_5_SHA512"
यह SHA-512 हैशिंग फ़ंक्शन के साथ RSASSA PKCS#1 v1.5 सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PSS_SHA256"
यह SHA-256 हैशिंग फ़ंक्शन, MGF1 मास्क जनरेशन फ़ंक्शन, और हैश के साइज़ के सॉल्ट के साथ RSASSA PSS सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PSS_SHA384"
यह SHA-384 हैशिंग फ़ंक्शन, MGF1 मास्क जनरेशन फ़ंक्शन, और हैश के साइज़ के सॉल्ट के साथ RSASSA PSS सिग्नेचर एल्गोरिदम के बारे में बताता है.
"RSASSA_PSS_SHA512"
यह SHA-512 हैशिंग फ़ंक्शन, MGF1 मास्क जनरेशन फ़ंक्शन, और हैश के साइज़ के सॉल्ट के साथ RSASSA PSS सिग्नेचर एल्गोरिदम के बारे में बताता है.
CertificateInfo
प्रॉपर्टी
-
सर्टिफ़िकेट
ArrayBuffer
यह X.509 सर्टिफ़िकेट की डीईआर एन्कोडिंग होनी चाहिए. फ़िलहाल, सिर्फ़ आरएसए कुंजियों के सर्टिफ़िकेट इस्तेमाल किए जा सकते हैं.
-
supportedHashes
हैश[]
इसे इस सर्टिफ़िकेट के लिए, इस्तेमाल किए जा सकने वाले सभी हैश पर सेट किया जाना चाहिए. इस एक्सटेंशन के लिए, सिर्फ़ इनमें से किसी एक हैश एल्गोरिदम का इस्तेमाल करके कैलकुलेट किए गए डाइजेस्ट के हस्ताक्षर मांगे जाएंगे. यह हैश की प्राथमिकता के घटते क्रम में होना चाहिए.
CertificatesUpdateRequest
प्रॉपर्टी
-
certificatesRequestId
संख्या
अनुरोध का आइडेंटिफ़ायर, जिसे
setCertificatesको पास किया जाना है.
ClientCertificateInfo
प्रॉपर्टी
-
certificateChain
ArrayBuffer[]
अरे में X.509 क्लाइंट सर्टिफ़िकेट की डीईआर एन्कोडिंग, पहले एलिमेंट के तौर पर होनी चाहिए.
इसमें सिर्फ़ एक सर्टिफ़िकेट होना चाहिए.
-
supportedAlgorithms
इस सर्टिफ़िकेट के लिए, सभी एल्गोरिदम काम करते हैं. एक्सटेंशन को सिर्फ़ इनमें से किसी एक एल्गोरिदम का इस्तेमाल करके हस्ताक्षर करने के लिए कहा जाएगा.
Error
एक्सटेंशन किस तरह की गड़बड़ियों की जानकारी दे सकता है.
वैल्यू
"GENERAL_ERROR"
Hash
समर्थन नहीं होना या रुकना. Algorithm से बदला जाएगा.
Enum
"MD5_SHA1"
इससे MD5 और SHA1 हैशिंग एल्गोरिदम के बारे में पता चलता है.
"SHA1"
SHA1 हैशिंग एल्गोरिदम के बारे में बताता है.
"SHA256"
SHA256 हैशिंग एल्गोरिदम के बारे में बताता है.
"SHA384"
SHA384 हैशिंग एल्गोरिदम के बारे में बताता है.
"SHA512"
SHA512 हैशिंग एल्गोरिदम के बारे में बताता है.
PinRequestErrorType
requestPin फ़ंक्शन के ज़रिए, उपयोगकर्ता को किस तरह की गड़बड़ियां दिख सकती हैं.
Enum
"INVALID_PIN"
इससे पता चलता है कि पिन अमान्य है.
"INVALID_PUK"
इससे पता चलता है कि पीयूके अमान्य है.
"MAX_ATTEMPTS_EXCEEDED"
इससे पता चलता है कि कोशिश करने की तय सीमा पार हो गई है.
"UNKNOWN_ERROR"
इससे पता चलता है कि गड़बड़ी को ऊपर दिए गए टाइप के हिसाब से नहीं दिखाया जा सकता.
PinRequestType
requestPin फ़ंक्शन की मदद से, एक्सटेंशन जिस तरह के कोड का अनुरोध कर रहा है.
Enum
"PIN"
इससे पता चलता है कि अनुरोध किया गया कोड एक पिन है.
"PUK"
इससे पता चलता है कि अनुरोध किया गया कोड, PUK है.
PinResponseDetails
प्रॉपर्टी
-
userInput
string ज़रूरी नहीं
उपयोगकर्ता ने जो कोड दिया है. अगर उपयोगकर्ता ने डायलॉग बॉक्स बंद कर दिया है या कोई अन्य गड़बड़ी हुई है, तो यह खाली रहता है.
ReportSignatureDetails
प्रॉपर्टी
-
गड़बड़ी
"GENERAL_ERROR"
ज़रूरी नहीं हैसिग्नेचर जनरेट करते समय हुई गड़बड़ी, अगर कोई हो.
-
signRequestId
संख्या
अनुरोध का आइडेंटिफ़ायर, जो
onSignatureRequestedइवेंट से मिला था. -
signature
ArrayBuffer ज़रूरी नहीं
अगर हस्ताक्षर जनरेट हो गया है, तो वह.
RequestPinDetails
प्रॉपर्टी
-
attemptsLeft
number ज़रूरी नहीं
कितनी बार और कोशिश की जा सकती है. यह जानकारी इसलिए दी जाती है, ताकि कोई भी यूज़र इंटरफ़ेस (यूआई) इसे उपयोगकर्ता को दिखा सके. Chrome से इसे लागू करने की उम्मीद नहीं की जाती. इसके बजाय, पिन के अनुरोधों की संख्या ज़्यादा होने पर, एक्सटेंशन को errorType = MAX_ATTEMPTS_EXCEEDED के साथ stopPinRequest को कॉल करना चाहिए.
-
errorType
PinRequestErrorType ज़रूरी नहीं
उपयोगकर्ता को गड़बड़ी का टेंप्लेट दिखाया जाता है. अगर पिछला अनुरोध पूरा नहीं हो पाया, तो इसे सेट किया जाना चाहिए, ताकि उपयोगकर्ता को अनुरोध पूरा न होने की वजह बताई जा सके.
-
requestType
PinRequestType ज़रूरी नहीं
अनुरोध किए गए कोड का टाइप. डिफ़ॉल्ट रूप से, पिन सेट होता है.
-
signRequestId
संख्या
SignRequest में Chrome से मिला आईडी.
SetCertificatesDetails
प्रॉपर्टी
-
certificatesRequestId
number ज़रूरी नहीं
onCertificatesUpdateRequestedके जवाब में कॉल किए जाने पर, इसमेंcertificatesRequestIdकी वैल्यू शामिल होनी चाहिए. अगर ऐसा नहीं है, तो इसे सेट नहीं किया जाना चाहिए. -
clientCertificates
फ़िलहाल उपलब्ध क्लाइंट सर्टिफ़िकेट की सूची.
-
गड़बड़ी
"GENERAL_ERROR"
ज़रूरी नहीं हैसर्टिफ़िकेट एक्सट्रैक्ट करते समय हुई गड़बड़ी, अगर कोई हो. यह गड़बड़ी, उपयोगकर्ता को ज़रूरत पड़ने पर दिखेगी.
SignatureRequest
प्रॉपर्टी
-
एल्गोरिदम
इस्तेमाल किया जाने वाला सिग्नेचर एल्गोरिदम.
-
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की डीईआर एन्कोडिंग. एक्सटेंशन को उससे जुड़े निजी पासकोड का इस्तेमाल करके,
inputपर हस्ताक्षर करना होगा. -
इनपुट
ArrayBuffer
साइन किया जाने वाला डेटा. ध्यान दें कि डेटा हैश नहीं किया गया है.
-
signRequestId
संख्या
अनुरोध का आइडेंटिफ़ायर, जिसे
reportSignatureको पास किया जाना है.
SignRequest
प्रॉपर्टी
-
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की डीईआर एन्कोडिंग. एक्सटेंशन को उससे जुड़े निजी पासकोड का इस्तेमाल करके,
digestपर हस्ताक्षर करना होगा. -
डाइजेस्ट
ArrayBuffer
वह डाइजेस्ट जिस पर हस्ताक्षर करना ज़रूरी है.
-
हैश
यह उस हैश एल्गोरिदम के बारे में बताता है जिसका इस्तेमाल
digestबनाने के लिए किया गया था. -
signRequestId
संख्या
Chrome 57+ browser.* Chrome 148 सेएक्सटेंशन के लिए इस्तेमाल किया जाने वाला यूनीक आईडी, अगर उसे किसी ऐसे तरीके को कॉल करना है जिसके लिए इसकी ज़रूरत है. उदाहरण के लिए, requestPin.
StopPinRequestDetails
प्रॉपर्टी
-
errorType
PinRequestErrorType ज़रूरी नहीं
गड़बड़ी का टेंप्लेट. अगर यह मौजूद है, तो इसे उपयोगकर्ता को दिखाया जाता है. इसका मकसद, फ़्लो के रुकने की वजह बताना है. जैसे, MAX_ATTEMPTS_EXCEEDED.
-
signRequestId
संख्या
SignRequest में Chrome से मिला आईडी.
तरीके
reportSignature()
browser.certificateProvider.reportSignature(
details: ReportSignatureDetails,
): Promise<void>
इसे onSignatureRequested के जवाब के तौर पर कॉल किया जाना चाहिए.
एक्सटेंशन को हर onSignatureRequested इवेंट के लिए, इस फ़ंक्शन को कॉल करना होगा. एपीआई लागू होने के बाद, कुछ समय तक इस कॉल का इंतज़ार किया जाएगा. इसके बाद, इस फ़ंक्शन को कॉल करने पर, टाइम आउट की गड़बड़ी का मैसेज दिखेगा.
पैरामीटर
-
विवरण
रिटर्न
-
वादा<शून्य>
Chrome 96+ Chrome 148 से browser.*
requestPin()
browser.certificateProvider.requestPin(
details: RequestPinDetails,
): Promise<PinResponseDetails | undefined>
उपयोगकर्ता से पिन डालने के लिए कहता है. एक बार में सिर्फ़ एक अनुरोध किया जा सकता है. अगर कोई दूसरा फ़्लो चल रहा है, तो इस दौरान किए गए अनुरोधों को अस्वीकार कर दिया जाता है. अगर कोई दूसरा फ़्लो चल रहा है, तो एक्सटेंशन को बाद में फिर से कोशिश करनी होगी.
पैरामीटर
-
विवरण
इसमें अनुरोध किए गए डायलॉग की जानकारी होती है.
रिटर्न
-
Promise<PinResponseDetails | undefined>
Chrome 96+ Chrome 148 से browser.*यह एक प्रॉमिस दिखाता है, जो उपयोगकर्ता के पिन डालने पर रिज़ॉल्व हो जाता है. अगर डायलॉग बॉक्स का अनुरोध पूरा नहीं हो पाता है, तो गड़बड़ी के साथ अस्वीकार कर देता है. उदाहरण के लिए, उपयोगकर्ता ने डायलॉग बॉक्स को रद्द कर दिया या उसे दिखाने की अनुमति नहीं दी गई.
setCertificates()
browser.certificateProvider.setCertificates(
details: SetCertificatesDetails,
): Promise<void>
यह नीति, ब्राउज़र में इस्तेमाल किए जाने वाले सर्टिफ़िकेट की सूची सेट करती है.
एक्सटेंशन को इस फ़ंक्शन को शुरू करने के बाद और फ़िलहाल उपलब्ध सर्टिफ़िकेट के सेट में हर बदलाव के बाद कॉल करना चाहिए. एक्सटेंशन को भी इस फ़ंक्शन को कॉल करना चाहिए. ऐसा onCertificatesUpdateRequested इवेंट मिलने पर हर बार किया जाना चाहिए.
पैरामीटर
-
विवरण
सेट किए जाने वाले सर्टिफ़िकेट. अमान्य सर्टिफ़िकेट को अनदेखा कर दिया जाएगा.
रिटर्न
-
वादा<शून्य>
Chrome 96+ Chrome 148 से browser.*यह एक प्रॉमिस दिखाता है, जो प्रोसेस पूरी होने पर रिज़ॉल्व हो जाता है.
stopPinRequest()
browser.certificateProvider.stopPinRequest(
details: StopPinRequestDetails,
): Promise<void>
requestPin फ़ंक्शन से शुरू किए गए पिन के अनुरोध को रोकता है.
पैरामीटर
-
विवरण
इसमें अनुरोध के फ़्लो को रोकने की वजह के बारे में जानकारी होती है.
रिटर्न
-
वादा<शून्य>
Chrome 96+ Chrome 148 से browser.*यह एक प्रॉमिस दिखाता है, जो पिन डायलॉग को बंद करने का अनुरोध पूरा होने पर रिज़ॉल्व हो जाता है.
इवेंट
onCertificatesUpdateRequested
browser.certificateProvider.onCertificatesUpdateRequested.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब setCertificates की मदद से सेट किए गए सर्टिफ़िकेट काफ़ी नहीं होते या ब्राउज़र, अपडेट की गई जानकारी का अनुरोध करता है. एक्सटेंशन को सर्टिफ़िकेट की अपडेट की गई सूची और मिले certificatesRequestId के साथ setCertificates को कॉल करना होगा.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(request: CertificatesUpdateRequest) => void
-
CANNOT TRANSLATE
-
onSignatureRequested
browser.certificateProvider.onSignatureRequested.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब ब्राउज़र को setCertificates के ज़रिए इस एक्सटेंशन से मिले सर्टिफ़िकेट का इस्तेमाल करके, किसी मैसेज पर हस्ताक्षर करना होता है.
एक्सटेंशन को सही एल्गोरिदम और निजी पासकोड का इस्तेमाल करके, request से मिले इनपुट डेटा पर हस्ताक्षर करना होगा. इसके बाद, मिले signRequestId के साथ reportSignature को कॉल करके, डेटा को वापस भेजना होगा.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(request: SignatureRequest) => void
-
CANNOT TRANSLATE
-