chrome.platformKeys

תיאור

כדי לגשת לאישורי לקוח שמנוהלים על ידי הפלטפורמה, יש להשתמש ב-API chrome.platformKeys. אם המשתמש או המדיניות נותנים את ההרשאה, תוסף יכול להשתמש באישור כזה בפרוטוקול האימות בהתאמה אישית. לדוגמה, ההרשאה הזו מאפשרת להשתמש באישורים מנוהלים של הפלטפורמה ברשתות VPN של צד שלישי (למידע נוסף, chrome.vpnProvider).

הרשאות

platformKeys

זמינות

Chrome 45 ואילך ChromeOS בלבד

סוגים

ClientCertificateRequest

תכונות

  • certificateAuthorities

    ArrayBuffer[]

    רשימה של שמות ייחודיים של רשויות אישורים שאושרו על ידי השרת. כל רשומה חייבת להיות X.509 DistinguishedName בקידוד DER.

  • certificateTypes

    בשדה הזה מוצגת רשימה של סוגי האישורים המבוקשים, כשהם ממוינים לפי העדפת השרת. רק אישורים מסוג שכלולים ברשימה הזו יאוחזרו. עם זאת, אם הרשימה certificateTypes ריקה, יוחזרו אישורים מכל סוג שהוא.

ClientCertificateType

טיפוסים בני מנייה (enum)

"rsaSign"

"ecdsaSign"

Match

תכונות

  • אישור

    ArrayBuffer

    קידוד DER של אישור X.509.

  • keyAlgorithm

    אובייקט

    KeyAlgorithm של המפתח המאושר. השדה הזה מכיל פרמטרים של אלגוריתם שהם חלק ממפתח האישור (למשל אורך המפתח). פרמטרים אחרים, כמו פונקציית הגיבוב שמשמשת את פונקציית הסימן, לא נכללים.

SelectDetails

תכונות

  • clientCerts

    ArrayBuffer[] אופציונלי

    אם צוינה בקשה, הפונקציה selectClientCertificates תפעל ברשימה הזו. אחרת, יש להשיג את הרשימה של כל האישורים ממאגרי האישורים של הפלטפורמה שזמינים לתוספים האלה. המערכת תסיר ערכים שלתוסף אין הרשאה עבורם או שלא תואמים לבקשה.

  • אינטראקטיבי

    boolean

    אם הערך הוא true, הרשימה המסוננת מוצגת למשתמש כדי שהוא יכול לבחור אישור באופן ידני, וכך לתת לתוסף גישה לאישורים ולמפתחות. יוחזרו רק האישורים שנבחרו. אם הערך הוא False, הרשימה תצטמצם לכל האישורים שהתוסף קיבל גישה אליהם (באופן אוטומטי או ידני).

  • יוחזרו רק אישורים שתואמים לבקשה הזו.

VerificationDetails

תכונות

  • hostname

    מחרוזת

    שם המארח של השרת שעבורו יש לאמת את האישור, למשל השרת שהציג את serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    כל רשומת שרשרת חייבת להיות בקידוד DER של אישור X.509, הערך הראשון חייב להיות אישור השרת וכל רשומה חייבת לאשר את הרשומה שלפניה.

VerificationResult

תכונות

  • debug_errors

    מחרוזת[]

    אם אימות האמון נכשל, מערך זה מכיל את השגיאות שדווחו על ידי שכבת הרשת הבסיסית. אחרת, המערך הזה ריק.

    הערה: הרשימה הזו מיועדת לניפוי באגים בלבד ויכול להיות שהיא לא תכלול את כל השגיאות הרלוונטיות. השגיאות שהוחזרו עשויות להשתנות בגרסאות עתידיות של ה-API הזה, ולא בטוח שהן יהיו תואמות קדימה או אחורה.

  • מהימן

    boolean

    התוצאה של אימות האמון: TRUE אם ניתן לקבוע אמון בפרטי האימות הנתונים ו-FALSE אם האמון נדחה מסיבה כלשהי.

שיטות

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)

    פונקציה

    הפרמטר 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 SubjectPublicKeyInfo בקידוד DER שהושג למשל על ידי קריאה לפונקציה exportKey של WebCrypto עם format="spki".

  • פרמטרים

    אובייקט

    מספק פרמטרים של אלגוריתם חתימה וגיבוב, בנוסף לאלה שתוקנו על ידי המפתח עצמו. אותם פרמטרים מתקבלים באמצעות הפונקציה importKey של WebCrypto, למשל RsaHashedImportParams למפתח RSASSA-PKCS1-v1_5. למפתחות RSASSA-PKCS1-v1_5, אנחנו צריכים להעביר גם פרמטר 'hash' { "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)

    פונקציה

    הפרמטר callback נראה כך:

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

    • publicKey

      אובייקט

    • privateKey

      אובייקט אופציונלי

      הערך עשוי להיות null אם לתוסף הזה אין גישה.

selectClientCertificates()

הבטחה
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

השיטה הזו מסננת מתוך רשימה של אישורי לקוח את האישורים המוכרים לפלטפורמה, שתואמים ל-request ושעבורם יש לתוסף הרשאת גישה לאישור ולמפתח הפרטי שלו. אם הערך של interactive הוא True, למשתמש תוצג תיבת דו-שיח שבה הוא יוכל לבחור מבין האישורים התואמים ולהעניק לתוסף גישה לאישור. אישורי הלקוחות שנבחרו/סוננו יועברו אל callback.

פרמטרים

  • פרטים
  • קריאה חוזרת (callback)

    פונקציה אופציונלי

    הפרמטר callback נראה כך:

    (matches: Match[])=>void

    • תואם את:

      רשימת האישורים שתואמים לבקשה שלתוסף יש הרשאה עבורם, ואם הערך interactive נכון, הם נבחרו על ידי המשתמש.

החזרות

  • Promise<Match[]>

    Chrome 121 ומעלה

    יש תמיכה בהבטחות במניפסט מגרסה V3 ואילך, אבל אפשר לבצע קריאה חוזרת (callback) לצורך תאימות לאחור. אי אפשר להשתמש בשתיהן באותה בקשה להפעלת פונקציה. ההבטחה מסתיימת עם אותו הסוג שמועבר לקריאה החוזרת.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

הטמעה של SubtleCrypto של WebCrypto שמאפשרת פעולות הצפנה במפתחות של אישורי לקוח שזמינים לתוסף הזה.

החזרות

  • אובייקט|לא מוגדר

verifyTLSServerCertificate()

הבטחה
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

בודקת אם details.serverCertificateChain נחשב כמהימן עבור details.hostname לפי הגדרות האמינות של הפלטפורמה. הערה: ההתנהגות בפועל של אימות האמון לא מפורטת במלואה ועשויה להשתנות בעתיד. הטמעת ה-API מאמתת את תפוגת האישורים, מאמתת את נתיב האישור ובודקת את האמון של רשות אישורים ידועה. ההטמעה אמורה לכבד את ה-serverAuth של EKU ולתמוך בשמות חלופיים של נושאים.

פרמטרים

החזרות

  • Chrome 121 ומעלה

    יש תמיכה בהבטחות במניפסט מגרסה V3 ואילך, אבל אפשר לבצע קריאה חוזרת (callback) לצורך תאימות לאחור. אי אפשר להשתמש בשתיהן באותה בקשה להפעלת פונקציה. ההבטחה מסתיימת עם אותו הסוג שמועבר לקריאה החוזרת.