chrome.platformKeys

توضیحات

از chrome.platformKeys API برای دسترسی به گواهی‌های مشتری که توسط پلتفرم مدیریت می‌شوند، استفاده کنید. اگر کاربر یا خط مشی مجوز را اعطا کند، یک برنامه افزودنی می تواند از چنین گواهینامه ای در پروتکل احراز هویت سفارشی خود استفاده کند. به عنوان مثال، این امکان استفاده از گواهینامه های مدیریت شده پلتفرم را در VPN های شخص ثالث فراهم می کند (به chrome.vpnProvider مراجعه کنید).

مجوزها

platformKeys

در دسترس بودن

فقط Chrome 45+ ChromeOS

انواع

ClientCertificateRequest

خواص

  • مقامات گواهی

    ArrayBuffer[]

    فهرست اسامی متمایز مقامات گواهی مجاز توسط سرور. هر ورودی باید یک X.509 DistinguishedName با کد DER باشد.

  • انواع گواهی

    این فیلد فهرستی از انواع گواهینامه های درخواستی است که به ترتیب اولویت سرور مرتب شده اند. فقط گواهی هایی از یک نوع موجود در این لیست بازیابی می شوند. با این حال، اگر certificateTypes لیست خالی باشد، هر نوع گواهی برگردانده می شود.

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

خواص

  • گواهی

    ArrayBuffer

    رمزگذاری DER یک گواهی X.509.

  • الگوریتم کلید

    شی

    الگوریتم کلید کلید تایید شده. این شامل پارامترهای الگوریتمی است که ذاتی کلید گواهی هستند (مثلاً طول کلید). پارامترهای دیگر مانند تابع هش که توسط تابع علامت استفاده می شود شامل نمی شود.

SelectDetails

خواص

  • گواهی مشتری

    ArrayBuffer[] اختیاری است

    اگر داده شود، selectClientCertificates در این لیست عمل می کند. در غیر این صورت، لیست تمام گواهی‌ها را از فروشگاه‌های گواهی پلتفرم که برای این افزونه‌ها در دسترس هستند، دریافت می‌کند. ورودی هایی که برنامه افزودنی برای آنها مجوز ندارد یا با درخواست مطابقت ندارد، حذف می شوند.

  • تعاملی

    بولی

    اگر درست باشد، لیست فیلتر شده به کاربر ارائه می شود تا به صورت دستی یک گواهی را انتخاب کند و در نتیجه به افزونه اجازه دسترسی به گواهی(ها) و کلید(ها) بدهد. فقط گواهی(های) انتخاب شده بازگردانده می شود. اگر نادرست باشد، فهرست به تمام گواهی‌هایی که افزونه به آنها اجازه دسترسی داده شده است (به صورت خودکار یا دستی) کاهش می‌یابد.

  • درخواست کنید

    فقط گواهی‌هایی که با این درخواست مطابقت دارند بازگردانده می‌شوند.

VerificationDetails

خواص

  • نام میزبان

    رشته

    نام میزبان سرور برای تأیید گواهی، به عنوان مثال سروری که serverCertificateChain را ارائه کرده است.

  • سرور CertificateChain

    ArrayBuffer[]

    هر ورودی زنجیره ای باید رمزگذاری DER یک گواهی X.509 باشد، اولین ورودی باید گواهی سرور باشد و هر ورودی باید ورودی قبل از آن را تأیید کند.

VerificationResult

خواص

  • debug_errors

    رشته[]

    اگر تأیید اعتماد ناموفق باشد، این آرایه حاوی خطاهای گزارش شده توسط لایه شبکه زیرین است. در غیر این صورت، این آرایه خالی است.

    توجه: این لیست فقط برای اشکال زدایی در نظر گرفته شده است و ممکن است شامل تمام خطاهای مربوطه نباشد. خطاهای بازگردانده شده ممکن است در ویرایش های بعدی این API تغییر کنند و تضمینی برای سازگاری با جلو یا عقب وجود ندارد.

  • قابل اعتماد

    بولی

    نتیجه تأیید اعتماد: درست است اگر اعتماد برای جزئیات تأیید داده شده می تواند ایجاد شود و اگر اعتماد به هر دلیلی رد شود نادرست است.

روش ها

getKeyPair()

chrome.platformKeys.getKeyPair(
  certificate: ArrayBuffer,
  parameters: object,
  callback: function,
)

جفت کلید certificate را برای استفاده با platformKeys.subtleCrypto به callback می‌دهد.

