chrome.enterprise.platformKeys

ब्यौरा

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

अनुमतियां

enterprise.platformKeys

उपलब्धता

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

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

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

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

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

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

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

  • 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

    यह ऐसी चुनौती है जो वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पूरी होती है.

  • registerKey

    RegisterKeyOptions ज़रूरी नहीं

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

  • दायरा

    किस एंटरप्राइज़ कुंजी को चुनौती देना है.

RegisterKeyOptions

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

प्रॉपर्टी

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

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

Scope

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

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

Enum

"USER"

Token

प्रॉपर्टी

  • id

    स्ट्रिंग

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

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

  • softwareBackedSubtleCrypto

    SubtleCrypto

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

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

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

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

  • subtleCrypto

    SubtleCrypto

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

    सिर्फ़ वे आरएसएएसएसए-PKCS1-V1_5 कुंजियां जनरेट की जा सकती हैं जिन्हें निकाला नहीं जा सकता. इनमें modulusLength तक 2048 तक की कुंजियां और 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 की तरह है, लेकिन यह रजिस्टर की गई कुंजी का एल्गोरिदम तय करने की अनुमति देता है. यह हार्डवेयर-आधारित 'एंटरप्राइज़ मशीन की' को चुनौती देता है. साथ ही, इससे मिलने वाले रिस्पॉन्स को रिमोट तौर पर प्रमाणित करने के प्रोटोकॉल के तहत भेजा जाता है. यह सिर्फ़ Chrome OS और Verified Access Web API के साथ काम करता है. इस एपीआई में, समस्याओं को चुनौती दी जाती है और जवाबों की पुष्टि की जाती है.

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

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

पैरामीटर

  • विकल्प

    ChallengeKeyOptions में दिए गए फ़ील्ड वाला ऑब्जेक्ट.

  • कॉलबैक

    फ़ंक्शन

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

    (response: ArrayBuffer)=>void

    • जवाब

      ArrayBuffer

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

challengeMachineKey()

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

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

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

पैरामीटर

  • चैलेंज

    ArrayBuffer

    यह ऐसी चुनौती है जो वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पूरी होती है.

  • registerKey

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

    Chrome 59+

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

  • कॉलबैक

    फ़ंक्शन

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

    (response: ArrayBuffer)=>void

    • जवाब

      ArrayBuffer

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

challengeUserKey()

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

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

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

पैरामीटर

  • चैलेंज

    ArrayBuffer

    यह ऐसी चुनौती है जो वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पूरी होती है.

  • registerKey

    boolean

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

  • कॉलबैक

    फ़ंक्शन

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

    (response: ArrayBuffer)=>void

    • जवाब

      ArrayBuffer

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

getCertificates()

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

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

पैरामीटर

  • tokenId

    स्ट्रिंग

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

  • कॉलबैक

    फ़ंक्शन

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

    (certificates: ArrayBuffer[])=>void

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

      अरेबफ़र[]

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

getTokens()

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    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