chrome.platformKeys

الوصف

استخدام واجهة برمجة التطبيقات chrome.platformKeys للوصول إلى شهادات العميل التي تديرها المنصة وفي حال منح المستخدم أو السياسة الإذن، يمكن للإضافة استخدام مثل هذه الشهادة في بروتوكول المصادقة المخصّص. على سبيل المثال، يتيح ذلك استخدام الشهادات التي يديرها النظام الأساسي في الشبكات الافتراضية الخاصة التابعة لجهات خارجية (راجِع chrome.vpnProvider).

الأذونات

platformKeys

مدى توفّر الخدمة

Chrome 45 والإصدارات الأحدث ChromeOS فقط

الأنواع

ClientCertificateRequest

أماكن إقامة

  • certificateAuthorities

    ArrayBuffer[]

    قائمة بالأسماء المميزة لمراجع التصديق التي يسمح بها الخادم. يجب أن يكون كل إدخال بترميز DER X.509 مميّز.

  • certificateTypes

    هذا الحقل هو قائمة بأنواع الشهادات المطلوبة، وقد تم ترتيبها حسب تفضيل الخادم. سيتم استرداد الشهادات من النوع الوارد في هذه القائمة فقط. إذا كانت القائمة certificateTypes هي القائمة الفارغة، سيتم عرض شهادات من أي نوع.

ClientCertificateType

التعداد

"rsaSign"

"ecdsaSign"

Match

أماكن إقامة

  • الشهادة

    ArrayBuffer

    ترميز DER لشهادة X.509.

  • keyAlgorithm

    كائن

    KeyAlgorithm للمفتاح المعتمد. يحتوي هذا على معلَمات خوارزمية مضمّنة في مفتاح الشهادة (مثل طول المفتاح). ولا يتم تضمين المعلمات الأخرى مثل دالة التجزئة التي تستخدمها دالة الإشارة.

SelectDetails

أماكن إقامة

  • clientCerts

    ArrayBuffer[] اختيارية

    وإذا تم توفير هذه السمة، يتم تشغيل selectClientCertificates في هذه القائمة. بخلاف ذلك، سيتم الحصول على قائمة بجميع الشهادات من متاجر شهادات النظام الأساسي المتاحة لهذه الإضافة. وتتم إزالة الإدخالات التي لا تملك الإضافة إذنًا لها أو التي لا تتطابق مع الطلب.

  • تفاعلي

    boolean

    إذا كان الخيار "صحيحًا"، يتم عرض القائمة المُفلتَرة للمستخدم لاختيار شهادة يدويًا، وبالتالي منح الإضافة إذن الوصول إلى الشهادات والمفاتيح. سيتم عرض الشهادات المحددة فقط. إذا كان الخطأ "خطأ"، سيتم تقليل القائمة إلى جميع الشهادات التي تم منح الإضافة إذن الوصول إليها (تلقائيًا أو يدويًا).

  • لن يتم عرض سوى الشهادات التي تطابق هذا الطلب.

VerificationDetails

أماكن إقامة

  • hostname

    سلسلة

    اسم مضيف الخادم للتحقق من الشهادة، مثل الخادم الذي قدَّم serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    يجب أن يكون كل إدخال في سلسلة هو ترميز DER لشهادة X.509، ويجب أن يكون الإدخال الأول هو شهادة الخادم، ويجب أن يصادق كل إدخال على الإدخال الذي يسبقه.

VerificationResult

أماكن إقامة

  • debug_errors

    سلسلة[]

    إذا تعذّر التحقق من الثقة، ستحتوي هذه المصفوفة على الأخطاء التي تم الإبلاغ عنها من خلال طبقة الشبكة الأساسية. بخلاف ذلك، تكون هذه الصفيفة فارغة.

    ملاحظة: تهدف هذه القائمة إلى تصحيح الأخطاء فقط، وقد لا تحتوي على جميع الأخطاء ذات الصلة. قد تتغير الأخطاء التي يتم عرضها في المراجعات المستقبلية لواجهة برمجة التطبيقات هذه، ولا يمكن ضمان توافقها مع الواجهة الأمامية أو القديمة.

  • موثوق بها

    boolean

    نتيجة عملية التحقّق من الثقة: تكون القيمة "صحيح" إذا كانت هناك إمكانية لإنشاء الثقة لتفاصيل التحقّق المقدَّمة، وتكون "خطأ" في حال رفض الثقة لأي سبب.

