ब्यौरा
कुंजियां जनरेट करने और इन कुंजियों के लिए सर्टिफ़िकेट इंस्टॉल करने के लिए, chrome.enterprise.platformKeys
API का इस्तेमाल करें. सर्टिफ़िकेट को प्लैटफ़ॉर्म मैनेज करेगा. इनका इस्तेमाल, टीएलएस की पुष्टि करने, नेटवर्क ऐक्सेस करने या chrome.platformKeys के ज़रिए किसी दूसरे एक्सटेंशन के लिए किया जा सकता है.
अनुमतियां
enterprise.platformKeys
उपलब्धता
इस्तेमाल
क्लाइंट सर्टिफ़िकेट को रजिस्टर करने के लिए, इस एपीआई का इस्तेमाल करने का सामान्य तरीका यह है:
enterprise.platformKeys.getTokens का इस्तेमाल करके, सभी उपलब्ध टोकन पाएं.
id
के बराबर"user"
वाला टोकन ढूंढें. इसके बाद, इस टोकन का इस्तेमाल करें.generateKey
टोकन के तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, कुंजी का जोड़ा जनरेट करें. इससे बटन का हैंडल वापस आ जाएगा.exportKey
टोकन के तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, सार्वजनिक कुंजी एक्सपोर्ट करें.sign
टोकन के तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, सर्टिफ़िकेट के अनुरोध के डेटा का हस्ताक्षर बनाएं.सर्टिफ़िकेट का अनुरोध पूरा करें और उसे सर्टिफ़िकेट देने वाली संस्था या निकाय को भेजें.
अगर कोई सर्टिफ़िकेट मिलता है, तो उसे enterprise.platformKeys.importCertificate का इस्तेमाल करके इंपोर्ट करें
यहां एक उदाहरण दिया गया है, जिसमें सर्टिफ़िकेट का अनुरोध बनाने और भेजने के अलावा, एपीआई के मुख्य इंटरैक्शन को दिखाया गया है:
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
जनरेट की जाने वाली कुंजी का टाइप.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
प्रॉपर्टी
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
RegisterKeyOptions ज़रूरी नहीं
अगर मौजूद है, तो चुनौती वाली कुंजी को दिए गए
scope
के टोकन के साथ रजिस्टर करता है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी भी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. इसके बाद, इस फ़ंक्शन को कॉल करने पर, तय किए गएscope
में एक नई एंटरप्राइज़ पासकोड जनरेट होगी. -
दायरा
आपको किस एंटरप्राइज़ पासकोड पर चुनौती देनी है.
RegisterKeyOptions
प्रॉपर्टी
-
एल्गोरिदम
रजिस्टर की गई कुंजी को किस एल्गोरिदम का इस्तेमाल करना चाहिए.
Scope
एंटरप्राइज़ उपयोगकर्ता कुंजी या एंटरप्राइज़ मशीन कुंजी में से किसका इस्तेमाल करना है.
Enum
"USER"
"MACHINE"
Token
प्रॉपर्टी
-
आईडी
स्ट्रिंग
इस
Token
की खास तौर पर पहचान करता है.स्टैटिक आईडी
"user"
और"system"
होते हैं. ये आईडी, प्लैटफ़ॉर्म के उपयोगकर्ता के हिसाब से और सिस्टम के हिसाब से हार्डवेयर टोकन के बारे में बताते हैं.enterprise.platformKeys.getTokens
से, अन्य आइडेंटिफ़ायर वाले अन्य टोकन भी दिखाए जा सकते हैं. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 और उसके बाद के वर्शनWebCrypto के SubtleCrypto इंटरफ़ेस को लागू करता है. कुंजी जनरेट करने के साथ-साथ, क्रिप्टोग्राफ़िक ऑपरेशन, सॉफ़्टवेयर के ज़रिए किए जाते हैं. कुंजियों की सुरक्षा और निकाले न जा सकने वाली प्रॉपर्टी को लागू करने का काम, सॉफ़्टवेयर में किया जाता है. इसलिए, ये कुंजियां, हार्डवेयर पर सेव की जाने वाली कुंजियों के मुकाबले कम सुरक्षित होती हैं.
सिर्फ़ ऐसी RSASSA-PKCS1-V1_5 कुंजियां जनरेट की जा सकती हैं जिन्हें निकाला नहीं जा सकता. साथ ही, इन कुंजियों में
modulusLength
की वैल्यू 2048 तक होनी चाहिए. हर पासकोड का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है.किसी खास
Token
पर जनरेट की गई कुंजियों का इस्तेमाल, किसी दूसरे टोकन के साथ नहीं किया जा सकता. साथ ही, इनका इस्तेमालwindow.crypto.subtle
के साथ भी नहीं किया जा सकता. इसी तरह,window.crypto.subtle
की मदद से बनाए गएKey
ऑब्जेक्ट का इस्तेमाल, इस इंटरफ़ेस के साथ नहीं किया जा सकता. -
subtleCrypto
SubtleCrypto
WebCrypto के SubtleCrypto इंटरफ़ेस को लागू करता है. कुंजी जनरेट करने के साथ-साथ, क्रिप्टोग्राफ़िक ऑपरेशन, हार्डवेयर के साथ काम करते हैं.
सिर्फ़ ऐसी RSASSA-PKCS1-V1_5 कुंजियां जनरेट की जा सकती हैं जिन्हें निकाला न जा सके. इन कुंजियों में
modulusLength
2048 तक और ECDSA मेंnamedCurve
P-256 तक हो सकता है. हर पासकोड का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है.किसी खास
Token
पर जनरेट की गई कुंजियों का इस्तेमाल, किसी दूसरे टोकन के साथ नहीं किया जा सकता. साथ ही, इनका इस्तेमालwindow.crypto.subtle
के साथ भी नहीं किया जा सकता. इसी तरह,window.crypto.subtle
की मदद से बनाए गएKey
ऑब्जेक्ट का इस्तेमाल, इस इंटरफ़ेस के साथ नहीं किया जा सकता.
तरीके
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
)
challengeMachineKey
और challengeUserKey
की तरह ही है. हालांकि, इसमें रजिस्टर की गई कुंजी के एल्गोरिदम की जानकारी दी जा सकती है. यह हार्डवेयर की मदद से काम करने वाली एंटरप्राइज़ मशीन कुंजी को चुनौती देता है और रिमोट पुष्टि करने वाले प्रोटोकॉल के हिस्से के तौर पर जवाब देता है. यह सिर्फ़ ChromeOS पर और 'पुष्टि किया हुआ ऐक्सेस' वेब एपीआई के साथ काम आता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है.
Verified Access Web API की मदद से पुष्टि होने का मतलब है कि मौजूदा डिवाइस, एक मान्य ChromeOS डिवाइस है. साथ ही, यह भी पुष्टि होती है कि मौजूदा डिवाइस को पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जा रहा है. इसके अलावा, साइन इन किए हुए मौजूदा उपयोगकर्ता को भी पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जा रहा है और डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ डिवाइस नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह शर्त हो सकती है कि डिवाइस डेवलपर मोड में न हो. पुष्टि करने पर मिलने वाली किसी भी डिवाइस आइडेंटिटी, मौजूदा डिवाइस के हार्डवेयर से पूरी तरह से जुड़ी होती है. अगर "user"
स्कोप तय किया गया है, तो आइडेंटिटी, साइन इन किए हुए मौजूदा उपयोगकर्ता से भी जुड़ी होती है.
इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस को मैनेज नहीं किया जा रहा है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या एंटरप्राइज़ डिवाइस की नीति के तहत, कॉल करने वाले के लिए यह कार्रवाई साफ़ तौर पर चालू नहीं की गई है, तो यह काम नहीं करेगा. जिस पासकोड पर चैलेंज किया गया है वह "system"
या "user"
टोकन में मौजूद नहीं होता. साथ ही, उसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
विकल्प
ChallengeKeyOptions
में तय किए गए फ़ील्ड वाला ऑब्जेक्ट. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चुनौती का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
)
इसके बजाय, challengeKey
का इस्तेमाल करें.
यह हार्डवेयर की मदद से काम करने वाली एंटरप्राइज़ मशीन कुंजी को चुनौती देता है और रिमोट पुष्टि करने वाले प्रोटोकॉल के हिस्से के तौर पर जवाब देता है. यह सिर्फ़ ChromeOS पर और 'पुष्टि किया हुआ ऐक्सेस' वेब एपीआई के साथ काम आता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. वेरिफ़ाइड ऐक्सेस वेब एपीआई से पुष्टि होने का मतलब है कि: * मौजूदा डिवाइस, ChromeOS का मान्य डिवाइस है. * मौजूदा डिवाइस को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन इन किए हुए मौजूदा उपयोगकर्ता को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ डिवाइस नीति के मुताबिक हो. उदाहरण के लिए, किसी नीति में यह शर्त हो सकती है कि डिवाइस डेवलपर मोड में न हो. * पुष्टि करने पर, डिवाइस की पहचान से जुड़ी जानकारी, मौजूदा डिवाइस के हार्डवेयर से जुड़ी होती है. इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस को मैनेज नहीं किया जा रहा है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या एंटरप्राइज़ डिवाइस की नीति के तहत, कॉल करने वाले के लिए यह कार्रवाई साफ़ तौर पर चालू नहीं की गई है, तो यह काम नहीं करेगा. एंटरप्राइज़ मशीन पासकोड, "system"
टोकन में मौजूद नहीं होता और किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
बूलियन ज़रूरी नहीं
Chrome 59 और उसके बाद के वर्शनअगर यह सेट है, तो मौजूदा एंटरप्राइज़ मशीन पासकोड को
"system"
टोकन के साथ रजिस्टर किया जाता है और एंटरप्राइज़ मशीन पासकोड की भूमिका छोड़ दी जाती है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी भी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह कुंजी 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को कॉल करने पर एक नई Enterprise मशीन पासकोड जनरेट होगी. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चुनौती का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
)
इसके बजाय, challengeKey
का इस्तेमाल करें.
यह हार्डवेयर की मदद से काम करने वाली एंटरप्राइज़ उपयोगकर्ता कुंजी को चुनौती देता है और रिमोट पुष्टि करने वाले प्रोटोकॉल के हिस्से के तौर पर जवाब देता है. यह सिर्फ़ ChromeOS पर और 'पुष्टि किया हुआ ऐक्सेस' वेब एपीआई के साथ काम आता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. वेरिफ़ाइड ऐक्सेस वेब एपीआई से पुष्टि होने का मतलब है कि: * मौजूदा डिवाइस, ChromeOS का मान्य डिवाइस है. * मौजूदा डिवाइस को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन इन किए हुए मौजूदा उपयोगकर्ता को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ उपयोगकर्ता नीति के मुताबिक हो. उदाहरण के लिए, किसी नीति में यह शर्त हो सकती है कि डिवाइस डेवलपर मोड में न हो. * पुष्टि करने के लिए जनरेट की गई सार्वजनिक कुंजी, मौजूदा डिवाइस के हार्डवेयर और साइन इन किए हुए मौजूदा उपयोगकर्ता से पूरी तरह जुड़ी होती है. इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस को मैनेज नहीं किया जा रहा है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या एंटरप्राइज़ उपयोगकर्ता नीति के तहत, कॉल करने वाले के लिए यह कार्रवाई साफ़ तौर पर चालू नहीं की गई है, तो यह काम नहीं करेगा. एंटरप्राइज़ यूज़र की, "user"
टोकन में मौजूद नहीं होती. साथ ही, इसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
बूलियन
अगर यह सेट है, तो मौजूदा एंटरप्राइज़ उपयोगकर्ता कुंजी को
"user"
टोकन के साथ रजिस्टर किया जाता है और एंटरप्राइज़ उपयोगकर्ता कुंजी की भूमिका छोड़ दी जाती है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी भी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह कुंजी 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को फिर से कॉल करने पर, एक नई Enterprise User Key जनरेट होगी. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चुनौती का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
)
दिए गए टोकन से उपलब्ध सभी क्लाइंट सर्टिफ़िकेट की सूची दिखाता है. इसका इस्तेमाल, किसी खास पुष्टि के लिए इस्तेमाल किए जा सकने वाले क्लाइंट सर्टिफ़िकेट की मौजूदगी और समयसीमा खत्म होने की जांच करने के लिए किया जा सकता है.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:(certificates: ArrayBuffer[]) => void
-
सर्टिफ़िकेट
ArrayBuffer[]
सर्टिफ़िकेट की सूची, जिसमें हर सर्टिफ़िकेट को X.509 सर्टिफ़िकेट के DER कोड में बदला गया हो.
-
रिटर्न
-
Promise<ArrayBuffer[]>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
)
उपलब्ध टोकन दिखाता है. किसी सामान्य उपयोगकर्ता के सेशन में, सूची में हमेशा उपयोगकर्ता का id
"user"
वाला टोकन शामिल होगा. अगर सिस्टम-वाइड टीपीएम टोकन उपलब्ध है, तो दिखाई गई सूची में id
"system"
वाला सिस्टम-वाइड टोकन भी शामिल होगा. इस डिवाइस (जैसे, Chromebook) पर सभी सेशन के लिए, सिस्टम-वाइड टोकन एक ही होगा.
पैरामीटर
रिटर्न
-
Promise<Token[]>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
अगर सर्टिफ़ाइड पासकोड पहले से ही इस टोकन में सेव है, तो दिए गए टोकन में certificate
को इंपोर्ट करता है. सर्टिफ़िकेट का अनुरोध पूरा होने के बाद, इस फ़ंक्शन का इस्तेमाल करके, हासिल किए गए सर्टिफ़िकेट को सेव किया जाना चाहिए. साथ ही, इसे ऑपरेटिंग सिस्टम और ब्राउज़र के लिए, पुष्टि करने के लिए उपलब्ध कराया जाना चाहिए.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट का DER कोड.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
अगर दिए गए टोकन में certificate
मौजूद है, तो उसे हटा देता है. इसका इस्तेमाल, पुराने सर्टिफ़िकेट हटाने के लिए किया जाना चाहिए, ताकि पुष्टि के दौरान उनका इस्तेमाल न किया जाए और सर्टिफ़िकेट के विकल्पों में गड़बड़ी न हो. इसका इस्तेमाल, सर्टिफ़िकेट स्टोर में स्टोरेज खाली करने के लिए किया जाना चाहिए.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट का DER कोड.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
Promise<void>
Chrome 131 और उसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.