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 檢查字元。產生的字串長度是由 PairCodeLen 參數指定的固定長度。字串左側會視需要加上零,以符合這個長度要求。

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

IntToPairingCode

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

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

這個函式會產生 Weave 配對碼字串,其中包含提供的無正負號整數值,並編碼為大端序 (Base-32 數字),再加上結尾的 Verhoeff 檢查字元。產生的字串長度是由 PairCodeLen 參數指定的固定長度。字串左側會視需要加上零,以符合這個長度要求。

詳細資料
參數
[in] val
要編碼的值。
[in] pairingCodeLen
所需的編碼配對碼字串長度,包括結尾的檢查字元。必須大於或等於 2。
[out] outBuf
指向會接收編碼配對碼,以及空值結束字元字元的字元緩衝區。提供的緩衝區至少應與配對 CodeLen + 1 一樣大。
傳回值
WEAVE_NO_ERROR
方法是否成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果配對 CodeLen 為 <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
在輸入時,將配對碼字串正規化。在輸出中,正規化字串。字串不必終止為 NULL。
[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 數字) 的初始字元,並將結果值傳回為無正負號的整數。輸入字串的長度可以是 >= 2,只要已解碼的整數符合 uint64_t 即可。

未嘗試驗證 Verhoeff 檢查字元 (請參閱 VerifyPairingCode())。

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

VerifyPairingCode

WEAVE_ERROR VerifyPairingCode(
  const char *pairingCode,
  size_t pairingCodeLen
)

驗證 Weave 配對碼與其檢查字元。

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