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

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

Tóm tắt

Liệt kê

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

Biến

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Công cụ đa dạng hoá khoá dùng cho việc lấy khoá mã hoá mật mã Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Công cụ đa dạng hoá khoá dùng cho việc lấy khoá mã hoá mật mã 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ật mã đã mã hoá bằng cơ chế 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ật mã đã mã hoá bằng cơ chế 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ậ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ật mã bằng lược đồ Mã hoá mật mã Nest.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Lấy 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)
Lấy giá trị vân tay 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ã của khoá dùng để mã hoá một mật mã đã mã hoá.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Lấy 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

Liệt kê

@278

 @278

Dệt các loại cấu hình mã hoá mật mã.

Thuộc tính
kPasscodeConfig1_KeyId

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

kPasscode_Config1_TEST_ONLY

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

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

kPasscode_Config2

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

@279

 @279

Đan các kích thước tham số giao thức mã hoá mật mã.

Thuộc tính
kPasscodeAuthenticationKeyLen

Độ dài khoá xác thực 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á khoá ứng dụng mã hoá bằng mật mã.

kPasscodeEncryptionKeyLen

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

kPasscodeFingerprintKeyDiversifierSize

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

kPasscodeFingerprintKeyLen

Độ dài khoá vân tay mật mã (SHA-1).

kPasscodeFingerprintLen

Độ dài vân tay số của mật mã.

kPasscodeMaxEncryptedLen

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

kPasscodeMaxLen

Độ dài mật mã tối đa chưa nhập mật mã.

kPasscodePaddedLen

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

kPasscodeTotalDerivedKeyLen

Tổng độ dài của khoá mã hoá (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á mật mã Weave.

Giá trị này biểu thị 4 byte đầu tiên của SHA-1 HASH của "Nest Passcode EK and AK" cụm từ tìm kiếm.

kPasscodeFingerprintKeyDiversifier

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

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

Giá trị này biểu thị 4 byte đầu tiên của SHA-1 HASH của "Nest Passcode EK and AK" cụm từ tìm kiếm.

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ật mã đã mã hoá bằng cơ chế Mã hoá mật mã Nest.

Chi tiết
Tham số
[in] encPasscode
Một con trỏ tới vùng đệm mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài mật mã đã mã hoá.
[in] passcodeBuf
Con trỏ 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 nhắm vào bằng PixelBuf.
[out] passcodeLen
Đặt thành độ dài của mật mã đã giải mã.
[in] groupKeyStore
Con trỏ 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 tính năng kiểm tra bằng vân tay 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ã đã 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á của nền tảng trả về các tham số khoá không hợp lệ.
other
Các lỗi khác riêng của từng nền tảng do các 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ật mã đã mã hoá bằng cơ chế Mã hoá mật mã Nest.

Chi tiết
Tham số
[in] encPasscode
Một con trỏ tới vùng đệm mật mã đã mã hoá.
[in] encPasscodeLen
Độ dài 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ỏ trỏ đến khoá 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 được liên kết với cấu hình được chỉ định.
[in] fingerprintKey
Con trỏ trỏ đến khoá dùng để tạo vân tay mật mã. Độ dài của khoá phải khớp với thuật toán vân tay số liên kết với cấu hình đã chỉ định.
[in] passcodeBuf
Con trỏ 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 nhắm vào bằng PixelBuf.
[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 tính năng kiểm tra bằng vân tay mật mã không thành công.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu vùng đệm mật mã đã 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ật mã bằng lược đồ Mã hoá mật mã Nest.

Chi tiết
Tham số
[in] config
Cấu hình mã hoá mật mã 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 chỉ định cho mật mã đã mã hoá.
[in] passcode
Con trỏ trỏ đến mật mã cần mã hoá.
[in] passcodeLen
Độ dài mật mã.
[out] encPasscode
Con trỏ trỏ đến vùng đệm để lưu trữ mật mã đã mã hoá.
[in] encPasscodeBufSize
Dung lượng vùng đệm cho việc lưu trữ mật mã đã mã hoá.
[out] encPasscodeLen
Độ dài mật mã đã mã hoá.
[in] groupKeyStore
Con trỏ 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ỏ đối với 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ã bạn 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á của nền tảng trả về các tham số khoá không hợp lệ.
other
Các lỗi khác riêng của từng nền tảng do các 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ật mã bằng lược đồ Mã hoá mật mã Nest.

Chi tiết
Tham số
[in] config
Cấu hình mã hoá mật mã 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 chỉ định cho mật mã.
[in] passcode
Con trỏ trỏ đến 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ỏ trỏ đến khoá 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 được liên kết với cấu hình được chỉ định.
[in] fingerprintKey
Con trỏ trỏ đến khoá dùng để tạo vân tay mật mã. Độ dài của khoá phải khớp với thuật toán vân tay số 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 nhất là kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
Kích thước của vùng đệm mà encPasscode trỏ đến.
[out] encPasscodeLen
Độ dài 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ỏ đối với 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
)

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

Chi tiết
Tham số
[in] encPasscode
Con trỏ đến một vùng đệm 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á mật mã Weave được sử dụng theo mật mã đã mã hoá.

GetEncryptedPasscodeFingerprint

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

Lấy giá trị vân tay liên kết với mật mã đã mã hoá.

Chi tiết
Tham số
[in] encPasscode
Con trỏ đến một vùng đệm 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 số.
[in] fingerprintBufSize
Kích thước của vùng đệm mà ngón tay vân tay chỉ vào.
[out] fingerprintLen
Độ dài của giá trị vân tay số được trả về.

GetEncryptedPasscodeKeyId

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

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

Chi tiết
Tham số
[in] encPasscode
Con trỏ đến một vùng đệm 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
)

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

Chi tiết
Tham số
[in] encPasscode
Con trỏ đến một vùng đệm 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ậ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ợ.