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 校验字符。生成的字符串具有由 pairCodeLen 参数指定的固定长度。根据需要在字符串左侧填充零来满足此长度要求。

详细信息
参数
[in] pairingCodeLen
配对码字符串所需的长度,包括尾随校验字符。必须大于等于 2。
[out] outBuf
指向将接收编码配对代码的字符缓冲区以及 null 终止符的指针。提供的缓冲区应至少与 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 校验字符组成。生成的字符串具有由 pairCodeLen 参数指定的固定长度。根据需要在字符串左侧填充零来满足此长度要求。

详细信息
参数
[in] val
要编码的值。
[in] pairingCodeLen
已编码配对码字符串的所需长度,包括尾随校验字符。必须大于等于 2。
[out] outBuf
指向将接收编码配对代码的字符缓冲区以及 null 终止符的指针。提供的缓冲区应至少与 pairingCodeLen + 1 一样大。
返回值
WEAVE_NO_ERROR
如果方法执行成功。
WEAVE_ERROR_INVALID_ARGUMENT
如果 matchingCodeLen 为 <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
对一个整数的引用,用于接收已解码的尼维斯设备 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 配对代码字符串的初始字符解析为以 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 或配对码的初始字符与校验字符的值不一致。