বিবরণ
chrome.enterprise.platformKeys API ব্যবহার করে 'কী' জেনারেট করুন এবং এইসব 'কী'-এর জন্য সার্টিফিকেট ইনস্টল করুন। সার্টিফিকেটগুলি প্ল্যাটফর্ম দ্বারা ম্যানেজ করা হবে এবং TLS যাচাইকরণ, নেটওয়ার্ক অ্যাক্সেস বা chrome.platformKeys-এর মাধ্যমে অন্যান্য এক্সটেনশনের জন্য ব্যবহার করা যেতে পারে।
অনুমতি
enterprise.platformKeysউপলভ্যতা
ধারণা ও ব্যবহার
ক্লায়েন্ট সার্টিফিকেট এনরোল করার জন্য এই API-এর সাধারণ ব্যবহার এইসব ধাপ অনুসরণ করে:
enterprise.platformKeys.getTokens()ব্যবহার করে উপলভ্য সব টোকেন পান।id-এর সাথে টোকেন খুঁজুন যা"user"-এর সমান। পরে এই টোকেন ব্যবহার করুন।generateKey()টোকেন পদ্ধতি (SubtleCrypto-তে সংজ্ঞায়িত) ব্যবহার করে কী পেয়ার জেনারেট করুন। এটি কী-তে হ্যান্ডেল ফিরিয়ে দেবে।exportKey()টোকেন পদ্ধতি (SubtleCrypto-তে সংজ্ঞায়িত) ব্যবহার করে পাবলিক কী এক্সপোর্ট করুন।sign()টোকেন পদ্ধতি (SubtleCrypto-তে সংজ্ঞায়িত) ব্যবহার করে সার্টিফিকেশন অনুরোধের ডেটার স্বাক্ষর তৈরি করুন।সার্টিফিকেশন অনুরোধ সম্পূর্ণ করে সার্টিফিকেশন কর্তৃপক্ষের কাছে পাঠান।
সার্টিফিকেট পাওয়া গেলে, [
enterprise.platformKeys.importCertificate()`[3] ব্যবহার করে এটি ইমপোর্ট করুন
এখানে একটি উদাহরণ দেওয়া হল যা সার্টিফিকেশন অনুরোধ তৈরি ও পাঠানো ছাড়া প্রধান API ইন্টার্যাকশন দেখায়:
function getUserToken(callback) {
browser.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) {
browser.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}
getUserToken(generateAndSign);
ধরন
Algorithm
যে ধরনের 'কী' জেনারেট করতে হবে।
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
প্রপার্টি
-
চ্যালেঞ্জ
ArrayBuffer
Verified Access Web API-এর মাধ্যমে নির্গত চ্যালেঞ্জ।
-
registerKey
RegisterKeyOptions ঐচ্ছিক
উপলভ্য থাকলে, নির্দিষ্ট
scope-এর টোকেন দিয়ে চ্যালেঞ্জ করা 'কী' রেজিস্টার করে। তারপর, 'কী'টি একটি সার্টিফিকেটের সাথে যুক্ত করা যেতে পারে এবং অন্য যেকোনও সাইনিং 'কী'-এর মতো ব্যবহার করা যেতে পারে। এই ফাংশনে পরবর্তী কলগুলি নির্দিষ্টscope-এ একটি নতুন Enterprise Key তৈরি করবে। -
স্কোপ
কোন Enterprise Key চ্যালেঞ্জ করতে হবে।
RegisterKeyOptions
প্রপার্টি
-
অ্যালগরিদম
রেজিস্টার করা 'কী' কোন অ্যালগরিদম ব্যবহার করবে।
Scope
এন্টারপ্রাইজ ব্যবহারকারী কী নাকি এন্টারপ্রাইজ মেশিন কী ব্যবহার করা হবে।
Enum
"USER"
"মেশিন"
Token
প্রপার্টি
-
id
স্ট্রিং
এই
Token-কে অনন্যভাবে শনাক্ত করে।স্ট্যাটিক আইডি হল
"user"এবং"system", যা যথাক্রমে প্ল্যাটফর্মের ব্যবহারকারী-নির্দিষ্ট এবং সিস্টেম-ব্যাপী হার্ডওয়্যার টোকেনকে বোঝায়। অন্য যেকোনও টোকেন (অন্যান্য শনাক্তকারীর সাথে)enterprise.platformKeys.getTokens-এর মাধ্যমে ফেরত দেওয়া হতে পারে। -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97+ Chrome 148 থেকে browser.*WebCrypto-এর SubtleCrypto ইন্টারফেস প্রয়োগ করে। কী জেনারেশন সহ ক্রিপটোগ্রাফিক অপারেশন সফ্টওয়্যার-ব্যাকড। কী-এর সুরক্ষা এবং এক্সট্র্যাক্ট করা যায় না এমন প্রপার্টির প্রয়োগ সফ্টওয়্যারে করা হয়, তাই হার্ডওয়্যার-ব্যাকড কী-এর তুলনায় এই কী কম সুরক্ষিত।
শুধুমাত্র এক্সট্র্যাক্ট করা যায় না এমন 'কী' জেনারেট করা যাবে। শুধুমাত্র RSASSA-PKCS1-V1_5 কী ধরনের সাথে
modulusLength২০৪৮ পর্যন্ত কাজ করে। KeyPermissions নীতি-এর মাধ্যমে এক্সটেনশনটি অনুমোদিত তালিকায় না থাকলে, প্রতিটি 'কী' ডেটা সাইন করার জন্য সর্বাধিক একবার ব্যবহার করা যেতে পারে, সেক্ষেত্রে 'কী' অনির্দিষ্টকালের জন্য ব্যবহার করা যেতে পারে।নির্দিষ্ট
Token-এ জেনারেট করা 'কী' অন্য কোনও টোকেনের সাথে ব্যবহার করা যাবে না, এমনকিwindow.crypto.subtle-এর সাথেও ব্যবহার করা যাবে না। একইভাবে,window.crypto.subtle-এর মাধ্যমে তৈরি করাKeyঅবজেক্ট এই ইন্টারফেসে ব্যবহার করা যাবে না। -
subtleCrypto
SubtleCrypto
WebCrypto-এর SubtleCrypto ইন্টারফেস প্রয়োগ করে। 'কী' তৈরি করা সহ ক্রিপটোগ্রাফিক অপারেশন হার্ডওয়্যার-ব্যাকড।
শুধুমাত্র এক্সট্র্যাক্ট করা যায় না এমন 'কী' জেনারেট করা যাবে। যেসব ধরনের 'কী' কাজ করে সেগুলি হল ২০৪৮ পর্যন্ত
modulusLengthসহ RSASSA-PKCS1-V1_5 এবংnamedCurveP-256 সহ ECDSA। KeyPermissions নীতি দ্বারা এক্সটেনশনটি অনুমোদিত না হলে, প্রতিটি 'কী' ডেটা সাইন করার জন্য সর্বাধিক একবার ব্যবহার করা যেতে পারে, সেক্ষেত্রে 'কী' অনির্দিষ্টকালের জন্য ব্যবহার করা যেতে পারে।নির্দিষ্ট
Token-এ জেনারেট করা 'কী' অন্য কোনও টোকেনের সাথে ব্যবহার করা যাবে না, এমনকিwindow.crypto.subtle-এর সাথেও ব্যবহার করা যাবে না। একইভাবে,window.crypto.subtle-এর মাধ্যমে তৈরি করাKeyঅবজেক্ট এই ইন্টারফেসে ব্যবহার করা যাবে না।
পদ্ধতি
challengeKey()
browser.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
): Promise<ArrayBuffer>
challengeMachineKey এবং challengeUserKey-এর মতো, তবে রেজিস্টার করা 'কী'-এর অ্যালগরিদম নির্দিষ্ট করার অনুমতি দেয়। হার্ডওয়্যার-ব্যাকড Enterprise মেশিন কী-কে চ্যালেঞ্জ করে এবং রিমোট অ্যাটেসটেশন প্রোটোকলের অংশ হিসেবে উত্তর দেয়। শুধুমাত্র ChromeOS-এ এবং যাচাই করা অ্যাক্সেস ওয়েব API-এর সাথে ব্যবহার করা যায় যা চ্যালেঞ্জ ইস্যু করে এবং উত্তর যাচাই করে।
যাচাই করা অ্যাক্সেস ওয়েব API-এর মাধ্যমে সফলভাবে যাচাই করা হলে তা থেকে বোঝা যায় যে বর্তমান ডিভাইসটি একটি বৈধ ChromeOS ডিভাইস, যাচাইকরণের সময় উল্লেখ করা ডোমেন বর্তমান ডিভাইসটি ম্যানেজ করে, যাচাইকরণের সময় উল্লেখ করা ডোমেন বর্তমান সাইন-ইন করা ব্যবহারকারীকে ম্যানেজ করে এবং বর্তমান ডিভাইসের স্ট্যাটাস এন্টারপ্রাইজ ডিভাইস নীতি মেনে চলে। যেমন, কোনও নীতিতে উল্লেখ করা থাকতে পারে যে ডিভাইসটি যেন ডেভেলপার মোডে না থাকে। যাচাইকরণের মাধ্যমে নির্গত যেকোনও ডিভাইসের পরিচয় বর্তমান ডিভাইসের হার্ডওয়্যারের সাথে শক্তভাবে আবদ্ধ থাকে। "user" স্কোপ নির্দিষ্ট করা থাকলে, পরিচয়টি বর্তমানে সাইন-ইন করা ব্যবহারকারীর সাথেও দৃঢ়ভাবে আবদ্ধ থাকে।
এই ফাংশনটি অত্যন্ত সীমাবদ্ধ এবং বর্তমান ডিভাইস ম্যানেজ করা না হলে, বর্তমান ব্যবহারকারী ম্যানেজ করা না হলে বা এন্টারপ্রাইজ ডিভাইস নীতি দ্বারা কলারের জন্য এই অপারেশনটি স্পষ্টভাবে চালু না করা হলে এটি কাজ করবে না। চ্যালেঞ্জ করা 'কী' "system" বা "user" টোকেনে থাকে না এবং অন্য কোনও API-এর মাধ্যমে অ্যাক্সেস করা যায় না।
প্যারামিটারগুলি
-
বিকল্প
ChallengeKeyOptions-এ নির্দিষ্ট করা ফিল্ড সহ অবজেক্ট।
রিটার্ন
-
প্রতিশ্রুতি<অ্যারেবাফার>
Chrome 131+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা চ্যালেঞ্জের উত্তর দিয়ে সমাধান করে।
challengeMachineKey()
browser.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
): Promise<ArrayBuffer>
পরিবর্তে challengeKey ব্যবহার করুন।
হার্ডওয়্যার-ব্যাকড Enterprise Machine Key-কে চ্যালেঞ্জ করে এবং রিমোট অ্যাটেসটেশন প্রোটোকলের অংশ হিসেবে উত্তর প্রদান করে। শুধুমাত্র ChromeOS-এ এবং যাচাই করা অ্যাক্সেস ওয়েব API-এর সাথে ব্যবহার করা যায় যা চ্যালেঞ্জ ইস্যু করে এবং উত্তর যাচাই করে। যাচাই করা অ্যাক্সেস ওয়েব API-এর মাধ্যমে সফলভাবে যাচাই করা হলে, তা নিম্নলিখিত সবকটি বিষয়কে জোরালোভাবে ইঙ্গিত করে: * বর্তমান ডিভাইসটি একটি বৈধ ChromeOS ডিভাইস। * বর্তমান ডিভাইসটি যাচাইকরণের সময় নির্দিষ্ট করা ডোমেন দ্বারা ম্যানেজ করা হয়। * বর্তমানে সাইন-ইন করা ব্যবহারকারীকে যাচাইকরণের সময় নির্দিষ্ট করা ডোমেন ম্যানেজ করে। * ডিভাইসের বর্তমান অবস্থা এন্টারপ্রাইজ ডিভাইস নীতি মেনে চলে। যেমন, কোনও নীতিতে উল্লেখ করা থাকতে পারে যে ডিভাইসটি যেন ডেভেলপার মোডে না থাকে। * যাচাইকরণের মাধ্যমে নির্গত যেকোনও ডিভাইসের পরিচয় বর্তমান ডিভাইসের হার্ডওয়্যারের সাথে শক্তভাবে আবদ্ধ থাকে। এই ফাংশনটি অত্যন্ত সীমাবদ্ধ এবং বর্তমান ডিভাইস ম্যানেজ করা না হলে, বর্তমান ব্যবহারকারী ম্যানেজ করা না হলে বা এন্টারপ্রাইজ ডিভাইস নীতি দ্বারা কলারের জন্য এই অপারেশনটি স্পষ্টভাবে চালু না করা হলে এটি কাজ করবে না। এন্টারপ্রাইজ মেশিন কী "system" টোকেনে থাকে না এবং অন্য কোনও API-এর মাধ্যমে অ্যাক্সেস করা যায় না।
প্যারামিটারগুলি
-
চ্যালেঞ্জ
ArrayBuffer
Verified Access Web API-এর মাধ্যমে নির্গত চ্যালেঞ্জ।
-
registerKey
বুলিয়ান ঐচ্ছিক
Chrome 59+ Chrome 148 থেকে browser.*সেট করা থাকলে, বর্তমান এন্টারপ্রাইজ মেশিন কী
"system"টোকেনের সাথে রেজিস্টার করা হয় এবং এন্টারপ্রাইজ মেশিন কী-এর ভূমিকা ত্যাগ করে। তারপর, 'কী'টি একটি সার্টিফিকেটের সাথে যুক্ত করা যেতে পারে এবং অন্য যেকোনও সাইনিং 'কী'-এর মতো ব্যবহার করা যেতে পারে। এই 'কী' হল ২০৪৮-বিট RSA। এই ফাংশনে পরবর্তী কলগুলি তখন একটি নতুন এন্টারপ্রাইজ মেশিন কী তৈরি করবে।
রিটার্ন
-
প্রতিশ্রুতি<অ্যারেবাফার>
Chrome 131+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা চ্যালেঞ্জের উত্তর দিয়ে সমাধান করে।
challengeUserKey()
browser.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
): Promise<ArrayBuffer>
পরিবর্তে challengeKey ব্যবহার করুন।
হার্ডওয়্যার-ব্যাকড এন্টারপ্রাইজ ব্যবহারকারী কী-কে চ্যালেঞ্জ করে এবং রিমোট অ্যাটেসটেশন প্রোটোকলের অংশ হিসেবে উত্তর প্রদান করে। শুধুমাত্র ChromeOS-এ এবং যাচাই করা অ্যাক্সেস ওয়েব API-এর সাথে ব্যবহার করা যায় যা চ্যালেঞ্জ ইস্যু করে এবং উত্তর যাচাই করে। যাচাই করা অ্যাক্সেস ওয়েব API-এর মাধ্যমে সফলভাবে যাচাই করা হলে, তা নিম্নলিখিত সবকটি বিষয়কে জোরালোভাবে ইঙ্গিত করে: * বর্তমান ডিভাইসটি একটি বৈধ ChromeOS ডিভাইস। * বর্তমান ডিভাইসটি যাচাইকরণের সময় নির্দিষ্ট করা ডোমেন দ্বারা ম্যানেজ করা হয়। * বর্তমানে সাইন-ইন করা ব্যবহারকারীকে যাচাইকরণের সময় নির্দিষ্ট করা ডোমেন ম্যানেজ করে। * ডিভাইসের বর্তমান স্ট্যাটাস এন্টারপ্রাইজ ব্যবহারকারীর নীতি মেনে চলে। যেমন, কোনও নীতিতে উল্লেখ করা থাকতে পারে যে ডিভাইসটি যেন ডেভেলপার মোডে না থাকে। * যাচাইকরণের মাধ্যমে যে পাবলিক কী পাওয়া যায় তা বর্তমান ডিভাইসের হার্ডওয়্যার এবং বর্তমান সাইন-ইন করা ব্যবহারকারীর সাথে শক্তভাবে আবদ্ধ থাকে। এই ফাংশনটি অত্যন্ত সীমাবদ্ধ এবং বর্তমান ডিভাইসটি ম্যানেজ করা না হলে, বর্তমান ব্যবহারকারী ম্যানেজ করা না হলে বা এন্টারপ্রাইজ ব্যবহারকারীর নীতি দ্বারা কলারের জন্য এই অপারেশনটি স্পষ্টভাবে চালু না করা হলে এটি কাজ করবে না। এন্টারপ্রাইজ ব্যবহারকারীর 'কী' "user" টোকেনে থাকে না এবং অন্য কোনও API-এর মাধ্যমে অ্যাক্সেস করা যায় না।
প্যারামিটারগুলি
-
চ্যালেঞ্জ
ArrayBuffer
Verified Access Web API-এর মাধ্যমে নির্গত চ্যালেঞ্জ।
-
registerKey
বুলিয়ান
সেট করা থাকলে, বর্তমান এন্টারপ্রাইজ ব্যবহারকারীর 'কী'
"user"টোকেনের সাথে রেজিস্টার করা হয় এবং এন্টারপ্রাইজ ব্যবহারকারীর 'কী' ভূমিকা ছেড়ে দেয়। তারপর, 'কী'টি একটি সার্টিফিকেটের সাথে যুক্ত করা যেতে পারে এবং অন্য যেকোনও সাইনিং 'কী'-এর মতো ব্যবহার করা যেতে পারে। এই 'কী' হল ২০৪৮-বিট RSA। এই ফাংশনে পরবর্তী কলগুলি তখন একটি নতুন এন্টারপ্রাইজ ব্যবহারকারী কী তৈরি করবে।
রিটার্ন
-
প্রতিশ্রুতি<অ্যারেবাফার>
Chrome 131+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা চ্যালেঞ্জের উত্তর দিয়ে সমাধান করে।
getCertificates()
browser.enterprise.platformKeys.getCertificates(
tokenId: string,
): Promise<ArrayBuffer[]>
প্রদত্ত টোকেন থেকে উপলভ্য সব ক্লায়েন্ট সার্টিফিকেটের তালিকা দেখায়। নির্দিষ্ট যাচাইকরণের জন্য ব্যবহারযোগ্য ক্লায়েন্ট সার্টিফিকেট আছে কিনা এবং তার মেয়াদ শেষ হয়ে গেছে কিনা তা চেক করার জন্য ব্যবহার করা যেতে পারে।
প্যারামিটারগুলি
-
tokenId
স্ট্রিং
getTokens-এর মাধ্যমে রিটার্ন করা টোকেনের আইডি।
রিটার্ন
-
<ArrayBuffer[]> প্রমিস করুন
Chrome 131+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা উপলভ্য সার্টিফিকেটের তালিকা সহ সমাধান করে।
getTokens()
browser.enterprise.platformKeys.getTokens(): Promise<Token[]>
উপলভ্য টোকেন দেখায়। সাধারণ ব্যবহারকারীর সেশনে তালিকায় সবসময় id "user" সহ ব্যবহারকারীর টোকেন থাকবে। সিস্টেম-ব্যাপী TPM টোকেন উপলভ্য থাকলে, ফেরত পাঠানো তালিকায় id "system" সহ সিস্টেম-ব্যাপী টোকেনও থাকবে। এই ডিভাইসের (যেমন, Chromebook) সব সেশনের জন্য সিস্টেম-ওয়াইড টোকেন একই হবে।
রিটার্ন
-
Promise<Token[]>
Chrome 131+ Chrome 148 থেকে browser.*উপলভ্য টোকেনের তালিকা সহ
getTokens-এর মাধ্যমে ইনভোক করা হয়েছে।
importCertificate()
browser.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
সার্টিফায়েড কী আগে থেকেই এই টোকেনে স্টোর করা থাকলে, প্রদত্ত টোকেনে certificate ইমপোর্ট করে। সার্টিফিকেশন অনুরোধ সফল হওয়ার পরে, প্রাপ্ত সার্টিফিকেট স্টোর করতে এবং যাচাইকরণের জন্য অপারেটিং সিস্টেম ও ব্রাউজারে তা উপলভ্য করতে এই ফাংশন ব্যবহার করা উচিত।
প্যারামিটারগুলি
-
tokenId
স্ট্রিং
getTokens-এর মাধ্যমে রিটার্ন করা টোকেনের আইডি। -
শংসাপত্র
ArrayBuffer
X.509 সার্টিফিকেটের DER এনকোডিং।
রিটার্ন
-
<void> প্রমিস
Chrome 131+ Chrome 148 থেকে browser.*এই অপারেশন শেষ হলে, একটি Promise রিটার্ন করে যা সমাধান করে।
removeCertificate()
browser.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
প্রদত্ত টোকেনে certificate থাকলে তা সরিয়ে দেয়। পুরনো সার্টিফিকেট সরিয়ে দেওয়ার জন্য ব্যবহার করা উচিত যাতে যাচাইকরণের সময় সেগুলি বিবেচনা করা না হয় এবং সার্টিফিকেট বেছে নেওয়ার সময় বিশৃঙ্খলা সৃষ্টি না করে। সার্টিফিকেট স্টোরে স্টোরেজ খালি করার জন্য ব্যবহার করা উচিত।
প্যারামিটারগুলি
-
tokenId
স্ট্রিং
getTokens-এর মাধ্যমে রিটার্ন করা টোকেনের আইডি। -
শংসাপত্র
ArrayBuffer
X.509 সার্টিফিকেটের DER এনকোডিং।
রিটার্ন
-
<void> প্রমিস
Chrome 131+ Chrome 148 থেকে browser.*এই অপারেশন শেষ হলে, একটি Promise রিটার্ন করে যা সমাধান করে।