ब्यौरा
इस एपीआई का इस्तेमाल करके, प्लैटफ़ॉर्म को सर्टिफ़िकेट दिखाए जा सकते हैं. प्लैटफ़ॉर्म, टीएलएस की पुष्टि करने के लिए इन सर्टिफ़िकेट का इस्तेमाल कर सकता है.
अनुमतियां
certificateProvider
उपलब्धता
कॉन्सेप्ट और इस्तेमाल
ChromeOS को क्लाइंट सर्टिफ़िकेट दिखाने के लिए, इस एपीआई का इस्तेमाल आम तौर पर इस तरीके से किया जाता है:
- यह एक्सटेंशन,
onCertificatesUpdateRequested
औरonSignatureRequested
इवेंट के लिए रजिस्टर करता है. - सर्टिफ़िकेट की शुरुआती सूची देने के लिए, एक्सटेंशन, शुरू होने के बाद
setCertificates()
को कॉल करता है. - यह एक्सटेंशन, उपलब्ध सर्टिफ़िकेट की सूची में हुए बदलावों पर नज़र रखता है. साथ ही, ऐसे हर बदलाव के बारे में ब्राउज़र को सूचना देने के लिए,
setCertificates()
को कॉल करता है. - TLS हैंडशेक के दौरान, ब्राउज़र को क्लाइंट सर्टिफ़िकेट का अनुरोध मिलता है.
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() {
chrome.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.
chrome.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.
chrome.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
error: 'GENERAL_ERROR'
});
return;
}
const signature = signUnhashedData(key, request.input, request.algorithm);
chrome.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
signature: signature
});
}
chrome.certificateProvider.onCertificatesUpdateRequested.addListener(
handleCertificatesUpdateRequest);
chrome.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 सर्टिफ़िकेट का DER एन्कोडिंग होना चाहिए. फ़िलहाल, सिर्फ़ आरएसए कुंजियों के सर्टिफ़िकेट इस्तेमाल किए जा सकते हैं.
-
supportedHashes
Hash[]
इसे इस सर्टिफ़िकेट के लिए काम करने वाले सभी हैश पर सेट किया जाना चाहिए. यह एक्सटेंशन, सिर्फ़ उन डाइजेस्ट के हस्ताक्षर मांगेगा जिनकी गिनती इन हैश एल्गोरिदम में से किसी एक का इस्तेमाल करके की गई है. यह हैश, प्राथमिकता के घटते क्रम में होना चाहिए.
CertificatesUpdateRequest
प्रॉपर्टी
-
certificatesRequestId
संख्या
अनुरोध का आइडेंटिफ़ायर,
setCertificates
को पास किया जाना चाहिए.
ClientCertificateInfo
प्रॉपर्टी
-
certificateChain
ArrayBuffer[]
ऐरे में, X.509 क्लाइंट सर्टिफ़िकेट का DER एन्कोडिंग, पहले एलिमेंट के तौर पर होना चाहिए.
इसमें सिर्फ़ एक सर्टिफ़िकेट शामिल होना चाहिए.
-
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"
इससे पता चलता है कि 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 optional
अनुरोध किया गया कोड किस तरह का है. डिफ़ॉल्ट रूप से, यह पिन पर सेट होता है.
-
signRequestId
संख्या
SignRequest में Chrome का दिया गया आईडी.
SetCertificatesDetails
प्रॉपर्टी
-
certificatesRequestId
number ज़रूरी नहीं
onCertificatesUpdateRequested
के जवाब में कॉल किए जाने पर, इसमें मिलीcertificatesRequestId
वैल्यू शामिल होनी चाहिए. अगर वैल्यू 'कस्टम' पर सेट नहीं है, तो इसे अनसेट किया जाना चाहिए. -
clientCertificates
फ़िलहाल उपलब्ध क्लाइंट सर्टिफ़िकेट की सूची.
-
गड़बड़ी
"GENERAL_ERROR"
ज़रूरी नहींसर्टिफ़िकेट निकालते समय हुई गड़बड़ी. यह गड़बड़ी, उपयोगकर्ता को सही समय पर दिखेगी.
SignatureRequest
प्रॉपर्टी
-
एल्गोरिदम
इस्तेमाल किया जाने वाला सिग्नेचर एल्गोरिदम.
-
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट का DER एन्कोडिंग. एक्सटेंशन को, उससे जुड़ी निजी कुंजी का इस्तेमाल करके
input
पर हस्ताक्षर करना होगा. -
इनपुट
ArrayBuffer
हस्ताक्षर किया जाने वाला डेटा. ध्यान दें कि डेटा को हैश नहीं किया गया है.
-
signRequestId
संख्या
अनुरोध का आइडेंटिफ़ायर,
reportSignature
को पास किया जाना चाहिए.
SignRequest
प्रॉपर्टी
-
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट का DER एन्कोडिंग. एक्सटेंशन को, उससे जुड़ी निजी कुंजी का इस्तेमाल करके
digest
पर हस्ताक्षर करना होगा. -
डाइजेस्ट
ArrayBuffer
वह डाइजेस्ट जिस पर हस्ताक्षर करना है.
-
हैश
यह उस हैश एल्गोरिदम को दिखाता है जिसका इस्तेमाल करके
digest
बनाया गया था. -
signRequestId
संख्या
Chrome 57 या इसके बाद का वर्शनएक्सटेंशन को इस यूनीक आईडी का इस्तेमाल करना चाहिए.ऐसा तब करना चाहिए, जब उसे किसी ऐसे तरीके को कॉल करने की ज़रूरत हो जिसके लिए इसकी ज़रूरत होती है. जैसे, requestPin.
StopPinRequestDetails
प्रॉपर्टी
-
errorType
PinRequestErrorType ज़रूरी नहीं है
गड़बड़ी वाला टेंप्लेट. अगर यह मौजूद है, तो उपयोगकर्ता को दिखाया जाता है. अगर फ़्लो किसी गड़बड़ी की वजह से रुक गया है, तो इस फ़ील्ड में उसकी वजह शामिल की जाती है. जैसे, MAX_ATTEMPTS_EXCEEDED.
-
signRequestId
संख्या
SignRequest में Chrome का दिया गया आईडी.
तरीके
reportSignature()
chrome.certificateProvider.reportSignature(
details: ReportSignatureDetails,
): Promise<void>
इसे onSignatureRequested
के जवाब के तौर पर कॉल किया जाना चाहिए.
एक्सटेंशन को हर onSignatureRequested
इवेंट के लिए, इस फ़ंक्शन को कॉल करना होगा. एपीआई लागू करने की प्रोसेस, कुछ समय बाद इस कॉल का इंतज़ार करना बंद कर देगी. साथ ही, जब इस फ़ंक्शन को कॉल किया जाएगा, तब टाइमआउट की गड़बड़ी का जवाब देगी.
पैरामीटर
-
विवरण
रिटर्न
-
Promise<void>
Chrome 96 और इसके बाद के वर्शन
requestPin()
chrome.certificateProvider.requestPin(
details: RequestPinDetails,
): Promise<PinResponseDetails | undefined>
यह कुकी, उपयोगकर्ता से पिन का अनुरोध करती है. एक बार में सिर्फ़ एक अनुरोध किया जा सकता है. किसी दूसरे फ़्लो के चालू होने पर किए गए अनुरोधों को अस्वीकार कर दिया जाता है. अगर कोई अन्य फ़्लो चल रहा है, तो एक्सटेंशन को बाद में फिर से कोशिश करनी होगी.
पैरामीटर
-
विवरण
इसमें अनुरोध किए गए डायलॉग के बारे में जानकारी होती है.
रिटर्न
-
Promise<PinResponseDetails | undefined>
Chrome 96 और इसके बाद के वर्शन
setCertificates()
chrome.certificateProvider.setCertificates(
details: SetCertificatesDetails,
): Promise<void>
यह नीति, ब्राउज़र में इस्तेमाल किए जाने वाले सर्टिफ़िकेट की सूची सेट करती है.
एक्सटेंशन को इस फ़ंक्शन को, शुरू होने के बाद और फ़िलहाल उपलब्ध सर्टिफ़िकेट के सेट में हर बदलाव पर कॉल करना चाहिए. जब भी यह इवेंट मिलता है, तो एक्सटेंशन को onCertificatesUpdateRequested
के जवाब में इस फ़ंक्शन को कॉल करना चाहिए.
पैरामीटर
-
विवरण
सेट किए जाने वाले सर्टिफ़िकेट. अमान्य सर्टिफ़िकेट को अनदेखा कर दिया जाएगा.
रिटर्न
-
Promise<void>
Chrome 96 और इसके बाद के वर्शन
stopPinRequest()
chrome.certificateProvider.stopPinRequest(
details: StopPinRequestDetails,
): Promise<void>
यह फ़ंक्शन, requestPin
फ़ंक्शन से शुरू किए गए पिन के अनुरोध को रोकता है.
पैरामीटर
-
विवरण
इस कुकी में अनुरोध के फ़्लो को रोकने की वजह के बारे में जानकारी होती है.
रिटर्न
-
Promise<void>
Chrome 96 और इसके बाद के वर्शन
इवेंट
onCertificatesUpdateRequested
chrome.certificateProvider.onCertificatesUpdateRequested.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब setCertificates
के ज़रिए सेट किए गए सर्टिफ़िकेट काफ़ी नहीं होते या ब्राउज़र अपडेट की गई जानकारी का अनुरोध करता है. एक्सटेंशन को, अपडेट की गई सर्टिफ़िकेट की सूची और मिले हुए certificatesRequestId
के साथ setCertificates
को कॉल करना होगा.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(request: CertificatesUpdateRequest) => void
-
CANNOT TRANSLATE
-
onSignatureRequested
chrome.certificateProvider.onSignatureRequested.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब ब्राउज़र को setCertificates
के ज़रिए इस एक्सटेंशन से मिले सर्टिफ़िकेट का इस्तेमाल करके किसी मैसेज पर हस्ताक्षर करना होता है.
एक्सटेंशन को सही एल्गोरिदम और निजी कुंजी का इस्तेमाल करके, request
से मिले इनपुट डेटा पर हस्ताक्षर करना होगा. साथ ही, मिले हुए signRequestId
के साथ reportSignature
को कॉल करके, इसे वापस भेजना होगा.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(request: SignatureRequest) => void
-
CANNOT TRANSLATE
-