browser.certificateProvider

বিবরণ

প্ল্যাটফর্মে সার্টিফিকেট প্রকাশ করতে এই API ব্যবহার করুন, যা TLS যাচাইকরণের জন্য এই সার্টিফিকেটগুলি ব্যবহার করতে পারে।

অনুমতি

certificateProvider

উপলভ্যতা

Chrome 46+ Chrome 148 থেকে browser.* শুধুমাত্র ChromeOS

ধারণা ও ব্যবহার

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

Chrome 86+ Chrome 148 থেকে browser.*

কাজ করে এমন ক্রিপ্টোগ্রাফিক সিগনেচার অ্যালগরিদমের ধরন।

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

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • certificatesRequestId

    নম্বর

    setCertificates-এ পাস করার জন্য অনুরোধ শনাক্তকারী।

ClientCertificateInfo

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • certificateChain

    ArrayBuffer[]

    অ্যারেতে প্রথম এলিমেন্ট হিসেবে X.509 ক্লায়েন্ট সার্টিফিকেটের DER এনকোডিং থাকতে হবে।

    এতে অবশ্যই ঠিক একটি সার্টিফিকেট থাকতে হবে।

  • supportedAlgorithms

    এই সার্টিফিকেটের জন্য সব অ্যালগোরিদম কাজ করে। এইসব অ্যালগরিদমের মধ্যে কোনও একটি ব্যবহার করে স্বাক্ষরের জন্য এক্সটেনশনকে অনুরোধ করা হবে।

Error

Chrome 86+ Chrome 148 থেকে browser.*

এক্সটেনশন যে ধরনের সমস্যার ব্যাপারে অভিযোগ করতে পারে।

ভ্যালু

"GENERAL_ERROR"

Hash

বন্ধ করে দেওয়া হয়েছে। Algorithm দিয়ে প্রতিস্থাপন করা হয়েছে।

Enum

"MD5_SHA1"
MD5 এবং SHA1 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।

"SHA1"
SHA1 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।

"SHA256"
SHA256 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।

"SHA384"
SHA384 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।

"SHA512"
SHA512 হ্যাশিং অ্যালগরিদম নির্দিষ্ট করে।

PinRequestErrorType

Chrome 57+ Chrome 148 থেকে browser.*

requestPin ফাংশনের মাধ্যমে ব্যবহারকারীকে যে ধরনের সমস্যার মেসেজ দেখানো হতে পারে।

Enum

"INVALID_PIN"
পিনটি ভুল বলে উল্লেখ করে।

"INVALID_PUK"
PUK ভুল হলে এটি উল্লেখ করে।

"MAX_ATTEMPTS_EXCEEDED"
সর্বাধিক কতবার চেষ্টা করা যাবে সেই সংখ্যা পেরিয়ে গেছে বলে উল্লেখ করে।

"UNKNOWN_ERROR"
উল্লেখ করে যে উপরের ধরনগুলি দ্বারা ত্রুটিটি উপস্থাপন করা যাবে না।

PinRequestType

Chrome 57+ Chrome 148 থেকে browser.*

requestPin ফাংশনের মাধ্যমে এক্সটেনশন যে ধরনের কোডের জন্য অনুরোধ করছে।

Enum

"PIN"
অনুরোধ করা কোডটি যে একটি পিন তা নির্দিষ্ট করে।

"PUK"
অনুরোধ করা কোডটি যে PUK তা নির্দিষ্ট করে।

PinResponseDetails

Chrome 57+ Chrome 148 থেকে browser.*

প্রপার্টি

  • userInput

    স্ট্রিং ঐচ্ছিক

    ব্যবহারকারীর দেওয়া কোড। ব্যবহারকারী ডায়ালগ বন্ধ করে দিলে বা অন্য কোনও সমস্যা হলে খালি থাকে।

ReportSignatureDetails

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • সমস্যা

    "GENERAL_ERROR"
     ঐচ্ছিক

    স্বাক্ষর তৈরি করার সময় কোনও সমস্যা হলে, সেটি।

  • signRequestId

    নম্বর

    onSignatureRequested ইভেন্টের মাধ্যমে পাওয়া অনুরোধের শনাক্তকারী।

  • স্বাক্ষর

    ArrayBuffer ঐচ্ছিক

    স্বাক্ষর, যদি সফলভাবে তৈরি করা হয়।

RequestPinDetails

Chrome 57+ Chrome 148 থেকে browser.*

