nl::Weave::Profiles::Security::Passcodes

מרחב השמות הזה כולל את כל הממשקים ב-Weave של ספריית קודי הגישה של Weave, בתוך פרופיל האבטחה של Weave.

סיכום

ערכים של ספירה

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
טיפוסים בני מנייה (enum)
שזירה של סוגי הגדרות להצפנה של קודי גישה.
@279{
  kPasscodeEncryptionKeyLen = Platform::Security::AES128BlockCipher::kKeyLength,
  kPasscodeAuthenticationKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeFingerprintKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeTotalDerivedKeyLen = kPasscodeEncryptionKeyLen + kPasscodeAuthenticationKeyLen,
  kPasscodePaddedLen = Platform::Security::AES128BlockCipher::kBlockLength,
  kPasscodeAuthenticatorLen = 8,
  kPasscodeFingerprintLen = 8,
  kPasscodeMaxEncryptedLen = sizeof(uint8_t) + 2 * sizeof(uint32_t) + kPasscodePaddedLen + kPasscodeAuthenticatorLen + kPasscodeFingerprintLen,
  kPasscodeMaxLen = kPasscodePaddedLen,
  kPasscodeEncKeyDiversifierSize = sizeof(kPasscodeEncKeyDiversifier) + sizeof(uint8_t),
  kPasscodeFingerprintKeyDiversifierSize = sizeof(kPasscodeFingerprintKeyDiversifier)
}
טיפוסים בני מנייה (enum)
שרטטו גדלים של פרמטרים של פרוטוקול הצפנה עם קוד סיסמה.

משתנים

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
צופן מפתחות שמשמש לנגזרת מפתחות הצפנה של קוד סיסמה ב-Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
צופן מפתחות המשמש לנגזרת מפתחות הצפנה של קוד סיסמה ב-Weave.

פונקציות

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
מפענחים קוד גישה שהוצפן באמצעות סכמת ההצפנה של Nest Passcode.
DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen)
מפענחים קוד גישה שהוצפן באמצעות סכמת ההצפנה של Nest Passcode.
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen, GroupKeyStoreBase *groupKeyStore)
הצפנת קוד גישה באמצעות סכמת ההצפנה של Nest Passcode.
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen)
הצפנת קוד גישה באמצעות סכמת ההצפנה של Nest Passcode.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
מאתרים את סוג ההגדרה של קוד גישה מוצפן.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
מאתרים את הערך של טביעת האצבע שמשויכת לקוד סיסמה מוצפן.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
מאתרים את המזהה של המפתח ששימש להצפנה של קוד גישה מוצפן.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
מקבלים את הערך צופן חד-פעמי (nonce) שמשויך לקוד סיסמה מוצפן.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
הפונקציה מחזירה true אם ההגדרה שסופקה להצפנת קוד סיסמה נתמכת בממשקי ה-API להצפנה/פענוח של קוד סיסמה.

מבנים

nl::Weave::Profiles::Security::Passcodes::EncryptedPasscodeStruct

ערכים של ספירה

278@

 @278

שזירה של סוגי הגדרות להצפנה של קודי גישה.

מאפיינים
kPasscodeConfig1_KeyId

מזהה מפתח דמה המשמש לבדיקה של הגדרה מס' 1 של קוד הגישה.

kPasscode_Config1_TEST_ONLY

הגדרה אישית של הצפנת קוד גישה מס' 1 לא משתמשת בהצפנה ובמפתחות סודיים לצורך אימות וקוד סיסמה באמצעות טביעת אצבע.

יש להשתמש בהגדרה הזו למטרות בדיקה בלבד.

kPasscode_Config2

בהגדרה 'הצפנה של קוד גישה מס' 2' נעשה שימוש בהצפנה מסוג AES-128-ECB עם תקינות HMAC-SHA-1 של 8 בייטים וטביעת אצבע HMAC-SHA-1 של 8 בייטים.

@279

 @279

שרטטו גדלים של פרמטרים של פרוטוקול הצפנה עם קוד סיסמה.

מאפיינים
kPasscodeAuthenticationKeyLen

אורך המפתח לאימות קוד גישה (SHA-1).

kPasscodeAuthenticatorLen

האורך של מאמת קוד הגישה.

kPasscodeEncKeyDiversifierSize

גודל המשתנה של מפתח האפליקציה להצפנת קודי גישה.

kPasscodeEncryptionKeyLen

אורך המפתח להצפנת קוד גישה (AES-128).

kPasscodeFingerprintKeyDiversifierSize

גודל המשתנה של מפתח טביעת האצבע של קוד הגישה.

kPasscodeFingerprintKeyLen

אורך המפתח של טביעת האצבע של קוד הגישה (SHA-1).

kPasscodeFingerprintLen

אורך טביעת האצבע של קוד הגישה.

kPasscodeMaxEncryptedLen

האורך המקסימלי של קוד סיסמה מוצפן.

kPasscodeMaxLen

האורך המקסימלי של קוד הגישה שלא צופן.

kPasscodePaddedLen

אורך קוד הגישה (מתווסף לאורך הבלוק AES-128).

