chrome.certificateProvider

ब्यौरा

इस एपीआई का इस्तेमाल करके, प्लैटफ़ॉर्म को सर्टिफ़िकेट दिखाए जा सकते हैं. प्लैटफ़ॉर्म, टीएलएस की पुष्टि करने के लिए इन सर्टिफ़िकेट का इस्तेमाल कर सकता है.

अनुमतियां

certificateProvider

उपलब्धता

Chrome 46 या इसके बाद का वर्शन सिर्फ़ ChromeOS के लिए

कॉन्सेप्ट और इस्तेमाल

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

Chrome 86 या इसके बाद का वर्शन

क्रिप्टोग्राफ़िक हस्ताक्षर के लिए इस्तेमाल किए जा सकने वाले एल्गोरिदम के टाइप.

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

Chrome 86 या इसके बाद का वर्शन

प्रॉपर्टी

  • certificatesRequestId

    संख्या

    अनुरोध का आइडेंटिफ़ायर, setCertificates को पास किया जाना चाहिए.

ClientCertificateInfo

Chrome 86 या इसके बाद का वर्शन

प्रॉपर्टी

  • certificateChain

    ArrayBuffer[]

    ऐरे में, X.509 क्लाइंट सर्टिफ़िकेट का DER एन्कोडिंग, पहले एलिमेंट के तौर पर होना चाहिए.

    इसमें सिर्फ़ एक सर्टिफ़िकेट शामिल होना चाहिए.

  • supportedAlgorithms

    इस सर्टिफ़िकेट के लिए काम करने वाले सभी एल्गोरिदम. एक्सटेंशन से सिर्फ़ इन एल्गोरिदम का इस्तेमाल करके हस्ताक्षर करने के लिए कहा जाएगा.

Error

Chrome 86 या इसके बाद का वर्शन

एक्सटेंशन किस तरह की गड़बड़ियों की रिपोर्ट कर सकता है.

मान

"GENERAL_ERROR"

Hash

समर्थन नहीं होना या रुकना. Algorithm से बदला गया.

Enum

"MD5_SHA1"
MD5 और SHA1 हैशिंग एल्गोरिदम के बारे में बताता है.

"SHA1"
SHA1 हैशिंग एल्गोरिदम के बारे में बताता है.

"SHA256"
SHA256 हैशिंग एल्गोरिदम के बारे में बताता है.

"SHA384"
SHA384 हैशिंग एल्गोरिदम के बारे में बताता है.

"SHA512"
SHA512 हैशिंग एल्गोरिदम के बारे में बताता है.

PinRequestErrorType

Chrome 57 या इसके बाद का वर्शन

requestPin फ़ंक्शन के ज़रिए, उपयोगकर्ता को दिखाई जा सकने वाली गड़बड़ियों के टाइप.

Enum

"INVALID_PIN"
इससे पता चलता है कि पिन अमान्य है.

"INVALID_PUK"
इससे पता चलता है कि PUK अमान्य है.

"MAX_ATTEMPTS_EXCEEDED"
इससे पता चलता है कि पुष्टि करने के लिए तय की गई कोशिशों की संख्या पूरी हो गई है.

"UNKNOWN_ERROR"
इससे पता चलता है कि गड़बड़ी को ऊपर दिए गए टाइप से नहीं दिखाया जा सकता.

PinRequestType

Chrome 57 या इसके बाद का वर्शन

requestPin फ़ंक्शन के ज़रिए एक्सटेंशन जिस तरह के कोड का अनुरोध कर रहा है.

Enum

"PIN"
इससे पता चलता है कि अनुरोध किया गया कोड, पिन है.

"PUK"
इससे पता चलता है कि अनुरोध किया गया कोड, PUK है.

PinResponseDetails

Chrome 57 या इसके बाद का वर्शन

प्रॉपर्टी

  • userInput

    string ज़रूरी नहीं है

    उपयोगकर्ता की ओर से दिया गया कोड. अगर उपयोगकर्ता ने डायलॉग बॉक्स बंद कर दिया है या कोई अन्य गड़बड़ी हुई है, तो यह फ़ील्ड खाली होता है.

ReportSignatureDetails

Chrome 86 या इसके बाद का वर्शन

प्रॉपर्टी

  • गड़बड़ी

    "GENERAL_ERROR"
     ज़रूरी नहीं

    अगर हस्ताक्षर जनरेट करते समय कोई गड़बड़ी हुई है, तो उसकी जानकारी.

  • signRequestId

    संख्या

    onSignatureRequested इवेंट के ज़रिए मिला अनुरोध आइडेंटिफ़ायर.

  • signature

    ArrayBuffer ज़रूरी नहीं है

    अगर हस्ताक्षर जनरेट हो गया है, तो हस्ताक्षर.

