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 配对代码字符串,该字符串会编码为一个大端字节序(以 32 为底数)加上一个尾随的 Verhoeff 校验字符。生成的字符串具有 pairingCodeLen 参数指定的固定长度。字符串左侧会根据需要填充零以满足此长度要求。

具体说明
参数
[in] pairingCodeLen
所需的配对码字符串长度,包括尾随校验字符。必须大于等于 2。
[out] outBuf
指向字符缓冲区的指针,该缓冲区将接收编码配对代码,以及一个空终止符。提供的缓冲区应至少与 pairingCodeLen + 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 参数指定的固定长度。字符串左侧会根据需要填充零以满足此长度要求。

具体说明
参数
[in] val
要编码的值。
[in] pairingCodeLen
所需的编码配对码字符串长度,包括尾随校验字符。必须大于等于 2。
[out] outBuf
指向字符缓冲区的指针,该缓冲区将接收编码配对代码,以及一个空终止符。提供的缓冲区应至少与 pairingCodeLen + 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
一个以 NULL 结尾的字符串,其中包含 Kryptonite 配对码。
[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
一个以 NULL 结尾的字符串,其中包含 Nevis 配对码。
[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 终止,则输出也将以 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 配对代码字符串的初始字符解析为采用大端字节序、以 32 为底数的数字,并以无符号整数形式返回结果值。输入字符串可以是任何长度大于等于 2 的任何长度,只要解码后的整数适合 uint64_t 即可。

未尝试验证 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,或者配对码的初始字符与检查字符的值不一致。