kPasscodeTotalDerivedKeyLen

אורך המפתח הכולל (הצפנה ותקינות) של קוד הגישה.

משתנים

kPasscodeEncKeyDiversifier

const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }

צופן מפתחות המשמש לנגזרת מפתחות הצפנה של קוד סיסמה ב-Weave.

הערך הזה מייצג את 4 הבייטים הראשונים של SHA-1 HASH של Nest Passcode EK and AK לביטוי.

kPasscodeFingerprintKeyDiversifier

const uint8_t kPasscodeFingerprintKeyDiversifier[] = { 0xD1, 0xA1, 0xD9, 0x6C }

צופן מפתחות המשמש לנגזרת מפתחות הצפנה של קוד סיסמה ב-Weave.

הערך הזה מייצג את 4 הבייטים הראשונים של SHA-1 HASH של Nest Passcode EK and AK לביטוי.

פונקציות

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen,
  GroupKeyStoreBase *groupKeyStore
)

מפענחים קוד גישה שהוצפן באמצעות סכמת ההצפנה של Nest Passcode.

פרטים
פרמטרים
[in] encPasscode
מצביע למאגר הנתונים המוצפן של קוד הגישה.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[in] passcodeBuf
מצביע למאגר נתונים זמני לקבלת קוד הגישה המפוענח.
[in] passcodeBufSize
גודל מאגר הנתונים הזמני שאליו מכוונים את קוד הסיסמה של עופרת.
[out] passcodeLen
מגדירים את האורך של קוד הגישה המפוענח.
[in] groupKeyStore
מצביע לאובייקט של מאגר המפתחות של הקבוצה.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
אם אין תמיכה בהגדרה של קוד הגישה שצוין.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
אם האימות באמצעות קוד גישה נכשל.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
אם בדיקת טביעת האצבע באמצעות קוד הגישה נכשלת.
WEAVE_ERROR_INVALID_KEY_ID
אם למפתח המבוקש יש מזהה מפתח לא חוקי.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני של קוד הגישה קטן מדי.
WEAVE_ERROR_INVALID_ARGUMENT
אם קוד הגישה שהוזן קצר או ארוך מדי; לחלופין, אם הסמן למאגר המפתחות של הקבוצה לא סופק או שמאגר המפתחות של הפלטפורמה מחזיר פרמטרים לא חוקיים של מפתח.
other
שגיאות אחרות ספציפיות לפלטפורמה שהוחזרו על-ידי ממשקי ה-API של מאגר המפתחות של הפלטפורמה.

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen
)

מפענחים קוד גישה שהוצפן באמצעות סכמת ההצפנה של Nest Passcode.

פרטים
פרמטרים
[in] encPasscode
מצביע למאגר הנתונים המוצפן של קוד הגישה.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[in] encKey
מצביע אל המפתח שישמש להצפנה של קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם ההצפנה שמשויך להגדרה שצוינה.
[in] authKey
מצביע אל המפתח שישמש לאימות קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם האימות שמשויך להגדרה שצוינה.
[in] fingerprintKey
מצביע אל המפתח שישמש ליצירת טביעת האצבע של קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם של טביעת האצבע שמשויך להגדרה שצוינה.
[in] passcodeBuf
מצביע למאגר נתונים זמני לקבלת קוד הגישה המפוענח.
[in] passcodeBufSize
גודל מאגר הנתונים הזמני שאליו מכוונים את קוד הסיסמה של עופרת.
[out] passcodeLen
מגדירים את האורך של קוד הגישה המפוענח.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
אם אין תמיכה בהגדרה של קוד הגישה שצוין.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
אם האימות באמצעות קוד גישה נכשל.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
אם בדיקת טביעת האצבע של קוד הגישה נכשלת.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני של קוד הגישה קטן מדי.
WEAVE_ERROR_INVALID_ARGUMENT
אם קוד הגישה שהוזן קצר או ארוך מדי.

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen,
  GroupKeyStoreBase *groupKeyStore
)

הצפנת קוד גישה באמצעות סכמת ההצפנה של Nest Passcode.

פרטים
פרמטרים
[in] config
תצורת ההצפנה של קוד הגישה שבו יש להשתמש.
[in] keyId
מזהה מפתח ההצפנה של קוד הסיסמה המבוקש.
[in] nonce
ערך ייחודי שמוקצה לקוד הגישה המוצפן.
[in] passcode
מצביע אל קוד הגישה שיש להצפין.
[in] passcodeLen
האורך של קוד הגישה.
[out] encPasscode
מצביע למאגר הנתונים הזמני לשמירת קוד סיסמה מוצפן.
[in] encPasscodeBufSize
גודל מאגר הנתונים הזמני לשמירת קוד גישה מוצפן.
[out] encPasscodeLen
האורך של קוד הגישה המוצפן.
[in] groupKeyStore
מצביע לאובייקט של מאגר המפתחות של הקבוצה.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
אם אין תמיכה בהגדרה של קוד הגישה שצוין.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני שסיפקתם קטן מדי בשביל קוד סיסמה מוצפן.
WEAVE_ERROR_INVALID_KEY_ID
אם למפתח המבוקש יש מזהה מפתח לא חוקי.
WEAVE_ERROR_INVALID_ARGUMENT
אם קוד הסיסמה שסופק קצר או ארוך מדי; לחלופין, אם הסמן למאגר המפתחות של הקבוצה לא סופק או שמאגר המפתחות של הפלטפורמה מחזיר פרמטרים לא חוקיים של מפתח.
other
שגיאות אחרות ספציפיות לפלטפורמה שהוחזרו על-ידי ממשקי ה-API של מאגר המפתחות של הפלטפורמה.

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen
)

