תיאור
כדי לגשת לאישורי לקוח שמנוהלים על ידי הפלטפורמה, יש להשתמש ב-API chrome.platformKeys
. אם המשתמש או המדיניות נותנים את ההרשאה, תוסף יכול להשתמש באישור כזה בפרוטוקול האימות בהתאמה אישית. לדוגמה, ההרשאה הזו מאפשרת להשתמש באישורים מנוהלים של הפלטפורמה ברשתות VPN של צד שלישי (מידע נוסף זמין בכתובת chrome.vpnProvider).
הרשאות
platformKeys
זמינות
סוגים
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
string
שם המארח של השרת שעבורו יש לאמת את האישור, למשל השרת שהציג את
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.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
.
פרמטרים
החזרות
-
Promise<Match[]>
Chrome 121 ומעלהיש תמיכה בהבטחות במניפסט מגרסה V3 ואילך, אבל אפשר לבצע קריאה חוזרת (callback) לצורך תאימות לאחור. אי אפשר להשתמש בשתיהן באותה בקשה להפעלת פונקציה. ההבטחה מסתיימת עם אותו הסוג שמועבר לקריאה החוזרת.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
הטמעה של SubtleCrypto של WebCrypto שמאפשרת פעולות הצפנה במפתחות של אישורי לקוח שזמינים לתוסף הזה.
החזרות
-
אובייקט | undefined
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
בודקת אם details.serverCertificateChain
נחשב כמהימן עבור details.hostname
לפי הגדרות האמינות של הפלטפורמה. הערה: ההתנהגות בפועל של אימות האמון לא מפורטת במלואה ועשויה להשתנות בעתיד. הטמעת ה-API מאמתת את תפוגת האישורים, מאמתת את נתיב האישור ובודקת את האמון של רשות אישורים ידועה. ההטמעה אמורה לכבד את ה-serverAuth של EKU ולתמוך בשמות חלופיים של נושאים.
פרמטרים
-
פרטים
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(result: VerificationResult) => void
-
תוצאה אחת
-
החזרות
-
Promise<VerificationResult>
Chrome 121 ומעלהיש תמיכה בהבטחות במניפסט מגרסה V3 ואילך, אבל אפשר לבצע קריאה חוזרת (callback) לצורך תאימות לאחור. אי אפשר להשתמש בשתיהן באותה בקשה להפעלת פונקציה. ההבטחה מסתיימת עם אותו הסוג שמועבר לקריאה החוזרת.