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

Không gian tên này bao gồm tất cả các giao diện trong thư viện mật mã của Weave trong hồ sơ bảo mật của Weave.

Tóm tắt

Bảng liệt kê

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Các loại cấu hình mã hoá bằng mật mã dạng dệt.
@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
Kích thước thông số của giao thức mã hoá bằng mật mã.

Biến

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Công cụ đa dạng hoá khoá dùng để lấy khoá mã hoá bằng mật mã của Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Công cụ đa dạng hoá khoá dùng để lấy khoá mã hoá bằng mật mã của Weave.

Hàm

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Giải mã mật mã đã mã hoá bằng lược đồ Mã hoá mật mã 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)
Giải mã mật mã đã mã hoá bằng lược đồ Mã hoá mật mã 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)
Mã hoá mật mã bằng lược đồ Mã hoá mật mã 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)
Mã hoá mật mã bằng lược đồ Mã hoá mật mã Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Nhận loại cấu hình của mật mã đã mã hoá.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Nhận giá trị vân tay được liên kết với mật mã đã mã hoá.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Lấy mã nhận dạng của khoá dùng để mã hoá mật mã đã mã hoá.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Nhận giá trị số chỉ dùng một lần liên kết với mật mã đã mã hoá.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Trả về true nếu cấu hình mã hoá mật mã đã cung cấp được API mã hoá/giải mã mật mã hỗ trợ.

Cấu trúc

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

Bảng liệt kê

@278

 @278

Các loại cấu hình mã hoá bằng mật mã dạng dệt.

Thuộc tính
kPasscodeConfig1_KeyId

Mã khoá giả được dùng cho cấu hình mật mã thử nghiệm #1.

kPasscode_Config1_TEST_ONLY

Cấu hình mã hoá bằng mật mã số 1 không sử dụng khoá mã hoá và khoá bí mật để xác thực và mật mã bằng vân tay.

Cấu hình này chỉ nên được sử dụng cho mục đích THỬ NGHIỆM.

kPasscode_Config2

Cấu hình mã hóa mật mã #2 đang sử dụng mã hóa AES-128-ECB với tính toàn vẹn HMAC-SHA-1 8 byte và vân tay HMAC-SHA-1 8 byte.

@279

 @279

Kích thước thông số của giao thức mã hoá bằng mật mã.

Thuộc tính
kPasscodeAuthenticationKeyLen

Độ dài khoá xác thực bằng mật mã (SHA-1).

kPasscodeAuthenticatorLen

Độ dài của trình xác thực mật mã.

kPasscodeEncKeyDiversifierSize

Kích thước đa dạng hoá của khoá ứng dụng mã hoá bằng mật mã.

kPasscodeEncryptionKeyLen

Độ dài khoá của khoá mã hoá bằng mật mã (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Kích thước đa dạng hoá khoá vân tay bằng mật mã.

kPasscodeFingerprintKeyLen

Độ dài khoá vân tay số (SHA-1).

kPasscodeFingerprintLen

Độ dài vân tay ở mật mã.

kPasscodeMaxEncryptedLen

Độ dài tối đa của mật mã đã mã hoá.

kPasscodeMaxLen

Độ dài tối đa của mật mã chưa được mã hoá.

kPasscodePaddedLen

Độ dài mật mã (được thêm vào độ dài khối AES-128).

kPasscodeTotalDerivedKeyLen

Tổng độ dài của khoá mật mã (mã hoá và tính toàn vẹn).

Biến

kPasscodeEncKeyDiversifier

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

Công cụ đa dạng hoá khoá dùng để lấy khoá mã hoá bằng mật mã của Weave.

Giá trị này đại diện cho 4 byte đầu tiên của SHA-1 HASH của cụm từ "Nest Passcode EK và AK".

kPasscodeFingerprintKeyDiversifier

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

Công cụ đa dạng hoá khoá dùng để lấy khoá mã hoá bằng mật mã của Weave.

Giá trị này đại diện cho 4 byte đầu tiên của SHA-1 HASH của cụm từ "Nest Passcode EK và AK".

Hàm

DecryptPasscode

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

Giải mã mật mã đã mã hoá bằng lược đồ Mã hoá mật mã Nest.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến vùng đệm mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[in] passcodeBuf
Con trỏ đến một vùng đệm để nhận mật mã đã giải mã.
[in] passcodeBufSize
Kích thước của vùng đệm được xác định bởi passwordBuf.
[out] passcodeLen
Đặt thành độ dài của mật mã đã giải mã.
[in] groupKeyStore
Con trỏ đến đối tượng kho khoá nhóm.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu cấu hình mật mã đã chỉ định không được hỗ trợ.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Nếu xác thực bằng mật mã không thành công.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Nếu quy trình kiểm tra bằng vân tay bằng mật mã không thành công.
WEAVE_ERROR_INVALID_KEY_ID
Nếu khoá được yêu cầu có mã khoá không hợp lệ.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm mật mã được cung cấp quá nhỏ.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã đã nhập quá ngắn hoặc quá dài; Hoặc nếu con trỏ đến kho khoá nhóm không được cung cấp hoặc kho khoá nền tảng trả về thông số khoá không hợp lệ.
other
Các lỗi khác theo nền tảng cụ thể do API kho khoá của nền tảng trả về.

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
)

