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
גודל מאגר הנתונים הזמני שאליו מפנה המאגר עם קוד הסיסמהBuf.
[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
גודל מאגר הנתונים הזמני שאליו מפנה המאגר עם קוד הסיסמהBuf.
[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
גודל מאגר הנתונים הזמני שאליו מפנה טביעת האצבע.
[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 להצפנה/פענוח של קוד הגישה.