透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::Weave::設定檔::安全性::密碼

這個命名空間包含 Weave 中所有 Weave 安全性設定檔中的 Weave 密碼程式庫。

總結

列舉

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
列舉
編密密碼加密設定類型。
@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)
}
列舉
編密密碼加密通訊協定參數大小。

變數

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 Encryption 配置加密的密碼。
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 Encryption 配置加密的密碼。
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 Encryption 配置加密密碼。
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 Encryption 配置加密密碼。
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)
取得用於加密加密密碼的金鑰 ID。
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
取得與加密密碼相關聯的 nce 值。
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
如果密碼加密/解密 API 支援所提供的密碼加密設定,則傳回 true。

結構

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

列舉

@278

 @278

編密密碼加密設定類型。

屬性
kPasscodeConfig1_KeyId

用於測試密碼設定 #1 的虛擬金鑰 ID。

kPasscode_Config1_TEST_ONLY

密碼加密設定 #1 未使用加密金鑰和密鑰進行驗證和指紋密碼。

這項設定僅供測試使用。

kPasscode_Config2

密碼加密配置 #2 使用 AES-128-ECB 加密,具有 8 字數 HMAC-SHA-1 完整性和 8 字數 HMAC-SHA-1 指紋。

@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 密碼加密金鑰衍生金鑰的金鑰分割工具。

這個值代表「Nest Passcode EK 和 AK」詞組 SHA-1 HASH 的前 4 個位元組。

kPasscodeFingerprintKeyDiversifier

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

用於 Weave 密碼加密金鑰衍生金鑰的金鑰分割工具。

這個值代表「Nest Passcode EK 和 AK」詞組 SHA-1 HASH 的前 4 個位元組。

函式

解密密碼

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

解密使用 Nest Passcode Encryption 配置加密的密碼。

詳細資料
參數
[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
如果要求的金鑰含有無效的金鑰 ID。
WEAVE_ERROR_BUFFER_TOO_SMALL
如果提供的密碼緩衝區太小。
WEAVE_ERROR_INVALID_ARGUMENT
如果擷取的密碼太短或太長,或是沒有指向群組金鑰庫,或者平台金鑰庫傳回無效的金鑰參數,
other
平台金鑰存放區 API 傳回的其他平台特定錯誤。

解密密碼

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 Encryption 配置加密的密碼。

詳細資料
參數
[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
如果簽名的密碼長度太短或太長。

加密密碼

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 Encryption 配置加密密碼。

詳細資料
參數
[in] config
要使用的密碼加密設定。
[in] keyId
要求的密碼加密金鑰 ID。
[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
如果要求的金鑰含有無效的金鑰 ID。
WEAVE_ERROR_INVALID_ARGUMENT
如果提供的密碼太短或太長,或者沒有指向群組金鑰庫,或者平台金鑰庫傳回無效的金鑰參數,
other
平台金鑰存放區 API 傳回的其他平台特定錯誤。

加密密碼

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 Encryption 配置加密密碼。

詳細資料
參數
[in] config
要使用的 Weave 密碼加密設定。
[in] keyId
要求的密碼加密金鑰 ID。
[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
如果提供的密碼太短或太長。

取得加密票證設定

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

取得加密密碼的設定類型。

詳細資料
參數
[in] encPasscode
指向含有加密密碼的緩衝區。
[in] encPasscodeLen
加密密碼長度。
[out] config
加密密碼所使用的 Weave 密碼加密設定。

取得 EncryptPassFingerprint

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
傳回指紋值的長度。

取得加密密碼金鑰 ID

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

取得用於加密加密密碼的金鑰 ID。

詳細資料
參數
[in] encPasscode
指向含有加密密碼的緩衝區。
[in] encPasscodeLen
加密密碼長度。
[out] keyId
用於加密加密密碼的金鑰 ID。

GetEncryptedPasscodeNonce

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

取得與加密密碼相關聯的 nce 值。

詳細資料
參數
[in] encPasscode
指向含有加密密碼的緩衝區。
[in] encPasscodeLen
加密密碼長度。
[out] nonce
與加密密碼相關的非空值。

支援傳遞碼加密設定

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

如果密碼加密/解密 API 支援所提供的密碼加密設定,則傳回 true。