chrome.enterprise.platformKeys

कंपनी का ब्यौरा

इन कुंजियों के लिए कुंजियां जनरेट करने और सर्टिफ़िकेट इंस्टॉल करने के लिए, chrome.enterprise.platformKeys एपीआई का इस्तेमाल करें. सर्टिफ़िकेट, प्लैटफ़ॉर्म मैनेज करेगा. टीएलएस की पुष्टि करने, नेटवर्क ऐक्सेस करने या chrome.platformKeys के ज़रिए किसी अन्य एक्सटेंशन के लिए इनका इस्तेमाल किया जा सकता है.

अनुमतियां

enterprise.platformKeys

उपलब्धता

सिर्फ़ ChromeOS के लिए नीति ज़रूरी है

सिद्धांत और उनका इस्तेमाल

आम तौर पर, क्लाइंट सर्टिफ़िकेट को रजिस्टर करने के लिए, इस एपीआई का इस्तेमाल इन चरणों को पूरा करने के लिए किया जाता है:

  • enterprise.platformKeys.getTokens() का इस्तेमाल करके, सभी उपलब्ध टोकन पाएं.

  • "user" के बराबर id वाला टोकन खोजें. बाद में इस टोकन का इस्तेमाल करें.

  • टोकन generateKey() वाले तरीके का इस्तेमाल करके, कुंजी का जोड़ा जनरेट करें. इस तरीके के बारे में SubtleBrand में बताया गया है. इससे हैंडल, कुंजी पर वापस आ जाएगा.

  • टोकन exportKey() वाले तरीके का इस्तेमाल करके सार्वजनिक पासकोड को एक्सपोर्ट करें. इस तरीके के बारे में Subtleक्रिप्ट में बताया गया है.

  • sign() टोकन तरीके का इस्तेमाल करके, सर्टिफ़िकेशन के अनुरोध के डेटा पर हस्ताक्षर बनाएं. इसकी जानकारी Subtleक्रिप्ट में दी गई है.

  • सर्टिफ़िकेशन का अनुरोध पूरा करें और इसे सर्टिफ़िकेट देने वाली संस्था या निकाय को भेजें.

  • अगर आपको सर्टिफ़िकेट मिला है, तो इसे [enterprise.platformKeys.importCertificate()`[3] का इस्तेमाल करके इंपोर्ट करें

यहां एक उदाहरण दिया गया है, जिसमें सर्टिफ़िकेशन का अनुरोध करने और उसे भेजने के अलावा, एपीआई के अहम इंटरैक्शन दिखाया गया है:

function getUserToken(callback) {
  chrome.enterprise.platformKeys.getTokens(function(tokens) {
    for (var i = 0; i < tokens.length; i++) {
      if (tokens[i].id == "user") {
        callback(tokens[i]);
        return;
      }
    }
    callback(undefined);
  });
}

function generateAndSign(userToken) {
  var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]);
  var algorithm = {
    name: "RSASSA-PKCS1-v1_5",
    // RsaHashedKeyGenParams
    modulusLength: 2048,
    publicExponent:
        new Uint8Array([0x01, 0x00, 0x01]),  // Equivalent to 65537
    hash: {
      name: "SHA-256",
    }
  };
  var cachedKeyPair;
  userToken.subtleCrypto.generateKey(algorithm, false, ["sign"])
    .then(function(keyPair) {
            cachedKeyPair = keyPair;
            return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey);
          },
          console.log.bind(console))
    .then(function(publicKeySpki) {
            // Build the Certification Request using the public key.
            return userToken.subtleCrypto.sign(
                {name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data);
          },
          console.log.bind(console))
    .then(function(signature) {
              // Complete the Certification Request with |signature|.
              // Send out the request to the CA, calling back
              // onClientCertificateReceived.
          },
          console.log.bind(console));
}

function onClientCertificateReceived(userToken, certificate) {
  chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}

getUserToken(generateAndSign);

टाइप

Algorithm

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

जनरेट करने के लिए कुंजी का प्रकार.

Enum

ChallengeKeyOptions

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

प्रॉपर्टी

  • चैलेंज

    ArrayBuffer

    Verified Access Web API से आने वाली चुनौती.

  • registerKey

    RegisterKeyOptions वैकल्पिक

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

  • दायरा

    किस Enterprise Key को चुनौती देनी है.

RegisterKeyOptions

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

प्रॉपर्टी

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

    रजिस्टर की गई कुंजी को किस एल्गोरिदम का इस्तेमाल करना चाहिए.

Scope

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

एंटरप्राइज़ उपयोगकर्ता कुंजी या एंटरप्राइज़ मशीन कुंजी में से किसी का भी इस्तेमाल किया जाए.

Enum

"USER"

"MACHINE"

Token

प्रॉपर्टी

  • आईडी

    स्ट्रिंग

    इस Token की अलग-अलग पहचान करता है.

    स्टैटिक आईडी "user" और "system" होते हैं. ये प्लैटफ़ॉर्म के खास उपयोगकर्ताओं के लिए होते हैं और पूरे सिस्टम के हार्डवेयर टोकन के बारे में बताते हैं. कोई भी दूसरा टोकन (अन्य आइडेंटिफ़ायर के साथ) enterprise.platformKeys.getTokens तक लौटाया जा सकता है.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 और उसके बाद के वर्शन

    यह Webक्रिप्ट के SubtleCrypto इंटरफ़ेस को लागू करता है. क्रिप्टोग्राफ़िक ऑपरेशन, सॉफ़्टवेयर पर आधारित होते हैं. जैसे, पासकोड जनरेट करना. कुंजियों की सुरक्षा और इस तरह एक्सट्रैक्ट न की जा सकने वाली प्रॉपर्टी को लागू करने का काम सॉफ़्टवेयर में किया जाता है. इसलिए, हार्डवेयर-आधारित कुंजियों की तुलना में, कुंजियां कम सुरक्षित होती हैं.

    modulusLength के साथ 2048 तक, सिर्फ़ एक्सट्रैक्ट नहीं की जा सकने वाली आरएसए-पीकेसीएस1-V1_5 कुंजियां जनरेट की जा सकती हैं. हर कुंजी का इस्तेमाल ज़्यादा से ज़्यादा एक बार डेटा पर हस्ताक्षर करने के लिए किया जा सकता है.

    किसी खास Token पर जनरेट की गई कुंजियों का इस्तेमाल, न तो किसी दूसरे टोकन के साथ किया जा सकता है और न ही window.crypto.subtle के साथ किया जा सकता है. इसी तरह, window.crypto.subtle का इस्तेमाल करके बनाए गए Key ऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते.

  • subtleCrypto

    SubtleCrypto

    यह Webक्रिप्ट के SubtleCrypto इंटरफ़ेस को लागू करता है. क्रिप्टोग्राफ़िक ऑपरेशन, हार्डवेयर पर किए जाते हैं. इसमें, पासकोड जनरेट करने की प्रोसेस भी शामिल है.

    सिर्फ़ modulusLength तक 2048 तक की modulusLength वाली और namedCurve P-256 के साथ ECDSA कुंजियां जनरेट नहीं की जा सकतीं. हर कुंजी का इस्तेमाल ज़्यादा से ज़्यादा एक बार डेटा पर हस्ताक्षर करने के लिए किया जा सकता है.

    किसी खास Token पर जनरेट की गई कुंजियों का इस्तेमाल, न तो किसी दूसरे टोकन के साथ किया जा सकता है और न ही window.crypto.subtle के साथ किया जा सकता है. इसी तरह, window.crypto.subtle का इस्तेमाल करके बनाए गए Key ऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते.

तरीके

challengeKey()

Chrome 110 और इसके बाद के वर्शन
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback: function,
)

challengeMachineKey और challengeUserKey की तरह, लेकिन रजिस्टर की गई कुंजी का एल्गोरिदम तय करने की अनुमति देता है. यह हार्डवेयर-साथ काम करने वाली Enterprise Machine Key को चुनौती देता है और इससे रिस्पॉन्स को रिमोट तरीके से प्रमाणित करने वाले प्रोटोकॉल की तरह इस्तेमाल करता है. यह सुविधा सिर्फ़ Chrome OS पर और वेरिफ़ाइड ऐक्सेस वेब एपीआई के साथ काम करती है. यह सुविधा, चुनौतियों का सामना करती है और जवाबों की पुष्टि करती है.

Verified Access वेब एपीआई से पुष्टि हो जाने पर, यह पता चलता है कि मौजूदा डिवाइस एक मान्य Chrome OS डिवाइस है, मौजूदा डिवाइस को पुष्टि के दौरान तय किया गया डोमेन मैनेज करता है, साइन-इन किए हुए मौजूदा उपयोगकर्ता को पुष्टि के दौरान तय किया गया डोमेन मैनेज करता है, और डिवाइस की मौजूदा स्थिति एंटरप्राइज़ डिवाइस नीति का पालन करती है. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस को डेवलपर मोड में नहीं होना चाहिए. पुष्टि करने के दौरान मिलने वाली डिवाइस की पहचान, मौजूदा डिवाइस के हार्डवेयर से बहुत ज़्यादा जुड़ी होती है. अगर "user" स्कोप की जानकारी दी गई है, तो साइन-इन किए हुए मौजूदा उपयोगकर्ता की पहचान भी बहुत ज़्यादा सीमित होती है.

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

पैरामीटर

  • विकल्प

    ऑब्जेक्ट में, ChallengeKeyOptions में तय किए गए फ़ील्ड शामिल हैं.

  • कॉलबैक

    function

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

    (response: ArrayBuffer) => void

    • जवाब

      ArrayBuffer

      चैलेंज का जवाब.

challengeMachineKey()

Chrome 50+ Chrome 110 के बाद से अब तक काम नहीं करता
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback: function,
)

इसके बजाय, challengeKey का इस्तेमाल करें.

यह हार्डवेयर-साथ काम करने वाली Enterprise Machine Key को चुनौती देता है और इससे रिस्पॉन्स को रिमोट तरीके से प्रमाणित करने वाले प्रोटोकॉल की तरह इस्तेमाल करता है. यह सुविधा सिर्फ़ Chrome OS पर और वेरिफ़ाइड ऐक्सेस वेब एपीआई के साथ काम करती है. यह सुविधा, चुनौतियों का सामना करती है और जवाबों की पुष्टि करती है. वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पुष्टि हो जाने पर, इन सभी बातों का ध्यान रखा जा सकता है: * मौजूदा डिवाइस एक मान्य Chrome OS डिवाइस है. * मौजूदा डिवाइस को पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन-इन किए हुए मौजूदा उपयोगकर्ता को पुष्टि के दौरान तय किए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ से जुड़ी डिवाइस नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस को डेवलपर मोड में नहीं होना चाहिए. * पुष्टि के दौरान मिलने वाली डिवाइस की पहचान, मौजूदा डिवाइस के हार्डवेयर से बहुत ज़्यादा जुड़ी होती है. यह फ़ंक्शन पूरी तरह प्रतिबंधित है. अगर मौजूदा डिवाइस को मैनेज नहीं किया गया है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या इसे एंटरप्राइज़ डिवाइस नीति से कॉलर के लिए साफ़ तौर पर चालू नहीं किया गया है, तो यह फ़ंक्शन काम नहीं करेगा. Enterprise मशीन कुंजी, "system" टोकन में मौजूद नहीं होती है. साथ ही, इसे कोई दूसरा एपीआई ऐक्सेस नहीं कर सकता है.

पैरामीटर

  • चैलेंज

    ArrayBuffer

    Verified Access Web API से आने वाली चुनौती.

  • registerKey

    बूलियन ज़रूरी नहीं

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

    अगर यह नीति सेट की जाती है, तो मौजूदा एंटरप्राइज़ मशीन कुंजी को "system" टोकन के साथ रजिस्टर किया जाता है. साथ ही, यह Enterprise मशीन कुंजी की भूमिका को छोड़ देती है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और उसे किसी भी दूसरे साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह पासकोड, 2048-बिट आरएसए है. इस फ़ंक्शन को बाद में किए जाने वाले कॉल, एक नई 'एंटरप्राइज़ मशीन की' जनरेट करेंगे.

  • कॉलबैक

    function

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

    (response: ArrayBuffer) => void

    • जवाब

      ArrayBuffer

      चैलेंज का जवाब.

challengeUserKey()

Chrome 50+ Chrome 110 के बाद से अब तक काम नहीं करता
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback: function,
)

इसके बजाय, challengeKey का इस्तेमाल करें.

यह हार्डवेयर-साथ काम करने वाली Enterprise उपयोगकर्ता कुंजी को चुनौती देता है और रिमोट तरीके से पुष्टि करने वाले प्रोटोकॉल की मदद से रिस्पॉन्स देता है. यह सुविधा सिर्फ़ Chrome OS पर और वेरिफ़ाइड ऐक्सेस वेब एपीआई के साथ काम करती है. यह सुविधा, चुनौतियों का सामना करती है और जवाबों की पुष्टि करती है. वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पुष्टि हो जाने पर, इन सभी बातों का ध्यान रखा जा सकता है: * मौजूदा डिवाइस एक मान्य Chrome OS डिवाइस है. * मौजूदा डिवाइस को पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन-इन किए हुए मौजूदा उपयोगकर्ता को पुष्टि के दौरान तय किए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ की उपयोगकर्ता नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस को डेवलपर मोड में नहीं होना चाहिए. * पुष्टि करने की प्रोसेस के दौरान मिलने वाली सार्वजनिक कुंजी, मौजूदा डिवाइस के हार्डवेयर और साइन इन किए हुए मौजूदा उपयोगकर्ता से बहुत ज़्यादा जुड़ी होती है. यह फ़ंक्शन पूरी तरह प्रतिबंधित है. अगर मौजूदा डिवाइस को मैनेज नहीं किया गया है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या इसे एंटरप्राइज़ उपयोगकर्ता नीति के हिसाब से कॉलर के लिए साफ़ तौर पर चालू नहीं किया गया है, तो यह फ़ंक्शन काम नहीं करेगा. Enterprise उपयोगकर्ता कुंजी, "user" टोकन में मौजूद नहीं होती है. साथ ही, इसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.

पैरामीटर

  • चैलेंज

    ArrayBuffer

    Verified Access Web API से आने वाली चुनौती.

  • registerKey

    boolean

    अगर नीति को सेट किया जाता है, तो मौजूदा 'एंटरप्राइज़ उपयोगकर्ता कुंजी', "user" टोकन के साथ रजिस्टर हो जाता है. साथ ही, एंटरप्राइज़ उपयोगकर्ता कुंजी की भूमिका को छोड़ देता है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और उसे किसी भी दूसरे साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह पासकोड, 2048-बिट आरएसए है. इस फ़ंक्शन को बाद में किए जाने वाले कॉल, एक नई 'एंटरप्राइज़ उपयोगकर्ता कुंजी' जनरेट करेंगे.

  • कॉलबैक

    function

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

    (response: ArrayBuffer) => void

    • जवाब

      ArrayBuffer

      चैलेंज का जवाब.

getCertificates()

chrome.enterprise.platformKeys.getCertificates(
  tokenId: string,
  callback: function,
)

दिए गए टोकन से उपलब्ध सभी क्लाइंट सर्टिफ़िकेट की सूची दिखाता है. इसका इस्तेमाल ऐसे क्लाइंट सर्टिफ़िकेट के मौजूद होने और उनकी समयसीमा खत्म होने की जांच करने के लिए किया जा सकता है जिनका इस्तेमाल, पुष्टि करने के लिए किया जा सकता है.

पैरामीटर

  • tokenId

    स्ट्रिंग

    getTokens से मिले टोकन का आईडी.

  • कॉलबैक

    function

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

    (certificates: ArrayBuffer[]) => void

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

      अरेबफ़र[]

      सर्टिफ़िकेट की सूची, जिसमें हर सर्टिफ़िकेट का DER एन्कोडिंग पता होता है. यह कोड X.509 सर्टिफ़िकेट का होता है.

getTokens()

chrome.enterprise.platformKeys.getTokens(
  callback: function,
)

उपलब्ध टोकन दिखाता है. सामान्य उपयोगकर्ता के सेशन में, सूची में हमेशा id "user" वाले उपयोगकर्ता का टोकन होगा. अगर पूरे सिस्टम के लिए टीपीएम टोकन उपलब्ध है, तो दिखाई गई सूची में id "system" वाला पूरा सिस्टम टोकन भी शामिल होगा. इस डिवाइस के सभी सेशन के लिए सिस्टम-वाइड टोकन एक ही रहेगा. उदाहरण के लिए, Chromebook डिवाइस.

पैरामीटर

  • कॉलबैक

    function

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

    (tokens: Token[]) => void

    • टोकन

      उपलब्ध टोकन की सूची.

importCertificate()

chrome.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

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

पैरामीटर

  • tokenId

    स्ट्रिंग

    getTokens से मिले टोकन का आईडी.

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

    ArrayBuffer

    X.509 सर्टिफ़िकेट की DER एन्कोडिंग.

  • कॉलबैक

    फ़ंक्शन वैकल्पिक

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

    () => void

removeCertificate()

chrome.enterprise.platformKeys.removeCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

दिए गए टोकन के मौजूद होने पर, उससे certificate को हटाता है. इसका इस्तेमाल, पुराने सर्टिफ़िकेट हटाने के लिए किया जाना चाहिए. ऐसा इसलिए, ताकि पुष्टि करते समय इन पर विचार न किया जाए और सर्टिफ़िकेट के विकल्प पर कोई असर न पड़े. इसका इस्तेमाल सर्टिफ़िकेट स्टोर में स्टोरेज खाली करने के लिए किया जाना चाहिए.

पैरामीटर

  • tokenId

    स्ट्रिंग

    getTokens से मिले टोकन का आईडी.

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

    ArrayBuffer

    X.509 सर्टिफ़िकेट की DER एन्कोडिंग.

  • कॉलबैक

    फ़ंक्शन वैकल्पिक

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

    () => void