Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

nl::Weave::Hồ sơ::Bảo mật::Mật mã

Vùng chứa tên này bao gồm tất cả giao diện trong Weave cho thư viện mật mã Weave trong hồ sơ bảo mật Weave.

Tóm tắt

Bảng liệt kê

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Dệt theo kiểu cấu hình mã hóa 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 kích thước thông số giao thức mã hóa mật mã.

Biến

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Bộ phân loại khóa dùng để lấy khóa mã hóa Weave đổi mật khẩu.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Bộ phân loại khóa dùng để lấy khóa mã hóa Weave đổi mật khẩu.

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ã đã được mã hóa bằng lược đồ Mã hóa 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)
Giải mã một mật mã đã được mã hóa bằng lược đồ Mã hóa 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)
Mã hóa mật mã bằng lược đồ mã hóa 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)
Mã hóa mật mã bằng lược đồ mã hóa Nest Passcode.
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ã hóa.
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ã nhận dạng của khóa dùng để mã hóa mật mã đã mã hóa.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Lấy giá trị nonces được 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ã hóa mật mã được cung cấp được API mã hóa/giải mã mã hóa hỗ trợ.

Cấu trúc

nl::Weave::Hồ sơ::Bảo mật::Mật mã:Mã hóaPasscodeStruct

Bảng liệt kê

@278

 @278

Dệt theo kiểu cấu hình mã hóa mật mã.

Thuộc tính
kPasscodeConfig1_KeyId

Mã khóa giả cho cấu hình mật mã thử nghiệm số 1.

kPasscode_Config1_TEST_ONLY

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

Cấu hình này NÊN chỉ 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

Dệt kích thước thông số giao thức mã hóa mật mã.

Thuộc tính
kPasscodeAuthenticationKeyLen

Độ dài khóa 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 bộ mã hóa khóa ứng dụng mã hóa mật mã

kPasscodeEncryptionKeyLen

Độ dài khóa mã hóa mật khẩu (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Kích thước bộ phân chia phím vân tay bằng mật mã.

kPasscodeFingerprintKeyLen

Độ dài khóa vân tay mật mã (SHA-1).

kPasscodeFingerprintLen

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

kPasscodeMaxEncryptedLen

Độ dài mật mã được mã hóa tối đa.

kPasscodeMaxLen

Độ dài mật mã tối đa chưa được giải mã.

kPasscodePaddedLen

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

kPasscodeTotalDerivedKeyLen

Tổng độ dài của khóa mật mã (mã hóa và amp; tính toàn vẹn).

Biến

Mã xác thực kPasscodeEncKeyDiversifier

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

Bộ phân loại khóa dùng để lấy khóa mã hóa Weave đổi mật khẩu.

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

Mã khóa kPasscodeFingerprintDiDisifier

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

Bộ phân loại khóa dùng để lấy khóa mã hóa Weave đổi mật khẩu.

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

Hàm

Giải mã mật mã

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ã đã được mã hóa bằng lược đồ Mã hóa Nest Passcode.

Thông tin chi tiết
Các thông số
[in] encPasscode
Con trỏ đến bộ đệm mật mã đã mã hóa.
[in] encPasscodeLen
Độ dài của mật mã được mã hóa.
[in] passcodeBuf
Con trỏ vào bộ đệm để nhận mật mã đã giải mã.
[in] passcodeBufSize
Kích thước của bộ đệm tính bằng mật mãBuf.
[out] passcodeLen
Đặt độ dài của mật mã đã giải mã.
[in] groupKeyStore
Con trỏ đến đối tượng kho khóa của nhóm.
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu không hỗ trợ cấu hình mật mã đã chỉ định.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Nếu quá trình xác thực mật mã không thành công.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Nếu tính năng kiểm tra vân tay số 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ó Id khoá không hợp lệ.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu bộ đệm mật mã được cung cấp quá nhỏ.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã đã mã hóa quá ngắn hoặc quá dài; hoặc nếu con trỏ đến kho khóa nhóm không được cung cấp hoặc cửa hàng khóa nền tảng trả về các thông số khóa không hợp lệ.
other
Các lỗi khác dành riêng cho nền tảng do các API cửa hàng khóa nền tảng trả về.

Giải mã mật mã

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ã đã được mã hóa bằng lược đồ Mã hóa Nest Passcode.

Thông tin chi tiết
Các thông số
[in] encPasscode
Con trỏ đến bộ đệm mật mã đã mã hóa.
[in] encPasscodeLen
Độ dài của mật mã được mã hóa.
[in] encKey
Con trỏ đến khoá sẽ 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 được chỉ định.
[in] authKey
Con trỏ đến 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 được chỉ định.
[in] fingerprintKey
Con trỏ tới khóa dùng để tạo vân tay số 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ỏ vào bộ đệm để nhận mật mã đã giải mã.
[in] passcodeBufSize
Kích thước của bộ đệm tính bằng mật mãBuf.
[out] passcodeLen
Đặt độ dài của mật mã đã giải mã.
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Nếu không hỗ trợ cấu hình mật mã đã chỉ định.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Nếu quá trình xác thực mật mã không thành công.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Nếu tính năng kiểm tra vân tay số bằng mật mã không thành công.
WEAVE_ERROR_BUFFER_TOO_SMALL
Nếu bộ đệm mật mã được cung cấp quá nhỏ.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu mật mã đã mã hóa quá ngắn hoặc quá dài.

Mã hóa mật mã

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ã hóa mật mã bằng lược đồ mã hóa Nest Passcode.

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

Mã hóa mật mã

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ã hóa mật mã bằng lược đồ mã hóa Nest Passcode.

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

GetMã hóaPasscodeConfig

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ã hóa.

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

GetMã hóaPasscodeFingerprint

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á.

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

GetMã hóaPasscodeKeyId

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

Lấy mã nhận dạng của khóa dùng để mã hóa mật mã đã mã hóa.

Thông tin chi tiết
Các thông số
[in] encPasscode
Trỏ vào một bộ đệm chứa mật mã đã mã hóa.
[in] encPasscodeLen
Độ dài của mật mã đã mã hóa.
[out] keyId
Mã của khóa dùng để mã hóa mật mã đã mã hóa.

Thẻ mã hóa

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

Lấy giá trị nonces được liên kết với mật mã đã mã hoá.

Thông tin chi tiết
Các thông số
[in] encPasscode
Trỏ vào một bộ đệm chứa mật mã đã mã hóa.
[in] encPasscodeLen
Độ dài của mật mã đã mã hóa.
[out] nonce
Giá trị nonces được liên kết với mật mã đã mã hoá.

Được hỗ trợ

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

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