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

เนมสเปซนี้มีอินเทอร์เฟซทั้งหมดภายใน Weave สำหรับไลบรารีรหัสผ่านของ Weave ภายในโปรไฟล์ความปลอดภัยของ Weave

สรุป

การแจกแจง

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
ประเภทการกำหนดค่าการเข้ารหัสรหัสผ่านแบบ Weave
@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
ขนาดของพารามิเตอร์โปรโตคอลการเข้ารหัสรหัสผ่านแบบ Weave

ตัวแปร

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
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
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
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
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
แสดงผลเป็น "จริง" หาก API การเข้ารหัส/การถอดรหัสรหัสผ่านรองรับการกำหนดค่าการเข้ารหัสรหัสผ่านที่ระบุ

โครงสร้าง

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

การแจกแจง

@278

 @278

ประเภทการกำหนดค่าการเข้ารหัสรหัสผ่านแบบ Weave

พร็อพเพอร์ตี้
kPasscodeConfig1_KeyId

รหัสคีย์จำลองที่ใช้สำหรับการกำหนดค่ารหัสผ่านการทดสอบ #1

kPasscode_Config1_TEST_ONLY

การกำหนดค่าการเข้ารหัสด้วยรหัสผ่าน #1 ไม่ได้ใช้คีย์การเข้ารหัสและคีย์ลับในการตรวจสอบสิทธิ์และรหัสผ่านด้วยลายนิ้วมือ

การกำหนดค่านี้ควรใช้เพื่อวัตถุประสงค์ในการทดสอบเท่านั้น

kPasscode_Config2

การกำหนดค่าการเข้ารหัสรหัสผ่าน #2 ใช้การเข้ารหัส AES-128-ECB ที่มีความสมบูรณ์ HMAC-SHA-1 ขนาด 8 ไบต์และลายนิ้วมือ HMAC-SHA-1 ขนาด 8 ไบต์

@279

 @279

ขนาดของพารามิเตอร์โปรโตคอลการเข้ารหัสรหัสผ่านแบบ Weave

พร็อพเพอร์ตี้
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 และ AK"

kPasscodeFingerprintKeyDiversifier

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

ตัวกระจายคีย์ที่ใช้สำหรับการนำคีย์การเข้ารหัสของ Weave ไปใช้

ค่านี้แสดงถึง 4 ไบต์แรกของ SHA-1 HASH ของวลี "Nest Passcode EK และ AK"

ฟังก์ชัน

DecryptPasscode

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

ถอดรหัสรหัสผ่านที่เข้ารหัสด้วยรูปแบบการเข้ารหัสรหัสผ่าน Nest

รายละเอียด
พารามิเตอร์
[in] encPasscode
ตัวชี้ไปยังบัฟเฟอร์รหัสผ่านที่เข้ารหัส
[in] encPasscodeLen
ความยาวของรหัสผ่านที่เข้ารหัส
[in] passcodeBuf
ตัวชี้ไปยังบัฟเฟอร์เพื่อรับรหัสผ่านที่ถอดรหัสแล้ว
[in] passcodeBufSize
ขนาดของบัฟเฟอร์ที่ PasswordBuf ชี้ไปที่
[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

รายละเอียด
พารามิเตอร์
[in] encPasscode
ตัวชี้ไปยังบัฟเฟอร์รหัสผ่านที่เข้ารหัส
[in] encPasscodeLen
ความยาวของรหัสผ่านที่เข้ารหัส
[in] encKey
ตัวชี้ไปยังคีย์ที่จะใช้ในการเข้ารหัสรหัสผ่าน ความยาวของคีย์ต้องตรงกับอัลกอริทึมการเข้ารหัสที่เชื่อมโยงกับการกำหนดค่าที่ระบุ
[in] authKey
ตัวชี้ไปยังคีย์ที่จะใช้ตรวจสอบสิทธิ์รหัสผ่าน ความยาวของคีย์ต้องตรงกับอัลกอริทึมการตรวจสอบสิทธิ์ที่เชื่อมโยงกับการกำหนดค่าที่ระบุ
[in] fingerprintKey
ตัวชี้ไปยังกุญแจที่จะใช้สร้างลายนิ้วมือสำหรับรหัสผ่าน ความยาวของคีย์ต้องตรงกับอัลกอริทึมลายนิ้วมือที่เชื่อมโยงกับการกำหนดค่าที่ระบุ
[in] passcodeBuf
ตัวชี้ไปยังบัฟเฟอร์เพื่อรับรหัสผ่านที่ถอดรหัสแล้ว
[in] passcodeBufSize
ขนาดของบัฟเฟอร์ที่ PasswordBuf ชี้ไปที่
[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

รายละเอียด
พารามิเตอร์
[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

รายละเอียด
พารามิเตอร์
[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
)

แสดงผลเป็น "จริง" หาก API การเข้ารหัส/การถอดรหัสรหัสผ่านรองรับการกำหนดค่าการเข้ารหัสรหัสผ่านที่ระบุ