প্রপার্টি

  • attemptsLeft

    নম্বর ঐচ্ছিক

    আর কতবার চেষ্টা করা যাবে। এটি প্রদান করা হয় যাতে যেকোনও UI ব্যবহারকারীকে এই তথ্য দেখাতে পারে। Chrome এটি এনফোর্স করবে বলে আশা করা হয় না, পরিবর্তে পিন অনুরোধের সংখ্যা সীমা অতিক্রম করলে, stopPinRequest এক্সটেনশন দ্বারা errorType = MAX_ATTEMPTS_EXCEEDED সহ কল করা উচিত।

  • errorType

    PinRequestErrorType ঐচ্ছিক

    ব্যবহারকারীকে দেখানো সমস্যার টেমপ্লেট। আগের অনুরোধ ব্যর্থ হলে এটি সেট করা উচিত, যাতে ব্যবহারকারীকে ব্যর্থতার কারণ জানানো যায়।

  • requestType

    PinRequestType ঐচ্ছিক

    অনুরোধ করা কোডের ধরন। ডিফল্ট হল পিন।

  • signRequestId

    নম্বর

    SignRequest-এ Chrome-এর দেওয়া আইডি।

SetCertificatesDetails

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • certificatesRequestId

    নম্বর ঐচ্ছিক

    onCertificatesUpdateRequested-এর উত্তরে কল করা হলে, প্রাপ্ত certificatesRequestId ভ্যালু থাকতে হবে। অন্যথায়, আনসেট করা উচিত।

  • clientCertificates

    বর্তমানে উপলভ্য ক্লায়েন্ট সার্টিফিকেটের তালিকা।

  • সমস্যা

    "GENERAL_ERROR"
     ঐচ্ছিক

    সার্টিফিকেট এক্সট্র্যাক্ট করার সময় কোনও সমস্যা হলে, সেটি। উপযুক্ত হলে এই সমস্যা ব্যবহারকারীকে দেখানো হবে।

SignatureRequest

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • অ্যালগরিদম

    স্বাক্ষর সম্পর্কিত অ্যালগরিদম ব্যবহার করতে হবে।

  • শংসাপত্র

    ArrayBuffer

    X.509 সার্টিফিকেটের DER এনকোডিং। এক্সটেনশনকে অবশ্যই সংশ্লিষ্ট ব্যক্তিগত কী ব্যবহার করে input সাইন করতে হবে।

  • ইনপুট

    ArrayBuffer

    ডেটাতে স্বাক্ষর করতে হবে। মনে রাখবেন যে ডেটা হ্যাশ করা হয় না।

  • signRequestId

    নম্বর

    reportSignature-এ পাস করার জন্য অনুরোধ শনাক্তকারী।

SignRequest

প্রপার্টি

  • শংসাপত্র

    ArrayBuffer

    X.509 সার্টিফিকেটের DER এনকোডিং। এক্সটেনশনকে অবশ্যই সংশ্লিষ্ট ব্যক্তিগত কী ব্যবহার করে digest সাইন করতে হবে।

  • ডাইজেস্ট

    ArrayBuffer

    ডাইজেস্ট যাতে অবশ্যই স্বাক্ষর করতে হবে।

  • হ্যাশ

    digest তৈরি করতে যে হ্যাশ অ্যালগরিদম ব্যবহার করা হয়েছে, এটি তার উল্লেখ করে।

  • signRequestId

    নম্বর

    Chrome 57+ Chrome 148 থেকে browser.*

    এক্সটেনশনের মাধ্যমে ব্যবহার করার জন্য অনন্য আইডি, যদি এটির প্রয়োজন হয় এমন একটি পদ্ধতি কল করার প্রয়োজন হয়, যেমন requestPin।

StopPinRequestDetails

Chrome 57+ Chrome 148 থেকে browser.*

প্রপার্টি

  • errorType

    PinRequestErrorType ঐচ্ছিক

    সমস্যার টেমপ্লেট। উপস্থিত থাকলে এটি ব্যবহারকারীকে দেখানো হয়। কোনও সমস্যার কারণে ফ্লো বন্ধ হয়ে গেলে, তার কারণ উল্লেখ করার জন্য এটি ব্যবহার করা হয়, যেমন MAX_ATTEMPTS_EXCEEDED।

  • signRequestId

    নম্বর

    SignRequest-এ Chrome-এর দেওয়া আইডি।

পদ্ধতি

reportSignature()

Chrome 86+ Chrome 148 থেকে browser.*
browser.certificateProvider.reportSignature(
  details: ReportSignatureDetails,
)
: Promise<void>

onSignatureRequested-এর উত্তর হিসেবে কল করা উচিত।

এক্সটেনশনকে অবশ্যই প্রতিটি onSignatureRequested ইভেন্টের জন্য এই ফাংশনটি কল করতে হবে; API ইমপ্লিমেন্টেশন কিছু সময় পরে এই কলের জন্য অপেক্ষা করা বন্ধ করে দেবে এবং এই ফাংশনটি কল করা হলে টাইমআউট ত্রুটি সহ উত্তর দেবে।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    Chrome 96+ Chrome 148 থেকে browser.*

