ब्यौरा
इस एपीआई का इस्तेमाल करके, प्लैटफ़ॉर्म को सर्टिफ़िकेट दिखाएं. प्लैटफ़ॉर्म, टीएलएस की पुष्टि करने के लिए इन सर्टिफ़िकेट का इस्तेमाल कर सकता है.
अनुमतियां
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
हैश[]
इस सर्टिफ़िकेट के लिए काम करने वाले सभी हैश पर सेट होना चाहिए. इस एक्सटेंशन से सिर्फ़ इनमें से किसी एक हैश एल्गोरिदम से कैलकुलेट किए गए डाइजेस्ट के हस्ताक्षर मांगे जाएंगे. यह हैश की प्राथमिकता के घटते क्रम में होना चाहिए.
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
स्ट्रिंग ज़रूरी नहीं है
उपयोगकर्ता से मिला कोड. अगर उपयोगकर्ता ने डायलॉग बॉक्स बंद कर दिया है या कोई दूसरी गड़बड़ी हुई है, तो यह खाली होगा.
ReportSignatureDetails
प्रॉपर्टी
-
गड़बड़ी
"GENERAL_ERROR"
ज़रूरी नहींहस्ताक्षर जनरेट करते समय हुई गड़बड़ी, अगर कोई हो.
-
signRequestId
संख्या
onSignatureRequested
इवेंट से मिला अनुरोध आइडेंटिफ़ायर. -
signature
ArrayBuffer ज़रूरी नहीं है
अगर हस्ताक्षर जनरेट हो जाता है, तो हस्ताक्षर.
RequestPinDetails
प्रॉपर्टी
-
attemptsLeft
number ज़रूरी नहीं
कोशिशों की संख्या. यह जानकारी इसलिए दी जाती है, ताकि कोई भी यूज़र इंटरफ़ेस (यूआई) उपयोगकर्ता को यह जानकारी दिखा सके. Chrome को यह लागू करने की ज़रूरत नहीं है. इसके बजाय, पिन करने के अनुरोधों की संख्या ज़्यादा होने पर, एक्सटेंशन को stopPinRequest को errorType = MAX_ATTEMPTS_EXCEEDED के साथ कॉल करना चाहिए.
-
errorType
PinRequestErrorType ज़रूरी नहीं है
उपयोगकर्ता को दिखाया गया गड़बड़ी का टेंप्लेट. अगर पिछला अनुरोध पूरा नहीं हो पाया है, तो यह सेट किया जाना चाहिए. इससे उपयोगकर्ता को अनुरोध पूरा न होने की वजह की जानकारी मिलती है.
-
requestType
PinRequestType ज़रूरी नहीं है
किस तरह के कोड का अनुरोध किया गया है. डिफ़ॉल्ट रूप से, पिन का इस्तेमाल किया जाता है.
-
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,
callback?: function,
)
इसे onSignatureRequested
के जवाब के तौर पर कॉल किया जाना चाहिए.
एक्सटेंशन को हर onSignatureRequested
इवेंट के लिए, इस फ़ंक्शन को कॉल करना होगा. एपीआई लागू करने की प्रोसेस कुछ समय बाद इस कॉल का इंतज़ार करना बंद कर देगी और इस फ़ंक्शन को कॉल करने पर, टाइम आउट की गड़बड़ी का जवाब देगी.
पैरामीटर
-
विवरण
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 96 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
requestPin()
chrome.certificateProvider.requestPin(
details: RequestPinDetails,
callback?: function,
)
उपयोगकर्ता से पिन का अनुरोध करता है. एक बार में सिर्फ़ एक अनुरोध किया जा सकता है. किसी दूसरे फ़्लो के चलने के दौरान किए गए अनुरोध अस्वीकार कर दिए जाते हैं. अगर कोई दूसरा फ़्लो चल रहा है, तो बाद में कोशिश करने की ज़िम्मेदारी एक्सटेंशन की होती है.
पैरामीटर
-
विवरण
इसमें, अनुरोध किए गए डायलॉग की जानकारी होती है.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(details?: PinResponseDetails) => void
-
विवरण
PinResponseDetails ज़रूरी नहीं
-
रिटर्न
-
Promise<PinResponseDetails | undefined>
Chrome 96 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
setCertificates()
chrome.certificateProvider.setCertificates(
details: SetCertificatesDetails,
callback?: function,
)
ब्राउज़र में इस्तेमाल करने के लिए, सर्टिफ़िकेट की सूची सेट करता है.
एक्सटेंशन को शुरू करने के बाद और फ़िलहाल उपलब्ध सर्टिफ़िकेट के सेट में होने वाले हर बदलाव पर, इस फ़ंक्शन को कॉल करना चाहिए. जब भी यह इवेंट मिलेगा, तब एक्सटेंशन को इस फ़ंक्शन को कॉल करना चाहिए.onCertificatesUpdateRequested
पैरामीटर
-
विवरण
सेट किए जाने वाले सर्टिफ़िकेट. अमान्य सर्टिफ़िकेट को अनदेखा कर दिया जाएगा.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 96 और उसके बाद के वर्शनमेनिफ़ेस्ट के तीसरे और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
stopPinRequest()
chrome.certificateProvider.stopPinRequest(
details: StopPinRequestDetails,
callback?: function,
)
requestPin
फ़ंक्शन से शुरू किए गए पिन करने के अनुरोध को रोकता है.
पैरामीटर
-
विवरण
इसमें अनुरोध फ़्लो को रोकने की वजह के बारे में जानकारी होती है.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 96 और उसके बाद के वर्शनमेनिफ़ेस्ट के V3 और उसके बाद के वर्शन में, प्रॉमिस का इस्तेमाल किया जा सकता है. हालांकि, पुराने सिस्टम के साथ काम करने की सुविधा के लिए कॉलबैक उपलब्ध कराए गए हैं. एक ही फ़ंक्शन कॉल में, दोनों का इस्तेमाल नहीं किया जा सकता. प्रोमिस, कॉलबैक में पास किए गए टाइप के साथ ही रिज़ॉल्व होता है.
इवेंट
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
-