nl::PairingCode

摘要

列舉

@353 列舉
@354 列舉
@355 列舉
@356{
  kStandardPairingCodeLength = 6,
  kKryptonitePairingCodeLength = 9,
  kPairingCodeLenMin = 2,
  kBitsPerCharacter = 5
}
列舉

函式

GeneratePairingCode(uint8_t pairingCodeLen, char *outBuf)
產生隨機配對碼。
IntToPairingCode(uint64_t val, uint8_t pairingCodeLen, char *outBuf)
將整數值編碼為 Weave 配對碼。
IntToPairingCodeChar(int val)
char
將 0..31 範圍內的整數值轉換為對應的 Weave 配對碼字元。
IsValidPairingCodeChar(char ch)
bool
如果提供的字元是有效的 Weave 配對碼字元,則傳回 true。
KryptoniteDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
根據 Kryptonite 裝置 ID 產生 Kryptonite 配對碼字串。
KryptonitePairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
傳回以 Kryptonite 配對碼編碼的裝置 ID。
NevisDeviceIdToPairingCode(uint64_t deviceId, char *pairingCodeBuf, size_t pairingCodeBufSize)
根據 Nevis 裝置 ID 產生 Nevis 配對碼字串。
NevisPairingCodeToDeviceId(const char *pairingCode, uint64_t & deviceId)
傳回以 Nevis 配對碼編碼的裝置 ID。
NormalizePairingCode(char *pairingCode, size_t & pairingCodeLen)
void
將配對碼字串中的字元正規化。
PairingCodeCharToInt(char ch)
int
將 Weave 配對碼字元轉換成介於 0..31 之間的整數值。
PairingCodeToInt(const char *pairingCode, size_t pairingCodeLen, uint64_t & val)
將 Weave 配對碼解碼為整數值。
VerifyPairingCode(const char *pairingCode, size_t pairingCodeLen)
驗證 Weave 配對碼和檢查字元。

列舉

@353

 @353

@354

 @354

@355

 @355

@356

 @356
屬性
kBitsPerCharacter

單一配對碼字元中編碼的位元數。

kKryptonitePairingCodeLength

Kryptonite 的配對碼長度。

kPairingCodeLenMin

配對碼長度下限。

kStandardPairingCodeLength

大多數 Nest 產品的配對碼長度。

函式

GeneratePairingCode

WEAVE_ERROR GeneratePairingCode(
  uint8_t pairingCodeLen,
  char *outBuf
)

產生隨機配對碼。

這個函式會產生隨機的 Weave 配對程式碼字串,以指定長度為 . 值,並編碼成大端數字的 Base-32 數字,以及結尾的 Verhoeff 檢查字元。產生的字串含有 pairingCodeLen 參數指定的固定長度。為符合這個長度,該字串會在左側加上 0。

詳細說明
參數
[in] pairingCodeLen
配對碼字串的所需長度,包括結尾的檢查字元。必須大於或等於 2。
[out] outBuf
指向接收編碼配對碼的字元緩衝區指標,以及空值結束字元。提供的緩衝區至少應和 PairCodeLen + 1 一樣大。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果 PairCodeLen 小於 2,或是提供的整數值無法編碼為 PairCodeLen 指定的字元數,檢查字元數減 1。

IntToPairingCode

WEAVE_ERROR IntToPairingCode(
  uint64_t val,
  uint8_t pairingCodeLen,
  char *outBuf
)

將整數值編碼為 Weave 配對碼。

函式會產生 Weave 配對碼字串,其中包含提供的無正負號整數值,並編碼為底數底 32 數字,加上結尾的 Verhoeff 檢查字元。產生的字串含有 pairingCodeLen 參數指定的固定長度。為符合這個長度,該字串會在左側加上 0。

詳細說明
參數
[in] val
要編碼的值。
[in] pairingCodeLen
經過編碼的配對碼字串長度,包括結尾的檢查字元。必須大於或等於 2。
[out] outBuf
指向接收編碼配對碼的字元緩衝區指標,以及空值結束字元。提供的緩衝區至少應和 PairCodeLen + 1 一樣大。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果 PairCodeLen 小於 2,或是提供的整數值無法編碼為 PairCodeLen 指定的字元數,檢查字元數減 1。

IntToPairingCodeChar

char IntToPairingCodeChar(
  int val
)

將 0..31 範圍內的整數值轉換為對應的 Weave 配對碼字元。

請注意,這個函式一律會產生大寫字元。

詳細說明
參數
[in] val
要轉換的整數值。
傳回
對應至指定整數值的配對碼字元,如果整數值超出範圍,則為 0。

IsValidPairingCodeChar

bool IsValidPairingCodeChar(
  char ch
)

如果提供的字元是有效的 Weave 配對碼字元,則傳回 true。

請注意,這個函式不區分大小寫。

詳細說明
參數
[in] ch
要測試的字元。
傳回
如果提供的字元是有效的 Weave 配對碼字元,則為 True。

KryptoniteDeviceIdToPairingCode