پارامترها

  • گواهی

    ArrayBuffer

    گواهی یک Match که توسط selectClientCertificates برگردانده شده است.

  • پارامترها

    شی

    پارامترهای الگوریتم امضا/هش را علاوه بر پارامترهای ثابت شده توسط خود کلید تعیین می کند. پارامترهای مشابه با تابع importKey WebCrypto، به عنوان مثال RsaHashedImportParams برای یک کلید RSASSA-PKCS1-v1_5 و EcKeyImportParams برای کلید EC پذیرفته می شود. علاوه بر این برای کلیدهای RSASSA-PKCS1-v1_5، پارامتر نام الگوریتم هش را می توان با یکی از مقادیر زیر مشخص کرد: "none"، "SHA-1"، "SHA-256"، "SHA-384"، یا "SHA-512" "، به عنوان مثال {"hash": { "name": "none" } } . سپس تابع علامت، padding PKCS#1 v1.5 را اعمال می‌کند اما داده‌های داده شده را هش نمی‌کند.

    در حال حاضر، این روش تنها از الگوریتم های "RSASSA-PKCS1-v1_5" و "ECDSA" پشتیبانی می کند.

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    (publicKey: object, privateKey?: object) => void

    • کلید عمومی

      شی

    • کلید خصوصی

      شی اختیاری

      اگر این افزونه به آن دسترسی نداشته باشد، ممکن است null باشد.

getKeyPairBySpki()

Chrome 85+
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)

جفت کلید شناسایی شده توسط publicKeySpkiDer را برای استفاده با platformKeys.subtleCrypto به callback می دهد.

پارامترها

  • publicKeySpkiDer

    ArrayBuffer

    یک SubjectPublicKeyInfo X.509 رمزگذاری شده با DER که به عنوان مثال با فراخوانی تابع exportKey WebCrypto با format="spki" به دست می آید.

  • پارامترها

    شی

    پارامترهای الگوریتم امضا و هش را علاوه بر مواردی که توسط خود کلید ثابت شده است، ارائه می دهد. پارامترهای مشابه با تابع importKey WebCrypto، به عنوان مثال RsaHashedImportParams برای یک کلید RSASSA-PKCS1-v1_5 پذیرفته می شود. برای کلیدهای RSASSA-PKCS1-v1_5، باید یک پارامتر "hash" { "hash": { "name": string } } نیز ارسال کنیم. پارامتر "هش" نشان دهنده نام الگوریتم هش است که در عملیات هضم قبل از علامت استفاده می شود. این امکان وجود دارد که "none" را به عنوان نام هش ارسال کنید، در این صورت تابع علامت، padding PKCS#1 v1.5 را اعمال می کند و داده های داده شده را هش نمی کند.

    در حال حاضر، این روش از الگوریتم «ECDSA» با نام منحنی P-256 و الگوریتم «RSASSA-PKCS1-v1_5» با یکی از الگوریتم‌های هش «none»، «SHA-1»، «SHA-256»، «SHA» پشتیبانی می‌کند. -384، و "SHA-512".

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    (publicKey: object, privateKey?: object) => void

    • کلید عمومی

      شی

    • کلید خصوصی

      شی اختیاری

      اگر این افزونه به آن دسترسی نداشته باشد، ممکن است null باشد.

selectClientCertificates()

قول بده
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

این روش، گواهی‌هایی را که برای پلتفرم، request تطبیق شناخته شده‌اند و افزونه مجوز دسترسی به گواهی و کلید خصوصی آن را دارد، از فهرستی از گواهی‌های کلاینت فیلتر می‌کند. اگر interactive درست باشد، گفتگویی به کاربر ارائه می‌شود که در آن می‌تواند از گواهی‌های منطبق انتخاب کند و به افزونه اجازه دسترسی به گواهی بدهد. گواهی‌های مشتری انتخاب‌شده/فیلتر شده به callback ارسال می‌شوند.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (matches: Match[]) => void

    • مسابقات

      فهرست گواهی‌هایی که با درخواست مطابقت دارند، که برنامه افزودنی دارای مجوز است و اگر interactive درست باشد، توسط کاربر انتخاب شده‌اند.

برمی گرداند

  • Promise< مطابقت []>

    Chrome 121+

    Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

اجرای SubtleCrypto WebCrypto که به عملیات کریپتو اجازه می‌دهد روی کلیدهای گواهی‌های کلاینت که در این برنامه افزودنی در دسترس هستند.

برمی گرداند

  • شی | تعریف نشده

verifyTLSServerCertificate()

قول بده
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

بررسی می‌کند که آیا می‌توان به details.serverCertificateChain برای details.hostname میزبان با توجه به تنظیمات اعتماد پلت فرم اعتماد کرد. توجه: رفتار واقعی تأیید اعتماد به طور کامل مشخص نشده است و ممکن است در آینده تغییر کند. اجرای API انقضای گواهینامه را تأیید می کند، مسیر صدور گواهینامه را تأیید می کند و اعتماد توسط یک CA شناخته شده را بررسی می کند. این پیاده سازی قرار است به EKU serverAuth احترام بگذارد و از نام های جایگزین موضوع پشتیبانی کند.

پارامترها

برمی گرداند

  • Chrome 121+

    Promises در Manifest V3 و نسخه های جدیدتر پشتیبانی می شود، اما callbacks برای سازگاری به عقب ارائه شده است. شما نمی توانید از هر دو در یک فراخوانی تابع استفاده کنید. وعده با همان نوعی که به callback ارسال می شود حل می شود.