requestPin()

Chrome 57+ Chrome 148 থেকে browser.*
browser.certificateProvider.requestPin(
  details: RequestPinDetails,
)
: Promise<PinResponseDetails | undefined>

ব্যবহারকারীর থেকে পিন চায়। একবারে শুধুমাত্র একটি অনুরোধই করা যাবে। অন্য একটি ফ্লো চলাকালীন করা অনুরোধ বাতিল করা হয়। অন্য কোনও ফ্লো প্রসেস করা হলে, পরে আবার চেষ্টা করার দায়িত্ব এক্সটেনশনের।

প্যারামিটারগুলি

  • বিস্তারিত বিবরণ

    অনুরোধ করা ডায়ালগ সম্পর্কে বিবরণ থাকে।

রিটার্ন

  • প্রতিশ্রুতি<PinResponseDetails | অনির্দিষ্ট>

    Chrome 96+ Chrome 148 থেকে browser.*

    ব্যবহারকারী পিন প্রদান করলে, একটি প্রমিস রিটার্ন করে যা সমাধান করে। ডায়ালগ অনুরোধ সম্পূর্ণ না হলে (যেমন, ব্যবহারকারী ডায়ালগ বাতিল করলে বা দেখানোর অনুমতি না দিলে) সমস্যা সহ বাতিল করে।

setCertificates()

Chrome 86+ Chrome 148 থেকে browser.*
browser.certificateProvider.setCertificates(
  details: SetCertificatesDetails,
)
: Promise<void>

ব্রাউজারে ব্যবহার করার জন্য সার্টিফিকেটের তালিকা সেট করে।

এক্সটেনশনটি শুরু করার পরে এবং বর্তমানে উপলভ্য সার্টিফিকেটের সেটে প্রতিটি পরিবর্তনের পরে এই ফাংশনটি কল করা উচিত। এই ইভেন্টটি যতবার পাওয়া যাবে ততবার onCertificatesUpdateRequested-এর উত্তরে এক্সটেনশনকেও এই ফাংশনটি কল করতে হবে।

প্যারামিটারগুলি

  • বিস্তারিত বিবরণ

    সেট করার জন্য সার্টিফিকেট। ভুল সার্টিফিকেট এড়িয়ে যাওয়া হবে।

রিটার্ন

  • <void> প্রমিস

    Chrome 96+ Chrome 148 থেকে browser.*

    একটি Promise রিটার্ন করে যা সম্পূর্ণ হওয়ার পরে সমাধান হয়।

stopPinRequest()

Chrome 57+ Chrome 148 থেকে browser.*
browser.certificateProvider.stopPinRequest(
  details: StopPinRequestDetails,
)
: Promise<void>

requestPin ফাংশনের মাধ্যমে শুরু করা পিন অনুরোধ বন্ধ করে।

প্যারামিটারগুলি

  • বিস্তারিত বিবরণ

    অনুরোধের ফ্লো বন্ধ করার কারণ সম্পর্কে বিবরণ থাকে।

রিটার্ন

  • <void> প্রমিস

    Chrome 96+ Chrome 148 থেকে browser.*

    একটি Promise রিটার্ন করে যা পিন ডায়ালগ বন্ধ করার অনুরোধ সম্পূর্ণ হলে সমাধান হয়ে যায়।

ইভেন্ট

onCertificatesUpdateRequested

Chrome 86+ Chrome 148 থেকে browser.*
browser.certificateProvider.onCertificatesUpdateRequested.addListener(
  callback: function,
)

setCertificates-এর মাধ্যমে সেট করা সার্টিফিকেট যথেষ্ট না হলে অথবা ব্রাউজার আপডেট করা তথ্যের অনুরোধ করলে এই ইভেন্ট ট্রিগার হয়। এক্সটেনশনকে অবশ্যই সার্টিফিকেটের আপডেট করা তালিকা এবং প্রাপ্ত certificatesRequestId সহ setCertificates কল করতে হবে।

প্যারামিটারগুলি

onSignatureRequested

Chrome 86+ Chrome 148 থেকে browser.*
browser.certificateProvider.onSignatureRequested.addListener(
  callback: function,
)

setCertificates-এর মাধ্যমে এই এক্সটেনশনের দেওয়া সার্টিফিকেট ব্যবহার করে ব্রাউজারকে যখনই কোনও মেসেজ সাইন করতে হয়, তখনই এই ইভেন্ট ট্রিগার হয়।

এক্সটেনশনকে অবশ্যই উপযুক্ত অ্যালগরিদম এবং ব্যক্তিগত কী ব্যবহার করে request থেকে ইনপুট ডেটা সাইন করতে হবে এবং প্রাপ্ত signRequestId সহ reportSignature কল করে এটি ফেরত দিতে হবে।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (request: SignatureRequest) => void