הצפנת קוד גישה באמצעות סכמת ההצפנה של Nest Passcode.

פרטים
פרמטרים
[in] config
הגדרות ההצפנה של קוד הגישה ב-Weave שבהן יש להשתמש.
[in] keyId
מזהה מפתח ההצפנה של קוד הסיסמה המבוקש.
[in] nonce
ערך ייחודי שמוקצה לקוד הגישה.
[in] passcode
מצביע אל קוד הגישה שיש להצפין.
[in] passcodeLen
האורך של קוד הגישה.
[in] encKey
מצביע אל המפתח שישמש להצפנה של קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם ההצפנה שמשויך להגדרה שצוינה.
[in] authKey
מצביע אל המפתח שישמש לאימות קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם האימות שמשויך להגדרה שצוינה.
[in] fingerprintKey
מצביע אל המפתח שישמש ליצירת טביעת האצבע של קוד הגישה. אורך המפתח חייב להתאים לאלגוריתם של טביעת האצבע שמשויך להגדרה שצוינה.
[out] encPasscode
מצביע אל מאגר נתונים זמני שבו יישמר קוד הגישה המוצפן. מאגר הנתונים הזמני חייב להיות בגודל kPasscodeMaxEncryptedLen לפחות.
[in] encPasscodeBufSize
גודל מאגר הנתונים הזמני שאליו מצביע encPasscode.
[out] encPasscodeLen
האורך של קוד הגישה המוצפן.
מוחזר ערכים
WEAVE_NO_ERROR
הצלחה.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
אם אין תמיכה בהגדרה של קוד הגישה שצוין.
WEAVE_ERROR_BUFFER_TOO_SMALL
אם מאגר הנתונים הזמני שסיפקתם קטן מדי בשביל קוד סיסמה מוצפן.
WEAVE_ERROR_INVALID_ARGUMENT
אם קוד הסיסמה שסופק קצר או ארוך מדי.

GetEncryptedPasscodeConfig

WEAVE_ERROR GetEncryptedPasscodeConfig(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t & config
)

מאתרים את סוג ההגדרה של קוד גישה מוצפן.

פרטים
פרמטרים
[in] encPasscode
מצביעים על מאגר נתונים זמני שמכיל את קוד הגישה המוצפן.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[out] config
תצורת ההצפנה של קוד הגישה ב-Weave, שמשמשת את קוד הגישה המוצפן.

GetEncryptedPasscodeFingerprint

WEAVE_ERROR GetEncryptedPasscodeFingerprint(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *fingerprintBuf,
  size_t fingerprintBufSize,
  size_t & fingerprintLen
)

מאתרים את הערך של טביעת האצבע שמשויכת לקוד סיסמה מוצפן.

פרטים
פרמטרים
[in] encPasscode
מצביעים על מאגר נתונים זמני שמכיל את קוד הגישה המוצפן.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[in] fingerprintBuf
מאגר נתונים זמני לקבלת הערך של טביעת האצבע.
[in] fingerprintBufSize
גודל מאגר הנתונים הזמני שמצביע עליו על ידיfingerBuf.
[out] fingerprintLen
אורך הערך של טביעת האצבע שהוחזרה.

GetEncryptedPasscodeKeyId

WEAVE_ERROR GetEncryptedPasscodeKeyId(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & keyId
)

מאתרים את המזהה של המפתח ששימש להצפנה של קוד גישה מוצפן.

פרטים
פרמטרים
[in] encPasscode
מצביעים על מאגר נתונים זמני שמכיל את קוד הגישה המוצפן.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[out] keyId
המזהה של המפתח ששימש להצפנה של קוד הגישה המוצפן.

GetEncryptedPasscodeNonce

WEAVE_ERROR GetEncryptedPasscodeNonce(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & nonce
)

מקבלים את הערך צופן חד-פעמי (nonce) שמשויך לקוד גישה מוצפן.

פרטים
פרמטרים
[in] encPasscode
מצביעים על מאגר נתונים זמני שמכיל את קוד הגישה המוצפן.
[in] encPasscodeLen
האורך של קוד הגישה המוצפן.
[out] nonce
ערך צופן חד-פעמי (nonce) שמשויך לקוד סיסמה מוצפן.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

הפונקציה מחזירה true אם ההגדרה שסופקה להצפנת קוד סיסמה נתמכת בממשקי ה-API להצפנה/פענוח של קוד סיסמה.