RequestPinDetails

Chrome 57 या इसके बाद का वर्शन

प्रॉपर्टी

  • attemptsLeft

    number ज़रूरी नहीं

    बची हुई कोशिशों की संख्या. यह जानकारी इसलिए दी जाती है, ताकि कोई भी यूज़र इंटरफ़ेस (यूआई) इस जानकारी को उपयोगकर्ता को दिखा सके. Chrome को इसे लागू नहीं करना चाहिए. इसके बजाय, जब पिन के अनुरोधों की संख्या ज़्यादा हो जाती है, तो एक्सटेंशन को errorType = MAX_ATTEMPTS_EXCEEDED के साथ stopPinRequest को कॉल करना चाहिए.

  • errorType

    PinRequestErrorType ज़रूरी नहीं है

    उपयोगकर्ता को दिखने वाला गड़बड़ी का टेंप्लेट. अगर पिछला अनुरोध पूरा नहीं हो सका है, तो इस पैरामीटर को सेट किया जाना चाहिए. इससे उपयोगकर्ता को अनुरोध पूरा न होने की वजह के बारे में सूचना दी जा सकेगी.

  • requestType

    PinRequestType optional

    अनुरोध किया गया कोड किस तरह का है. डिफ़ॉल्ट रूप से, यह पिन पर सेट होता है.

  • signRequestId

    संख्या

    SignRequest में Chrome का दिया गया आईडी.

SetCertificatesDetails

Chrome 86 या इसके बाद का वर्शन

प्रॉपर्टी

  • certificatesRequestId

    number ज़रूरी नहीं

    onCertificatesUpdateRequested के जवाब में कॉल किए जाने पर, इसमें मिली certificatesRequestId वैल्यू शामिल होनी चाहिए. अगर वैल्यू 'कस्टम' पर सेट नहीं है, तो इसे अनसेट किया जाना चाहिए.

  • clientCertificates

    फ़िलहाल उपलब्ध क्लाइंट सर्टिफ़िकेट की सूची.

  • गड़बड़ी

    "GENERAL_ERROR"
     ज़रूरी नहीं

    सर्टिफ़िकेट निकालते समय हुई गड़बड़ी. यह गड़बड़ी, उपयोगकर्ता को सही समय पर दिखेगी.

SignatureRequest

Chrome 86 या इसके बाद का वर्शन

प्रॉपर्टी

  • एल्‍गोरि‍दम

    इस्तेमाल किया जाने वाला सिग्नेचर एल्गोरिदम.

  • सर्टिफ़िकेट

    ArrayBuffer

    X.509 सर्टिफ़िकेट का DER एन्कोडिंग. एक्सटेंशन को, उससे जुड़ी निजी कुंजी का इस्तेमाल करके input पर हस्ताक्षर करना होगा.

  • इनपुट

    ArrayBuffer

    हस्ताक्षर किया जाने वाला डेटा. ध्यान दें कि डेटा को हैश नहीं किया गया है.

  • signRequestId

    संख्या

    अनुरोध का आइडेंटिफ़ायर, reportSignature को पास किया जाना चाहिए.

SignRequest

प्रॉपर्टी

  • सर्टिफ़िकेट

    ArrayBuffer

    X.509 सर्टिफ़िकेट का DER एन्कोडिंग. एक्सटेंशन को, उससे जुड़ी निजी कुंजी का इस्तेमाल करके digest पर हस्ताक्षर करना होगा.

  • डाइजेस्ट

    ArrayBuffer

    वह डाइजेस्ट जिस पर हस्ताक्षर करना है.

  • हैश

    यह उस हैश एल्गोरिदम को दिखाता है जिसका इस्तेमाल करके digest बनाया गया था.

  • signRequestId

    संख्या

    Chrome 57 या इसके बाद का वर्शन

    एक्सटेंशन को इस यूनीक आईडी का इस्तेमाल करना चाहिए.ऐसा तब करना चाहिए, जब उसे किसी ऐसे तरीके को कॉल करने की ज़रूरत हो जिसके लिए इसकी ज़रूरत होती है. जैसे, requestPin.

StopPinRequestDetails

Chrome 57 या इसके बाद का वर्शन

प्रॉपर्टी

  • errorType

    PinRequestErrorType ज़रूरी नहीं है

    गड़बड़ी वाला टेंप्लेट. अगर यह मौजूद है, तो उपयोगकर्ता को दिखाया जाता है. अगर फ़्लो किसी गड़बड़ी की वजह से रुक गया है, तो इस फ़ील्ड में उसकी वजह शामिल की जाती है. जैसे, MAX_ATTEMPTS_EXCEEDED.

  • signRequestId

    संख्या

    SignRequest में Chrome का दिया गया आईडी.