Giải mã mật mã đã mã hoá bằng lược đồ Mã hoá mật mã Nest.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến vùng đệm mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[in] encKey
Con trỏ trỏ đến khoá dùng để mã hoá mật mã. Độ dài của khoá phải khớp với thuật toán mã hoá liên kết với cấu hình đã chỉ định.
[in] authKey
Con trỏ chỉ tới khoá sẽ dùng để xác thực mật mã. Độ dài của khoá phải khớp với thuật toán xác thực liên kết với cấu hình đã chỉ định.
[in] fingerprintKey
Con trỏ chỉ tới khoá dùng để tạo vân tay số cho mật mã. Độ dài của khoá phải khớp với thuật toán vân tay liên kết với cấu hình đã chỉ định.
[in] passcodeBuf
Con trỏ đến một vùng đệm để nhận mật mã đã giải mã.
[in] passcodeBufSize
Kích thước của vùng đệm được xác định bởi passwordBuf.
[out] passcodeLen
Đặt thành độ dài của mật mã đã giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu cấu hình mật mã đã chỉ định không được hỗ trợ.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Nếu xác thực bằng mật mã không thành công.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Nếu quy trình kiểm tra bằng vân tay bằng mật mã không thành công.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm mật mã được cung cấp quá nhỏ.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã đã nhập quá ngắn hoặc quá dài.

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
)

Mã hoá mật mã bằng lược đồ Mã hoá mật mã Nest.

Thông tin chi tiết
Các tham số
[in] config
Cấu hình mã hoá bằng mật mã sẽ sử dụng.
[in] keyId
Mã khoá mã hoá mật mã được yêu cầu.
[in] nonce
Một giá trị duy nhất được gán cho mật mã đã mã hoá.
[in] passcode
Con trỏ chỉ tới mật mã cần mã hoá.
[in] passcodeLen
Độ dài mật mã.
[out] encPasscode
Con trỏ đến vùng đệm để lưu trữ mật mã đã mã hoá.
[in] encPasscodeBufSize
Dung lượng của vùng đệm để lưu trữ mật mã đã mã hoá.
[out] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[in] groupKeyStore
Con trỏ đến đối tượng kho khoá nhóm.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu cấu hình mật mã đã chỉ định không được hỗ trợ.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm đầu ra được cung cấp quá nhỏ cho mật mã đã mã hoá.
WEAVE_ERROR_INVALID_KEY_ID
Nếu khoá được yêu cầu có mã khoá không hợp lệ.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã đã cung cấp quá ngắn hoặc quá dài; Hoặc nếu con trỏ đến kho khoá nhóm không được cung cấp hoặc kho khoá nền tảng trả về thông số khoá không hợp lệ.
other
Các lỗi khác theo nền tảng cụ thể do API kho khoá của nền tảng trả về.

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
)

Mã hoá mật mã bằng lược đồ Mã hoá mật mã Nest.

Thông tin chi tiết
Các tham số
[in] config
Cấu hình mã hoá bằng mật mã của Weave sẽ được sử dụng.
[in] keyId
Mã khoá mã hoá mật mã được yêu cầu.
[in] nonce
Một giá trị duy nhất được gán cho mật mã.
[in] passcode
Con trỏ chỉ tới mật mã cần mã hoá.
[in] passcodeLen
Độ dài mật mã.
[in] encKey
Con trỏ trỏ đến khoá dùng để mã hoá mật mã. Độ dài của khoá phải khớp với thuật toán mã hoá liên kết với cấu hình đã chỉ định.
[in] authKey
Con trỏ chỉ tới khoá sẽ dùng để xác thực mật mã. Độ dài của khoá phải khớp với thuật toán xác thực liên kết với cấu hình đã chỉ định.
[in] fingerprintKey
Con trỏ chỉ tới khoá dùng để tạo vân tay số cho mật mã. Độ dài của khoá phải khớp với thuật toán vân tay liên kết với cấu hình đã chỉ định.
[out] encPasscode
Con trỏ trỏ đến một vùng đệm nơi lưu trữ mật mã đã mã hoá. Bộ đệm này phải có kích thước tối thiểu là kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Kích thước của vùng đệm được trỏ đến bởi encPasscode.
[out] encPasscodeLen
Độ dài của mật mã đã mã hoá.
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu cấu hình mật mã đã chỉ định không được hỗ trợ.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm đầu ra được cung cấp quá nhỏ cho mật mã đã mã hoá.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã được cung cấp quá ngắn hoặc quá dài.

GetEncryptedPasscodeConfig

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

Nhận loại cấu hình của mật mã đã mã hoá.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến một vùng đệm có chứa mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[out] config
Cấu hình mã hoá bằng mật mã của Weave mà mật mã đã mã hoá sử dụng.

GetEncryptedPasscodeFingerprint

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

Nhận giá trị vân tay được liên kết với mật mã đã mã hoá.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến một vùng đệm có chứa mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[in] fingerprintBuf
Vùng đệm để nhận giá trị vân tay.
[in] fingerprintBufSize
Kích thước của vùng đệm được trỏ đến bằng vân tay số.
[out] fingerprintLen
Độ dài của giá trị vân tay được trả về.

GetEncryptedPasscodeKeyId

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

Lấy mã nhận dạng của khoá dùng để mã hoá mật mã đã mã hoá.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến một vùng đệm có chứa mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[out] keyId
Mã của khoá dùng để mã hoá mật mã đã mã hoá.

GetEncryptedPasscodeNonce

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

Nhận giá trị số chỉ dùng một lần liên kết với mật mã đã mã hoá.

Thông tin chi tiết
Các tham số
[in] encPasscode
Con trỏ đến một vùng đệm có chứa mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài của mật mã đã mã hoá.
[out] nonce
Giá trị số chỉ dùng một lần liên kết với mật mã đã mã hoá.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Trả về true nếu cấu hình mã hoá mật mã đã cung cấp được API mã hoá/giải mã mật mã hỗ trợ.