الطُرق

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" } }. ستطبق دالة الإشارة بعد ذلك مساحة متروكة لـ PKCS#1 v1.5 ولكن لن تجزئ البيانات المحددة.

    في الوقت الحالي، لا تتيح هذه الطريقة سوى الخوارزميات "RSASSA-PKCS1-v1_5" و "ECDSA".

  • معاودة الاتصال

    الوظيفة

    تبدو معلَمة callback على النحو التالي:

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

    • publicKey

      كائن

    • privateKey

      الكائن اختياري

      قد يكون null إذا لم يكن لهذه الإضافة إذن الوصول إليها.

getKeyPairBySpki()

Chrome 85 والإصدارات الأحدث
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)

تمرير زوج المفاتيح الذي تم تحديده من قِبل publicKeySpkiDer للاستخدام مع platformKeys.subtleCrypto إلى callback.

المَعلمات

  • publicKeySpkiDer

    ArrayBuffer

    معلومات مفتاح X.509 بترميز DER يتم الحصول عليها، على سبيل المثال، من خلال استدعاء دالة ExportKey في WebCrypto باستخدام format="spki".

  • المَعلَمات

    كائن

    توفِّر مَعلمات خوارزمية التوقيع والتجزئة، بالإضافة إلى المَعلمات التي يتم إصلاحها بواسطة المفتاح نفسه. يتم قبول المعلّمات نفسها حسب الدالة importKey في WebCrypto، على سبيل المثال، RsaHashedImportParams لمفتاح RSASSA-PKCS1-v1_5. بالنسبة إلى مفاتيح RSASSA-PKCS1-v1_5، نحتاج أيضًا إلى تمرير معلَمة "التجزئة" { "hash": { "name": string } }. تمثل المعلمة "hash" اسم خوارزمية التجزئة التي سيتم استخدامها في عملية الملخّص قبل العلامة. من الممكن تمرير "none" كاسم تجزئة، وفي هذه الحالة ستطبق دالة الإشارة مساحة متروكة لـ 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

    • publicKey

      كائن

    • privateKey

      الكائن اختياري

      قد يكون null إذا لم يكن لهذه الإضافة إذن الوصول إليها.

selectClientCertificates()

وعد
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

تفلتر هذه الطريقة من قائمة شهادات العميل تلك المعروفة للنظام الأساسي، وتتطابق مع request والتي تملك الإضافة إذنًا بالوصول إلى الشهادة ومفتاحها الخاص. إذا تم ضبط interactive على "صحيح"، سيظهر للمستخدم مربّع حوار حيث يمكنه الاختيار من بين الشهادات المطابقة ومنح الإضافة إذن الوصول إلى الشهادة. سيتم تمرير شهادات العميل المحدّدة/التي تمّت فلترتها إلى callback.

المَعلمات

  • التفاصيل
  • معاودة الاتصال

    الدالة اختيارية

    تبدو معلَمة callback على النحو التالي:

    (matches: Match[])=>void

    • فلتر مطابق لـ

      قائمة الشهادات التي تطابق الطلب، والتي تمتلك الإضافة إذنًا لها، وإذا كان interactive صحيحًا، يعني ذلك أنّ المستخدم اختارها.

المرتجعات

  • Promise<Match[]>

    Chrome 121 والإصدارات الأحدث

    تتوفّر الوعود في إصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات معاودة الاتصال من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في نفس استدعاء الدالة. يتم حل الوعد بنفس النوع الذي يتم تمريره إلى معاودة الاتصال.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

يشير هذا المصطلح إلى تطبيق لترميز SubtleCrypto ضمن WebCrypto يسمح بعمليات التشفير على مفاتيح شهادات العميل المتاحة لهذه الإضافة.

المرتجعات

  • كائن|غير محدّد

verifyTLSServerCertificate()

وعد
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

تحدِّد هذه السياسة ما إذا كان يمكن الوثوق في details.serverCertificateChain لـ details.hostname وفقًا لإعدادات الثقة في النظام الأساسي. ملاحظة: لم يتم تحديد السلوك الفعلي لعملية إثبات الثقة بشكل كامل وقد يتغير في المستقبل. يتحقّق تنفيذ واجهة برمجة التطبيقات من انتهاء صلاحية الشهادة، والتحقّق من مسار الشهادة، والتحقّق من الثقة من قِبل مرجع تصديق معروف. من المفترض أن يراعي التنفيذ بروتوكول EKU serverAuth ويتوافق مع الأسماء البديلة للموضوع.

المَعلمات

المرتجعات

  • Chrome 121 والإصدارات الأحدث

    تتوفّر الوعود في إصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير عمليات معاودة الاتصال من أجل التوافق مع الأنظمة القديمة. لا يمكنك استخدام كليهما في نفس استدعاء الدالة. يتم حل الوعد بنفس النوع الذي يتم تمريره إلى معاودة الاتصال.