तरीके

reportSignature()

Chrome 86 या इसके बाद का वर्शन
chrome.certificateProvider.reportSignature(
  details: ReportSignatureDetails,
)
: Promise<void>

इसे onSignatureRequested के जवाब के तौर पर कॉल किया जाना चाहिए.

एक्सटेंशन को हर onSignatureRequested इवेंट के लिए, इस फ़ंक्शन को कॉल करना होगा. एपीआई लागू करने की प्रोसेस, कुछ समय बाद इस कॉल का इंतज़ार करना बंद कर देगी. साथ ही, जब इस फ़ंक्शन को कॉल किया जाएगा, तब टाइमआउट की गड़बड़ी का जवाब देगी.

पैरामीटर

रिटर्न

  • Promise<void>

    Chrome 96 और इसके बाद के वर्शन

requestPin()

Chrome 57 या इसके बाद का वर्शन
chrome.certificateProvider.requestPin(
  details: RequestPinDetails,
)
: Promise<PinResponseDetails | undefined>

यह कुकी, उपयोगकर्ता से पिन का अनुरोध करती है. एक बार में सिर्फ़ एक अनुरोध किया जा सकता है. किसी दूसरे फ़्लो के चालू होने पर किए गए अनुरोधों को अस्वीकार कर दिया जाता है. अगर कोई अन्य फ़्लो चल रहा है, तो एक्सटेंशन को बाद में फिर से कोशिश करनी होगी.

पैरामीटर

  • विवरण

    इसमें अनुरोध किए गए डायलॉग के बारे में जानकारी होती है.

रिटर्न

  • Promise<PinResponseDetails | undefined>

    Chrome 96 और इसके बाद के वर्शन

setCertificates()

Chrome 86 या इसके बाद का वर्शन
chrome.certificateProvider.setCertificates(
  details: SetCertificatesDetails,
)
: Promise<void>

यह नीति, ब्राउज़र में इस्तेमाल किए जाने वाले सर्टिफ़िकेट की सूची सेट करती है.

एक्सटेंशन को इस फ़ंक्शन को, शुरू होने के बाद और फ़िलहाल उपलब्ध सर्टिफ़िकेट के सेट में हर बदलाव पर कॉल करना चाहिए. जब भी यह इवेंट मिलता है, तो एक्सटेंशन को onCertificatesUpdateRequested के जवाब में इस फ़ंक्शन को कॉल करना चाहिए.

पैरामीटर

  • विवरण

    सेट किए जाने वाले सर्टिफ़िकेट. अमान्य सर्टिफ़िकेट को अनदेखा कर दिया जाएगा.

रिटर्न

  • Promise<void>

    Chrome 96 और इसके बाद के वर्शन

stopPinRequest()

Chrome 57 या इसके बाद का वर्शन
chrome.certificateProvider.stopPinRequest(
  details: StopPinRequestDetails,
)
: Promise<void>

यह फ़ंक्शन, requestPin फ़ंक्शन से शुरू किए गए पिन के अनुरोध को रोकता है.

पैरामीटर

  • विवरण

    इस कुकी में अनुरोध के फ़्लो को रोकने की वजह के बारे में जानकारी होती है.

रिटर्न

  • Promise<void>

    Chrome 96 और इसके बाद के वर्शन

इवेंट

onCertificatesUpdateRequested

Chrome 86 या इसके बाद का वर्शन
chrome.certificateProvider.onCertificatesUpdateRequested.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब setCertificates के ज़रिए सेट किए गए सर्टिफ़िकेट काफ़ी नहीं होते या ब्राउज़र अपडेट की गई जानकारी का अनुरोध करता है. एक्सटेंशन को, अपडेट की गई सर्टिफ़िकेट की सूची और मिले हुए certificatesRequestId के साथ setCertificates को कॉल करना होगा.

पैरामीटर

onSignatureRequested

Chrome 86 या इसके बाद का वर्शन
chrome.certificateProvider.onSignatureRequested.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब ब्राउज़र को setCertificates के ज़रिए इस एक्सटेंशन से मिले सर्टिफ़िकेट का इस्तेमाल करके किसी मैसेज पर हस्ताक्षर करना होता है.

एक्सटेंशन को सही एल्गोरिदम और निजी कुंजी का इस्तेमाल करके, request से मिले इनपुट डेटा पर हस्ताक्षर करना होगा. साथ ही, मिले हुए signRequestId के साथ reportSignature को कॉल करके, इसे वापस भेजना होगा.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर ऐसा दिखता है:

    (request: SignatureRequest) => void