WEAVE_ERROR KryptoniteDeviceIdToPairingCode(
  uint64_t deviceId,
  char *pairingCodeBuf,
  size_t pairingCodeBufSize
)

根據 Kryptonite 裝置 ID 產生 Kryptonite 配對碼字串。

詳細說明
參數
[in] deviceId
Kryptonite 裝置 ID。
[out] pairingCodeBuf
指向接收 Kryptonite 配對代碼 (NULL 終止字元) 的緩衝區指標。提供的緩衝區大小應為 7 個字元以上。
[in] pairingCodeBufSize
透過 PairCodeBuf 指向的緩衝區大小。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果提供的裝置 ID 超出範圍,或是提供的緩衝區太小。

KryptonitePairingCodeToDeviceId

WEAVE_ERROR KryptonitePairingCodeToDeviceId(
  const char *pairingCode,
  uint64_t & deviceId
)

傳回以 Kryptonite 配對碼編碼的裝置 ID。

詳細說明
參數
[in] pairingCode
包含 Kryptonite 配對碼的 NULL 結尾字串。
[out] deviceId
接收已解碼 Kryptonite 裝置 ID 的整數參照。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果提供的配對碼長度不正確,或配對碼含有無效的字元,或者配對代碼的初始字元與檢查字元不一致。

NevisDeviceIdToPairingCode

WEAVE_ERROR NevisDeviceIdToPairingCode(
  uint64_t deviceId,
  char *pairingCodeBuf,
  size_t pairingCodeBufSize
)

根據 Nevis 裝置 ID 產生 Nevis 配對碼字串。

詳細說明
參數
[in] deviceId
Nevis 裝置 ID。
[out] pairingCodeBuf
指向接收 Nevis 配對代碼 (NULL 終止字元) 的緩衝區指標。提供的緩衝區大小應為 7 個字元以上。
[in] pairingCodeBufSize
透過 PairCodeBuf 指向的緩衝區大小。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果提供的裝置 ID 超出範圍,或是提供的緩衝區太小。

NevisPairingCodeToDeviceId

WEAVE_ERROR NevisPairingCodeToDeviceId(
  const char *pairingCode,
  uint64_t & deviceId
)

傳回以 Nevis 配對碼編碼的裝置 ID。

詳細說明
參數
[in] pairingCode
包含 Nevis 配對碼的 NULL 結尾字串。
[out] deviceId
接收已解碼 Nevis 裝置 ID 的整數參照。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果提供的配對碼長度不正確,或配對碼含有無效的字元,或者配對代碼的初始字元與檢查字元不一致。

NormalizePairingCode

void NormalizePairingCode(
  char *pairingCode,
  size_t & pairingCodeLen
)

將配對碼字串中的字元正規化。

這個函式會將所有字母字元轉換為大寫,將無效字元「I」、「O」、「Q」和「Z」分別對應至「1」、「0」、「0」和「2」,並移除特定字串中所有其他非配對編碼字元。

輸入字串不一定要終止 NULL,但如果輸出是 NULL,也會終止。

詳細說明
參數
[in,out] pairingCode
在輸入時,要正規化的配對碼字串。在輸出中,正規化字串。您不需要強制將字串終止為空值。
[in,out] pairingCodeLen
在輸入內容中,配對碼字串的長度,不含任何 NULL 結束子字元。在輸出中,正規化字串的長度。

PairingCodeCharToInt

int PairingCodeCharToInt(
  char ch
)

將 Weave 配對碼字元轉換成介於 0..31 之間的整數值。

請注意,這個函式不區分大小寫。

詳細說明
參數
[in] ch
要轉換的字元。
傳回
與指定配對碼字元對應的整數值;如果 ch 不是有效的字元,則為 -1。

PairingCodeToInt

WEAVE_ERROR PairingCodeToInt(
  const char *pairingCode,
  size_t pairingCodeLen,
  uint64_t & val
)

將 Weave 配對碼解碼為整數值。

此函式會將 Weave 配對碼字串的初始字元剖析為 Base-32 數字,然後傳回結果值做為無正負號整數。只要解碼的整數不超過 uint64_t,輸入字串長度可以是 >= 2 的任何長度。

系統不會嘗試驗證 Verhoeff 檢查字元 (請參閱 VerifyPairingCode())。

詳細說明
參數
[in] pairingCode
要解碼的配對碼字串。這個字串不需要終止為 NULL。
[in] pairingCodeLen
配對碼字串長度,不含任何 NULL 結束子字元。必須大於或等於 2。
[out] val
解碼的整數值。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果 PairCodeLen 小於 2,或是提供的配對碼字串含有無效的字元,或者配對碼中編碼的整數值超過可儲存在 uint64_t 中的最大值。

VerifyPairingCode

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

驗證 Weave 配對碼和檢查字元。

詳細說明
參數
[in] pairingCode
要檢查的配對碼字串。這個字串不需要終止為 NULL。
[in] pairingCodeLen
配對碼字串長度,不含任何 NULL 結束子字元。必須大於或等於 2。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果 PairCodeLen 小於 2,或是配對代碼的初始字元與檢查字元值不一致。