বিবরণ
প্ল্যাটফর্মে সার্টিফিকেট প্রকাশ করতে এই API ব্যবহার করুন, যা TLS যাচাইকরণের জন্য এই সার্টিফিকেটগুলি ব্যবহার করতে পারে।
অনুমতি
certificateProviderউপলভ্যতা
ধারণা ও ব্যবহার
ChromeOS-এ ক্লায়েন্ট সার্টিফিকেট দেখানোর জন্য এই API-এর সাধারণ ব্যবহার এইসব ধাপ অনুসরণ করে:
- এক্সটেনশনটি
onCertificatesUpdateRequestedএবংonSignatureRequestedইভেন্টের জন্য রেজিস্টার করে। - এক্সটেনশনটি শুরু করার পরে সার্টিফিকেটের প্রাথমিক তালিকা প্রদান করার জন্য
setCertificates()কল করে। - এক্সটেনশনটি উপলভ্য সার্টিফিকেটের তালিকায় হওয়া পরিবর্তনগুলি মনিটর করে এবং এই ধরনের প্রতিটি পরিবর্তন সম্পর্কে ব্রাউজারকে জানানোর জন্য
setCertificates()কল করে। - TLS হ্যান্ডশেক চলাকালীন, ব্রাউজার একটি ক্লায়েন্ট সার্টিফিকেট অনুরোধ পায়।
onCertificatesUpdateRequestedইভেন্টের মাধ্যমে, ব্রাউজার এক্সটেনশনকে বর্তমানে প্রদান করা সব সার্টিফিকেট সম্পর্কে রিপোর্ট করতে বলে। setCertificates()পদ্ধতি ব্যবহার করে, এক্সটেনশন বর্তমানে উপলভ্য সার্টিফিকেট সহ রিপোর্ট করে।- রিমোট হোস্ট থেকে ক্লায়েন্ট সার্টিফিকেটের অনুরোধের সাথে ব্রাউজার উপলভ্য সব সার্টিফিকেট ম্যাচ করে। ব্যবহারকারীকে একটি সিলেকশন ডায়ালগে ম্যাচগুলি দেখানো হয়।
- ব্যবহারকারী একটি সার্টিফিকেট বেছে নিতে পারেন এবং এর মাধ্যমে যাচাইকরণ অনুমোদন বা বাতিল করতে পারেন।
- ব্যবহারকারী যাচাইকরণ বাতিল করলে বা অনুরোধের সাথে কোনও সার্টিফিকেট ম্যাচ না করলে, TLS ক্লায়েন্ট যাচাইকরণ বাতিল করা হয়।
- অন্যথায়, ব্যবহারকারী যদি এই এক্সটেনশনের মাধ্যমে প্রদান করা সার্টিফিকেটের সাহায্যে যাচাইকরণ অনুমোদন করেন, তাহলে ব্রাউজার TLS হ্যান্ডশেক চালিয়ে যাওয়ার জন্য ডেটা সাইন করতে এক্সটেনশনকে অনুরোধ করে। অনুরোধটি
onSignatureRequestedইভেন্ট হিসেবে পাঠানো হয়েছে। - এই ইভেন্টে ইনপুট ডেটা থাকে, সিগনেচার তৈরি করার জন্য কোন অ্যালগরিদম ব্যবহার করতে হবে তা ঘোষণা করে এবং এই এক্সটেনশনের মাধ্যমে রিপোর্ট করা হয়েছে এমন একটি সার্টিফিকেটের উল্লেখ করে। এক্সটেনশনকে অবশ্যই রেফারেন্স করা সার্টিফিকেটের সাথে যুক্ত ব্যক্তিগত কী ব্যবহার করে প্রদত্ত ডেটার জন্য একটি স্বাক্ষর তৈরি করতে হবে। স্বাক্ষর তৈরি করার জন্য, প্রকৃত স্বাক্ষরের আগে একটি DigestInfo প্রিপেন্ড করা এবং ফলাফল প্যাড করার প্রয়োজন হতে পারে।
- এক্সটেনশনটি
reportSignature()পদ্ধতি ব্যবহার করে ব্রাউজারে স্বাক্ষর ফেরত পাঠায়। স্বাক্ষর গণনা করা না গেলে, স্বাক্ষর ছাড়াই পদ্ধতিটি কল করতে হবে। - স্বাক্ষর প্রদান করা হলে, ব্রাউজার TLS হ্যান্ডশেক সম্পূর্ণ করে।
ধাপের আসল ক্রম আলাদা হতে পারে। যেমন, অটোমেটিক সার্টিফিকেট বেছে নেওয়ার জন্য এন্টারপ্রাইজ নীতি ব্যবহার করা হলে, ব্যবহারকারীকে সার্টিফিকেট বেছে নিতে বলা হবে না (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() {
browser.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.
browser.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.
browser.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
error: 'GENERAL_ERROR'
});
return;
}
const signature = signUnhashedData(key, request.input, request.algorithm);
browser.certificateProvider.reportSignature({
signRequestId: request.signRequestId,
signature: signature
});
}
browser.certificateProvider.onCertificatesUpdateRequested.addListener(
handleCertificatesUpdateRequest);
browser.certificateProvider.onSignatureRequested.addListener(
handleSignatureRequest);
ধরন
Algorithm
কাজ করে এমন ক্রিপ্টোগ্রাফিক সিগনেচার অ্যালগরিদমের ধরন।
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 এনকোডিং হতে হবে। বর্তমানে, শুধুমাত্র RSA কী-এর সার্টিফিকেট কাজ করে।
-
supportedHashes
হ্যাশ[]
এই সার্টিফিকেটের জন্য কাজ করে এমন সব হ্যাশে সেট করতে হবে। এই এক্সটেনশনটি শুধুমাত্র এই হ্যাশ অ্যালগরিদমগুলির একটির সাথে গণনা করা ডাইজেস্টের স্বাক্ষরের জন্য জিজ্ঞাসা করা হবে। এটি হ্যাশ সংক্রান্ত পছন্দের নিম্নক্রম অনুযায়ী হতে হবে।
CertificatesUpdateRequest
প্রপার্টি
-
certificatesRequestId
নম্বর
setCertificates-এ পাস করার জন্য অনুরোধ শনাক্তকারী।
ClientCertificateInfo
প্রপার্টি
-
certificateChain
ArrayBuffer[]
অ্যারেতে প্রথম এলিমেন্ট হিসেবে X.509 ক্লায়েন্ট সার্টিফিকেটের DER এনকোডিং থাকতে হবে।
এতে অবশ্যই ঠিক একটি সার্টিফিকেট থাকতে হবে।
-
supportedAlgorithms
এই সার্টিফিকেটের জন্য সব অ্যালগোরিদম কাজ করে। এইসব অ্যালগরিদমের মধ্যে কোনও একটি ব্যবহার করে স্বাক্ষরের জন্য এক্সটেনশনকে অনুরোধ করা হবে।
Error
এক্সটেনশন যে ধরনের সমস্যার ব্যাপারে অভিযোগ করতে পারে।
ভ্যালু
"GENERAL_ERROR"
Hash
বন্ধ করে দেওয়া হয়েছে। Algorithm দিয়ে প্রতিস্থাপন করা হয়েছে।
Enum
"MD5_SHA1"
MD5 এবং SHA1 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।
"SHA1"
SHA1 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।
"SHA256"
SHA256 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।
"SHA384"
SHA384 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।
"SHA512"
SHA512 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।
PinRequestErrorType
requestPin ফাংশনের মাধ্যমে ব্যবহারকারীকে যে ধরনের সমস্যার মেসেজ দেখানো হতে পারে।
Enum
"INVALID_PIN"
পিনটি ভুল বলে উল্লেখ করে।
"INVALID_PUK"
PUK ভুল হলে এটি উল্লেখ করে।
"MAX_ATTEMPTS_EXCEEDED"
সর্বাধিক কতবার চেষ্টা করা যাবে সেই সংখ্যা পেরিয়ে গেছে বলে উল্লেখ করে।
"UNKNOWN_ERROR"
উল্লেখ করে যে উপরের ধরনগুলি দ্বারা ত্রুটিটি উপস্থাপন করা যাবে না।
PinRequestType
requestPin ফাংশনের মাধ্যমে এক্সটেনশন যে ধরনের কোডের জন্য অনুরোধ করছে।
Enum
"PIN"
অনুরোধ করা কোডটি যে একটি পিন তা নির্দিষ্ট করে।
"PUK"
অনুরোধ করা কোডটি যে PUK তা নির্দিষ্ট করে।
PinResponseDetails
প্রপার্টি
-
userInput
স্ট্রিং ঐচ্ছিক
ব্যবহারকারীর দেওয়া কোড। ব্যবহারকারী ডায়ালগ বন্ধ করে দিলে বা অন্য কোনও সমস্যা হলে খালি থাকে।
ReportSignatureDetails
প্রপার্টি
-
সমস্যা
"GENERAL_ERROR"
ঐচ্ছিকস্বাক্ষর তৈরি করার সময় কোনও সমস্যা হলে, সেটি।
-
signRequestId
নম্বর
onSignatureRequestedইভেন্টের মাধ্যমে পাওয়া অনুরোধের শনাক্তকারী। -
স্বাক্ষর
ArrayBuffer ঐচ্ছিক
স্বাক্ষর, যদি সফলভাবে তৈরি করা হয়।
RequestPinDetails
প্রপার্টি
-
attemptsLeft
নম্বর ঐচ্ছিক
আর কতবার চেষ্টা করা যাবে। এটি প্রদান করা হয় যাতে যেকোনও UI ব্যবহারকারীকে এই তথ্য দেখাতে পারে। Chrome এটি এনফোর্স করবে বলে আশা করা হয় না, পরিবর্তে পিন অনুরোধের সংখ্যা সীমা অতিক্রম করলে, stopPinRequest এক্সটেনশন দ্বারা errorType = MAX_ATTEMPTS_EXCEEDED সহ কল করা উচিত।
-
errorType
PinRequestErrorType ঐচ্ছিক
ব্যবহারকারীকে দেখানো সমস্যার টেমপ্লেট। আগের অনুরোধ ব্যর্থ হলে এটি সেট করা উচিত, যাতে ব্যবহারকারীকে ব্যর্থতার কারণ জানানো যায়।
-
requestType
PinRequestType ঐচ্ছিক
অনুরোধ করা কোডের ধরন। ডিফল্ট হল পিন।
-
signRequestId
নম্বর
SignRequest-এ Chrome-এর দেওয়া আইডি।
SetCertificatesDetails
প্রপার্টি
-
certificatesRequestId
নম্বর ঐচ্ছিক
onCertificatesUpdateRequested-এর উত্তরে কল করা হলে, প্রাপ্তcertificatesRequestIdভ্যালু থাকতে হবে। অন্যথায়, আনসেট করা উচিত। -
clientCertificates
বর্তমানে উপলভ্য ক্লায়েন্ট সার্টিফিকেটের তালিকা।
-
সমস্যা
"GENERAL_ERROR"
ঐচ্ছিকসার্টিফিকেট এক্সট্র্যাক্ট করার সময় কোনও সমস্যা হলে, সেটি। উপযুক্ত হলে এই সমস্যা ব্যবহারকারীকে দেখানো হবে।
SignatureRequest
প্রপার্টি
-
অ্যালগরিদম
স্বাক্ষর সম্পর্কিত অ্যালগরিদম ব্যবহার করতে হবে।
-
শংসাপত্র
ArrayBuffer
X.509 সার্টিফিকেটের DER এনকোডিং। এক্সটেনশনকে অবশ্যই সংশ্লিষ্ট ব্যক্তিগত কী ব্যবহার করে
inputসাইন করতে হবে। -
ইনপুট
ArrayBuffer
ডেটাতে স্বাক্ষর করতে হবে। মনে রাখবেন যে ডেটা হ্যাশ করা হয় না।
-
signRequestId
নম্বর
reportSignature-এ পাস করার জন্য অনুরোধ শনাক্তকারী।
SignRequest
প্রপার্টি
-
শংসাপত্র
ArrayBuffer
X.509 সার্টিফিকেটের DER এনকোডিং। এক্সটেনশনটিকে অবশ্যই সংশ্লিষ্ট ব্যক্তিগত কী ব্যবহার করে
digestসাইন করতে হবে। -
ডাইজেস্ট
ArrayBuffer
ডাইজেস্ট যাতে অবশ্যই স্বাক্ষর করতে হবে।
-
হ্যাশ
digestতৈরি করতে যে হ্যাশ অ্যালগরিদম ব্যবহার করা হয়েছে, এটি তার উল্লেখ করে। -
signRequestId
নম্বর
Chrome 57+ Chrome 148 থেকে browser.*এক্সটেনশনের মাধ্যমে ব্যবহার করার জন্য অনন্য আইডি, যদি এটির প্রয়োজন হয় এমন একটি পদ্ধতি কল করার প্রয়োজন হয়, যেমন requestPin।
StopPinRequestDetails
প্রপার্টি
-
errorType
PinRequestErrorType ঐচ্ছিক
সমস্যার টেমপ্লেট। উপস্থিত থাকলে এটি ব্যবহারকারীকে দেখানো হয়। কোনও সমস্যার কারণে ফ্লো বন্ধ হয়ে গেলে, তার কারণ উল্লেখ করার জন্য এটি ব্যবহার করা হয়, যেমন MAX_ATTEMPTS_EXCEEDED।
-
signRequestId
নম্বর
SignRequest-এ Chrome-এর দেওয়া আইডি।
পদ্ধতি
reportSignature()
browser.certificateProvider.reportSignature(
details: ReportSignatureDetails,
): Promise<void>
onSignatureRequested-এর উত্তর হিসেবে কল করা উচিত।
এক্সটেনশনকে অবশ্যই প্রতিটি onSignatureRequested ইভেন্টের জন্য এই ফাংশনটি কল করতে হবে; API ইমপ্লিমেন্টেশন কিছু সময় পরে এই কলের জন্য অপেক্ষা করা বন্ধ করে দেবে এবং এই ফাংশনটি কল করা হলে টাইমআউট ত্রুটি সহ উত্তর দেবে।
প্যারামিটারগুলি
-
বিস্তারিত বিবরণ
রিটার্ন
-
<void> প্রমিস
Chrome 96+ Chrome 148 থেকে browser.*
requestPin()
browser.certificateProvider.requestPin(
details: RequestPinDetails,
): Promise<PinResponseDetails | undefined>
ব্যবহারকারীর থেকে পিন চায়। একবারে শুধুমাত্র একটি অনুরোধই করা যাবে। অন্য একটি ফ্লো চলাকালীন করা অনুরোধ বাতিল করা হয়। অন্য কোনও ফ্লো প্রসেস করা হলে, পরে আবার চেষ্টা করার দায়িত্ব এক্সটেনশনের।
প্যারামিটারগুলি
-
বিস্তারিত বিবরণ
অনুরোধ করা ডায়ালগ সম্পর্কে বিবরণ থাকে।
রিটার্ন
-
প্রতিশ্রুতি<PinResponseDetails | অনির্দিষ্ট>
Chrome 96+ Chrome 148 থেকে browser.*ব্যবহারকারী পিন প্রদান করলে, একটি প্রমিস রিটার্ন করে যা সমাধান করে। ডায়ালগ অনুরোধ সম্পূর্ণ না হলে (যেমন, ব্যবহারকারী ডায়ালগ বাতিল করলে বা দেখানোর অনুমতি না দিলে) সমস্যা সহ বাতিল করে।
setCertificates()
browser.certificateProvider.setCertificates(
details: SetCertificatesDetails,
): Promise<void>
ব্রাউজারে ব্যবহার করার জন্য সার্টিফিকেটের তালিকা সেট করে।
এক্সটেনশনটি শুরু করার পরে এবং বর্তমানে উপলভ্য সার্টিফিকেটের সেটে প্রতিটি পরিবর্তনের পরে এই ফাংশনটি কল করা উচিত। এই ইভেন্টটি যতবার পাওয়া যাবে ততবার onCertificatesUpdateRequested-এর উত্তরে এক্সটেনশনকেও এই ফাংশনটি কল করতে হবে।
প্যারামিটারগুলি
-
বিস্তারিত বিবরণ
সেট করার জন্য সার্টিফিকেট। ভুল সার্টিফিকেট এড়িয়ে যাওয়া হবে।
রিটার্ন
-
<void> প্রমিস
Chrome 96+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা সম্পূর্ণ হওয়ার পরে সমাধান হয়।
stopPinRequest()
browser.certificateProvider.stopPinRequest(
details: StopPinRequestDetails,
): Promise<void>
requestPin ফাংশনের মাধ্যমে শুরু করা পিন অনুরোধ বন্ধ করে।
প্যারামিটারগুলি
-
বিস্তারিত বিবরণ
অনুরোধের ফ্লো বন্ধ করার কারণ সম্পর্কে বিবরণ থাকে।
রিটার্ন
-
<void> প্রমিস
Chrome 96+ Chrome 148 থেকে browser.*একটি Promise রিটার্ন করে যা পিন ডায়ালগ বন্ধ করার অনুরোধ সম্পূর্ণ হলে সমাধান হয়ে যায়।
ইভেন্ট
onCertificatesUpdateRequested
browser.certificateProvider.onCertificatesUpdateRequested.addListener(
callback: function,
)
setCertificates-এর মাধ্যমে সেট করা সার্টিফিকেট যথেষ্ট না হলে অথবা ব্রাউজার আপডেট করা তথ্যের অনুরোধ করলে এই ইভেন্ট ট্রিগার হয়। এক্সটেনশনকে অবশ্যই সার্টিফিকেটের আপডেট করা তালিকা এবং প্রাপ্ত certificatesRequestId সহ setCertificates কল করতে হবে।
প্যারামিটারগুলি
-
কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(request: CertificatesUpdateRequest) => void
-
অনুরোধ
-
onSignatureRequested
browser.certificateProvider.onSignatureRequested.addListener(
callback: function,
)
setCertificates-এর মাধ্যমে এই এক্সটেনশনের দেওয়া সার্টিফিকেট ব্যবহার করে ব্রাউজারকে যখনই কোনও মেসেজ সাইন করতে হয়, তখনই এই ইভেন্ট ট্রিগার হয়।
এক্সটেনশনকে অবশ্যই উপযুক্ত অ্যালগরিদম এবং ব্যক্তিগত কী ব্যবহার করে request থেকে ইনপুট ডেটা সাইন করতে হবে এবং প্রাপ্ত signRequestId সহ reportSignature কল করে এটি ফেরত দিতে হবে।
প্যারামিটারগুলি
-
কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(request: SignatureRequest) => void
-
অনুরোধ
-