nl::Weave

摘要

枚举

@21{
  kFlagConnectionClosed = 0x0002,
  kFlagAutoRequestAck = 0x0004,
  kFlagDropAck = 0x0008,
  kFlagResponseExpected = 0x0010,
  kFlagAckPending = 0x0020,
  kFlagPeerRequestedAck = 0x0040,
  kFlagMsgRcvdFromPeer = 0x0080,
  kFlagAutoReleaseKey = 0x0100,
  kFlagAutoReleaseConnection = 0x0200,
  kFlagUseEphemeralUDPPort = 0x0400
}
枚举
@36 枚举
@37 枚举
@38{
  kFabricIdDefaultForTest = 1ULL
}
枚举
@39{
  kCertType_NotSpecified = 0x00,
  kCertType_General = 0x01,
  kCertType_Device = 0x02,
  kCertType_ServiceEndpoint = 0x03,
  kCertType_FirmwareSigning = 0x04,
  kCertType_AccessToken = 0x05,
  kCertType_CA = 0x06,
  kCertType_AppDefinedBase = 0x7F,
  kCertType_Max = 0xFF
}
枚举
标识证书的用途或应用。
@40 枚举
标识基于密码的身份验证协议中使用的密码的来源(例如,
@41{
  kWeaveAuthMode_NotSpecified = 0x0000,
  kWeaveAuthModeCategory_General = 0x0000,
  kWeaveAuthModeCategory_PASE = 0x1000,
  kWeaveAuthModeCategory_CASE = 0x2000,
  kWeaveAuthModeCategory_TAKE = 0x3000,
  kWeaveAuthModeCategory_GroupKey = 0x4000,
  kWeaveAuthModeCategory_AppDefinedBase = 0xC000,
  kWeaveAuthMode_Unauthenticated = kWeaveAuthModeCategory_General | 0x001,
  kWeaveAuthMode_PASE_PairingCode = kWeaveAuthModeCategory_PASE | kPasswordSource_PairingCode,
  kWeaveAuthMode_CASE_AnyCert = kWeaveAuthModeCategory_CASE | kCertType_NotSpecified,
  kWeaveAuthMode_CASE_GeneralCert = kWeaveAuthModeCategory_CASE | kCertType_General,
  kWeaveAuthMode_CASE_Device = kWeaveAuthModeCategory_CASE | kCertType_Device,
  kWeaveAuthMode_CASE_ServiceEndPoint = kWeaveAuthModeCategory_CASE | kCertType_ServiceEndpoint,
  kWeaveAuthMode_CASE_AccessToken = kWeaveAuthModeCategory_CASE | kCertType_AccessToken,
  kWeaveAuthMode_TAKE_IdentificationKey = kWeaveAuthModeCategory_TAKE | 0x001
}
枚举
@42{
  kFabricSecretScope_All = 0x00
}
枚举
@43{
  kTestKey_AES128CTRSHA1_DataKeyByte = 0xAB,
  kTestKey_AES128CTRSHA1_IntegrityKeyByte = 0xBA
}
枚举
@44 枚举
Weave 消息加密应用密钥多样化器大小。
@45 枚举
@53 枚举
@54{
  kWeavePeerDescription_MaxLength = 100
}
枚举
@55{
  kWeaveHeaderFlag_DestNodeId = 0x0100,
  kWeaveHeaderFlag_SourceNodeId = 0x0200,
  kWeaveHeaderFlag_TunneledData = 0x0400,
  kWeaveHeaderFlag_MsgCounterSyncReq = 0x0800
}
枚举
与已编码的 Weave 消息的标头相关的定义。
@56{
  kEUI64_UL_Mask = 0x0200000000000000ULL,
  kEUI64_UL_Unversal = 0,
  kEUI64_UL_Local = kEUI64_UL_Mask,
  kEUI64_IG_Mask = 0x0100000000000000ULL,
  kEUI64_IG_Individual = 0,
  kEUI64_IG_Group = kEUI64_IG_Mask
}
枚举
IEEE EUI-64 标识符的位字段定义。
@57{
  kMaxAlwaysLocalWeaveNodeId = 0x000000000000FFFFULL
}
枚举
特殊范围的 Weave 节点 ID。
WeaveEncryptionType{
  kWeaveEncryptionType_None = 0,
  kWeaveEncryptionType_AES128CTRSHA1 = 1
}
枚举
Weave 邮件的加密类型。
WeaveExchangeFlags{
  kWeaveExchangeFlag_Initiator = 0x1,
  kWeaveExchangeFlag_AckId = 0x2,
  kWeaveExchangeFlag_NeedsAck = 0x4
}
枚举
Weave Exchange 标头标记位。
WeaveExchangeVersion 枚举
Weave Exchange 标头版本。
WeaveMessageFlags{
  kWeaveMessageFlag_ReuseMessageId = 0x00000010,
  kWeaveMessageFlag_ReuseSourceId = 0x00000020,
  kWeaveMessageFlag_DelaySend = 0x00000040,
  kWeaveMessageFlag_RetainBuffer = 0x00000080,
  kWeaveMessageFlag_MessageEncoded = 0x00001000,
  kWeaveMessageFlag_DefaultMulticastSourceAddress = 0x00002000,
  kWeaveMessageFlag_PeerRequestedAck = 0x00004000,
  kWeaveMessageFlag_DuplicateMessage = 0x00008000,
  kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized = 0x00010000,
  kWeaveMessageFlag_FromInitiator = 0x00020000,
  kWeaveMessageFlag_ViaEphemeralUDPPort = 0x00040000,
  kWeaveMessageFlag_MulticastFromLinkLocal = kWeaveMessageFlag_DefaultMulticastSourceAddress,
  kWeaveMessageFlag_DestNodeId = kWeaveHeaderFlag_DestNodeId,
  kWeaveMessageFlag_SourceNodeId = kWeaveHeaderFlag_SourceNodeId,
  kWeaveMessageFlag_TunneledData = kWeaveHeaderFlag_TunneledData,
  kWeaveMessageFlag_MsgCounterSyncReq = kWeaveHeaderFlag_MsgCounterSyncReq
}
枚举
与入站或出站 Weave 邮件相关联的标志。
WeaveMessageVersion{
  kWeaveMessageVersion_Unspecified = 0,
  kWeaveMessageVersion_V1 = 1,
  kWeaveMessageVersion_V2 = 2
}
枚举
Weave Message 格式的版本。
WeaveSubnetId{
  kWeaveSubnetId_NotSpecified = 0,
  kWeaveSubnetId_PrimaryWiFi = 1,
  kWeaveSubnetId_ThreadAlarm = 2,
  kWeaveSubnetId_WiFiAP = 3,
  kWeaveSubnetId_MobileDevice = 4,
  kWeaveSubnetId_Service = 5,
  kWeaveSubnetId_ThreadMesh = 6
}
枚举
Weave 为典型设备上的区分网络接口提供了一些预留的子网编号。
WeaveVendorId 枚举

类型定义符

FabricSecretRotationScheme typedef
uint8_t
FabricSecretScope nl::Weave::FabricSecretScope
uint8_t
识别可以拥有和使用结构密钥的设备类别。
WeaveAuthMode typedef
uint16_t
标识如何对对等节点进行身份验证。
WeaveEncryptionKey typedef
WeaveEncryptionType typedef
enum nl::Weave::WeaveEncryptionType
Weave 邮件的加密类型。
WeaveExchangeFlags typedef
enum nl::Weave::WeaveExchangeFlags
Weave Exchange 标头标记位。
WeaveExchangeVersion typedef
enum nl::Weave::WeaveExchangeVersion
Weave Exchange 标头版本。
WeaveMessageFlags typedef
enum nl::Weave::WeaveMessageFlags
与入站或出站 Weave 邮件相关联的标志。
WeaveMessageHeader typedef
WeaveMessageVersion typedef
enum nl::Weave::WeaveMessageVersion
Weave Message 格式的版本。
WeaveSubnetId typedef
enum nl::Weave::WeaveSubnetId
Weave 为典型设备上的区分网络接口提供了一些预留的子网编号。

变量

ExchangeMgr
NL_DLL_EXPORT WeaveExchangeManager
FabricState
NL_DLL_EXPORT WeaveFabricState
MessageLayer
NL_DLL_EXPORT WeaveMessageLayer
SecurityMgr
NL_DLL_EXPORT WeaveSecurityManager
WeaveConnection
class NL_DLL_EXPORT
WeaveExchangeManager
class NL_DLL_EXPORT
WeaveMessageLayer
class NL_DLL_EXPORT
gDefaultWRMPConfig = { WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT, WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS }
const WRMPConfig
kWeaveMsgEncAppKeyDiversifier = { 0xB1, 0x1D, 0xAE, 0x5B }[]
const uint8_t
用于 Weave 消息加密密钥派生的密钥多样化器。

函数

AppGroupMasterKeyIdFromAuthMode(WeaveAuthMode authMode)
uint8_t
返回与身份验证模式关联的应用组主密钥 ID。
CASEAuthMode(uint8_t certType)
WeaveAuthMode
返回指定证书类型的对应 CASE 身份验证模式。
CertTypeFromAuthMode(WeaveAuthMode authMode)
uint8_t
返回指定身份验证模式的密码来源。
DecodeHeaderField(const uint16_t headerField, WeaveMessageInfo *msgInfo)
void
DefaultOnMessageReceived(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
EncodeHeaderField(const WeaveMessageInfo *msgInfo)
uint16_t
FindMessageName(uint32_t inProfileId, uint8_t inMsgType)
const char *
FindProfileName(uint32_t inProfileId)
const char *
FormatWeaveError(char *buf, uint16_t bufSize, int32_t err)
bool
如果出现 Weave 错误,则返回直观易懂的以 NULL 结尾的 C 字符串,以描述错误。
GenerateWeaveNodeId(uint64_t & nodeId)
NL_DLL_EXPORT WEAVE_ERROR
生成随机 Weave 节点 ID。
GetFibonacciForIndex(uint32_t index)
uint32_t
此函数为给定的 32 位索引生成 32 位的斐波那契数。
GetMessageName(uint32_t profileId, uint8_t msgType)
const char *
GetProfileName(uint32_t profileId)
const char *
GetRandU16(void)
uint16_t
此函数生成 16 位无符号随机数。
GetRandU32(void)
uint32_t
此函数生成 32 位无符号随机数。
GetRandU64(void)
uint64_t
此函数生成 64 位无符号随机数。
GetRandU8(void)
uint8_t
此函数生成 8 位无符号随机数。
GetVendorName(uint16_t vendorId)
const char *
GroupKeyAuthMode(uint32_t keyId)
WeaveAuthMode
返回给定密钥 ID 的相应组密钥身份验证模式。
IPv6InterfaceIdToWeaveNodeId(uint64_t interfaceId)
uint64_t
将 IPv6 地址接口标识符转换为 Weave 节点标识符。
IsCASEAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于 Weave CASE 协议,则为 true。
IsCertAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于拥有与证书关联的私钥,则为 true。
IsGroupKeyAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于拥有共享群组密钥,则为 true。
IsPASEAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于 Weave PASE 协议,则为 true。
IsPasswordAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于拥有共享密码,则为 true。
IsTAKEAuthMode(WeaveAuthMode authMode)
bool
如果身份验证模式基于 Weave TAKE 协议,则为 true。
IsWRMPControlMessage(uint32_t profileId, uint8_t msgType)
bool
J2N_ByteArray(JNIEnv *env, jbyteArray inArray, uint8_t *& outArray, uint32_t & outArrayLen)
J2N_ByteArrayFieldVal(JNIEnv *env, jobject obj, const char *fieldName, uint8_t *& outArray, uint32_t & outArrayLen)
J2N_ByteArrayInPlace(JNIEnv *env, jbyteArray inArray, uint8_t *outArray, uint32_t maxArrayLen)
J2N_EnumFieldVal(JNIEnv *env, jobject obj, const char *fieldName, const char *fieldType, int & outVal)
J2N_EnumVal(JNIEnv *env, jobject enumObj, int & outVal)
J2N_IntFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jint & outVal)
J2N_LongFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jlong & outVal)
J2N_ShortFieldVal(JNIEnv *env, jobject obj, const char *fieldName, jshort & outVal)
J2N_StringFieldVal(JNIEnv *env, jobject obj, const char *fieldName, char *& outVal)
MakeClassName(const char *basePackageName, const char *relativeClassName, char *& classNameBuf)
PASEAuthMode(uint8_t pwSource)
WeaveAuthMode
返回指定密码来源的相应 PASE 身份验证模式。
PasswordSourceFromAuthMode(WeaveAuthMode authMode)
uint8_t
返回指定身份验证模式的密码来源。
PrintTunnelInfo(const WeaveConnectionTunnel & tun, const TCPEndPoint & fromEndPoint, const TCPEndPoint & toEndPoint, const PacketBuffer & data)
void
ToHex(const uint8_t data)
char
ToHexString(const uint8_t *data, size_t dataLen, char *& outBuf, size_t & outBufSize)
void
WeaveEncryptionKeyToString(uint8_t encType, const WeaveEncryptionKey & key, char *buf, size_t bufSize)
void
WeaveFabricIdToIPv6GlobalId(uint64_t fabricId)
uint64_t
将 Weave 结构标识符转换为 IPv6 ULA 全局标识符。
WeaveMessageSourceToStr(char *buf, uint32_t bufSize, const WeaveMessageInfo *msgInfo)
void
WeaveNodeAddrToStr(char *buf, uint32_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, WeaveConnection *con)
void
WeaveNodeIdToIPv6InterfaceId(uint64_t nodeId)
uint64_t
将 Weave 节点标识符转换为 IPv6 地址接口标识符。
max(const _T & a, const _T & b)
const _T &
min(const _T & a, const _T & b)
const _T &

nl::Weave::Binding

捕获 Weave 通信的预期目标和关联的配置信息。

nl::Weave::Counter

用于将计数器作为整数值进行管理的接口。

nl::Weave::ExchangeContext

此类表示两个或多个节点之间正在进行的对话 (ExchangeContext)。

nl::Weave::FabricStateDelegate

此抽象委托类会传达结构脉络状态变化。

nl::Weave::HostPortList

用于管理和操控主机端口列表,这是一个与 Weave Service Directory 相关联的主机和端口标识符元组的紧凑二进制编码集合。

nl::Weave::JNIUtils
nl::Weave::MonotonicallyIncreasingCounter

用于将单调递增计数器作为整数值进行管理的类。

nl::Weave::PersistedCounter

用于将计数器作为整数值进行管理的类,该值在重新启动后保持不变。

nl::Weave::WeaveConnection

Weave Connection 类的定义。

nl::Weave::WeaveConnectionTunnel

WeaveConnectionTunnel 类的定义,用于管理一对 TCPEndPoint,其原始 WeaveConnection 已耦合;WeaveMessageLayer 会在二者之间转发所有数据和连接关闭。

nl::Weave::WeaveEncryptionKey_AES128CTRSHA1
nl::Weave::WeaveExchangeHeader

此政策用于指定 ExchangeContext 中特定 Weave 邮件的 Weave 个人资料和邮件类型。

nl::Weave::WeaveExchangeManager

此类用于管理与其他 Weave 节点的 ExchangeContext。

nl::Weave::WeaveFabricState

前向声明 WeaveFabricState

nl::Weave::WeaveKeyId

Weave 密钥标识符的定义。

nl::Weave::WeaveMessageLayer

WeaveMessageLayer 类的定义,用于管理与其他 Weave 节点的通信。

nl::Weave::WeaveMsgEncryptionKey

包含 Weave 消息加密密钥的相关信息。

nl::Weave::WeaveMsgEncryptionKeyCache

Weave 消息加密密钥的密钥缓存。

nl::Weave::WeaveSecurityManager
nl::Weave::WeaveServerBase

一个通用的基本对象,用于实现 Weave 配置文件免请求响应程序(服务器),用于封装验证过的请求和发送状态报告,并为结构状态和广告交易平台管理器提供通用的数据成员存储空间。

nl::Weave::WeaveServerDelegateBase

用于实现 Weave 服务器委托对象的通用基类。

nl::Weave::WeaveSessionKey

包含 Weave 会话密钥的相关信息。

nl::Weave::WeaveSessionState

传达与其他节点发送/接收消息所需的通信状态。

结构体

nl::Weave::JNILibraryMethod
nl::Weave::WRMPConfig

WRMP 配置。

nl::Weave::WeaveMessageInfo

发送或接收的 Weave 消息的相关信息。

联合体

nl::Weave::WeaveEncryptionKey

命名空间

nl::Weave::ASN1

此命名空间包含 Weave 中用于处理抽象语法表示法 1 (ASN.1) 的所有接口。

nl::Weave::Crypto

此命名空间包含 Weave 中的所有接口,用于共享加密支持。

nl::Weave::DeviceLayer
nl::Weave::DeviceManager
nl::Weave::Encoding

此命名空间提供了用于以下用途的函数:

nl::Weave::Logging

此命名空间包含 Weave 中的所有接口,用于共享日志记录支持。

nl::Weave::Platform
nl::Weave::Profiles

此命名空间包含 Weave for Weave 配置文件中的所有接口,既包括通用接口,也包括 Nest Labs 供应商专用接口。

nl::Weave::SecuritySupport
nl::Weave::Stats
nl::Weave::Support
nl::Weave::System
nl::Weave::TLV

适用于以 Weave TLV 格式编码的数据的定义。

nl::Weave::Warm

此命名空间包含 Weave 地址和路由模块的接口,后者是一个用于配置 Weave IP 地址和路由的可移植模块。

枚举

@21

 @21
属性
kFlagAckPending

发送的消息是否预期响应。

kFlagAutoReleaseConnection

释放 Exchange 上下文后,自动释放邮件加密密钥。

kFlagAutoReleaseKey

设置后,表示至少已收到来自此交换上下文的对等方的消息。

kFlagAutoRequestAck

此上下文与 WeaveConnection 相关联。

kFlagConnectionClosed

此上下文是交换的发起者。

kFlagDropAck

设置后,每当通过 UDP 发送消息时,系统都会自动请求确认。

kFlagMsgRcvdFromPeer

设置后,表示在此交换中至少收到一封邮件请求确认。

应用会读取此标记,以决定是否需要针对即将发送的响应消息请求确认。此标志还可以指示对等方是否正在使用 WRMP。

kFlagPeerRequestedAck

如果设置,则表示有待发回的确认消息。

kFlagResponseExpected

仅限内部和调试:设置后,交换层不会发送确认。

kFlagUseEphemeralUDPPort

释放交换上下文后,自动释放关联的 WeaveConnection

@36

 @36

@37

 @37

@38

 @38
属性
kFabricIdDefaultForTest

默认结构脉络 ID,只能用于测试目的。

@39

 @39

标识证书的用途或应用。

证书类型是描述证书用途或应用的标签。证书类型不会作为相应证书的属性进行承载,而是从证书的结构和/或使用证书的上下文中派生。证书类型枚举包含一组用于描述常用证书应用的预定义值。开发者还可以使用应用专用类型扩展证书类型值范围,从而描述自定义证书或具有独特安全属性的证书。

证书类型主要用于访问权限控制政策的实现,在这种情况下,请求者提供的证书类型会影响对应用功能的访问权限。

属性
kCertType_AccessToken

Weave 访问令牌证书。

kCertType_AppDefinedBase

应用程序专用证书类型的值应大于等于此值。

kCertType_CA

CA 证书。

kCertType_Device

Weave 设备证书。

kCertType_FirmwareSigning

Weave 固件签名证书。

kCertType_General

证书是常规类型或非特定类型。

kCertType_Max

证书类型不得大于此值。

kCertType_NotSpecified

尚未指定证书类型。

kCertType_ServiceEndpoint

Weave 服务端点证书。

@40

 @40

标识基于密码的身份验证协议中使用的密码的来源(例如,

Weave PASE)

@41

 @41
属性
kWeaveAuthModeCategory_AppDefinedBase

应用定义的身份验证类别的基值。

kWeaveAuthModeCategory_CASE

对等方使用 Weave CASE 协议进行身份验证。

kWeaveAuthModeCategory_General

对等方使用一组常规机制中的一种进行身份验证。

kWeaveAuthModeCategory_GroupKey

对等方使用共享群组密钥进行身份验证。

kWeaveAuthModeCategory_PASE

对等方使用 Weave PASE 协议进行身份验证。

kWeaveAuthModeCategory_TAKE

对等方使用 Weave TAKE 协议进行身份验证。

kWeaveAuthMode_CASE_AccessToken

对等方使用 CASE 与 Weave 访问令牌证书进行了身份验证。

kWeaveAuthMode_CASE_AnyCert

对等方使用采用任意证书或未知类型的证书的 CASE 进行了身份验证。

kWeaveAuthMode_CASE_Device

对等方使用 CASE 与 Weave 设备证书进行了身份验证。

kWeaveAuthMode_CASE_GeneralCert

对等方使用 CASE 方式通过常规或非特定证书类型进行身份验证。

kWeaveAuthMode_CASE_ServiceEndPoint

对等方使用 CASE 与 Weave 服务端点证书进行了身份验证。

kWeaveAuthMode_NotSpecified

未指定身份验证模式。

kWeaveAuthMode_PASE_PairingCode

对等方使用 PASE 和设备配对码进行身份验证。

kWeaveAuthMode_TAKE_IdentificationKey

对等方使用 TAKE 与令牌标识密钥进行身份验证。

kWeaveAuthMode_Unauthenticated

对等方未通过身份验证。

@42

 @42
属性
kFabricSecretScope_All

所有设备都可以拥有相应的结构体密钥。

@43

 @43
属性
kTestKey_AES128CTRSHA1_DataKeyByte

构造加密密钥的字节值,仅用于测试。

kTestKey_AES128CTRSHA1_IntegrityKeyByte

构造完整性键的字节值,仅用于测试。

@44

 @44

Weave 消息加密应用密钥多样化器大小。

@45

 @45

@53

 @53

@54 岁

 @54
属性
kWeavePeerDescription_MaxLength

WeaveMessageLayer::GetPeerDescription() 返回的字符串长度上限(包括 NUL 字符)。

@55

 @55

与已编码的 Weave 消息的标头相关的定义。

属性
kWeaveHeaderFlag_DestNodeId

表示目标节点 ID 显示在 Weave 消息标头中。

kWeaveHeaderFlag_MsgCounterSyncReq

表示发件人请求消息计数器同步。

kWeaveHeaderFlag_SourceNodeId

表示来源节点 ID 出现在 Weave 消息标头中。

kWeaveHeaderFlag_TunneledData

表示 Weave 消息载荷是隧道式 IP 数据包。

@56

 @56

IEEE EUI-64 标识符的位字段定义。

属性
kEUI64_IG_Group

表示群组地址 EUI-64 标识符的单个/群组位值。

kEUI64_IG_Individual

表示单个地址 EUI-64 标识符的单个/群组位值。

kEUI64_IG_Mask

EUI-64 标识符中个人/组 (I/G) 位的位掩码。

值 0 表示 ID 是单个地址。值 1 表示 ID 是一个群组地址。

kEUI64_UL_Local

表示本地管理的 EUI-64 标识符的通用/本地位值。

kEUI64_UL_Mask

EUI-64 标识符内通用/本地 (U/L) 位的位掩码。

值为 0 表示此 ID 将受到通用(全局)管理。值为 1 表示 ID 是在本地进行管理。

kEUI64_UL_Unversal

表示通用管理的 EUI-64 标识符的通用/本地位值。

@57

 @57

特殊范围的 Weave 节点 ID。

属性
kMaxAlwaysLocalWeaveNodeId

为方便测试,系统会将小于或等于此值的 Weave 节点标识符视为本地标识符。

WeaveEncryptionType

 WeaveEncryptionType

Weave 邮件的加密类型。

属性
kWeaveEncryptionType_AES128CTRSHA1

消息使用 AES-128-CTR 加密和 HMAC-SHA-1 消息完整性加密。

kWeaveEncryptionType_None

邮件未加密。

WeaveExchangeFlags

 WeaveExchangeFlags

Weave Exchange 标头标记位。

属性
kWeaveExchangeFlag_AckId

在当前消息是对之前收到的消息的确认时进行设置。

kWeaveExchangeFlag_Initiator

设置交换的发起者发送当前消息的时间。

kWeaveExchangeFlag_NeedsAck

在当前消息请求接收者确认时设置。

WeaveExchangeVersion

 WeaveExchangeVersion

Weave Exchange 标头版本。

WeaveMessageFlags

 WeaveMessageFlags

与入站或出站 Weave 邮件相关联的标志。

此处定义的值将在 WeaveMessageInfo.Flags 字段中使用。

属性
kWeaveMessageFlag_DefaultMulticastSourceAddress

表示在发送 IPv6 多播消息时应使用默认的 IPv6 来源地址选择。

kWeaveMessageFlag_DelaySend

表示邮件发送需要延迟。

kWeaveMessageFlag_DestNodeId

表示目标节点 ID 显示在 Weave 消息标头中。

kWeaveMessageFlag_DuplicateMessage

表示消息与之前收到的消息重复。

kWeaveMessageFlag_FromInitiator

表示消息的来源是 Weave 广告交易平台的发起者。

kWeaveMessageFlag_MessageEncoded

表示 Weave 消息已经过编码。

kWeaveMessageFlag_MsgCounterSyncReq

表示发送者请求对等方的消息计数器同步。

kWeaveMessageFlag_MulticastFromLinkLocal

已弃用 kWeaveMessageFlag_DefaultMulticastSourceAddress 的别名。

kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized

表示对等方的群组密钥消息计数器未同步。

kWeaveMessageFlag_PeerRequestedAck

表示消息的发送者请求确认。

kWeaveMessageFlag_RetainBuffer

表示消息在发送后不应释放。

kWeaveMessageFlag_ReuseMessageId

表示必须重复使用现有消息标识符。

kWeaveMessageFlag_ReuseSourceId

表示必须重复使用现有的源节点标识符。

kWeaveMessageFlag_SourceNodeId

表示来源节点 ID 出现在 Weave 消息标头中。

kWeaveMessageFlag_TunneledData

表示 Weave 消息载荷是隧道式 IP 数据包。

kWeaveMessageFlag_ViaEphemeralUDPPort

表示通过本地临时 UDP 端口发送/接收消息。

WeaveMessageVersion

 WeaveMessageVersion

Weave Message 格式的版本。

Weave 将根据 Weave 消息所需的帧格式选择合适的消息版本。默认情况下,消息版本为 kWeaveMessageVersion_V1。例如,使用 Weave Reliable Messaging 时,版本为 kWeaveMessageVersion_V2。

属性
kWeaveMessageVersion_Unspecified

未指定的消息版本。

kWeaveMessageVersion_V1

消息标头格式版本 V1。

kWeaveMessageVersion_V2

消息标头格式版本 V2。

WeaveSubnetId

 WeaveSubnetId

Weave 为典型设备上的区分网络接口提供了一些预留的子网编号。

在这里,这些数字被赋给符号常量。Weave 使用这些子网编号在适当的接口上配置 IPv6 ULA 地址。

属性
kWeaveSubnetId_MobileDevice

所有移动设备的子网标识符。

kWeaveSubnetId_NotSpecified

保留为未指定或 null 值。

kWeaveSubnetId_PrimaryWiFi

Wi-Fi 无线接口子网编号。

kWeaveSubnetId_Service

Nest 服务端点的子网标识符。

kWeaveSubnetId_ThreadAlarm

Thread 警报无线装置接口的子网号。

kWeaveSubnetId_ThreadMesh

Thread 网状网无线接口子网标识符。

kWeaveSubnetId_WiFiAP

本地 Wi-Fi AP 接口的子网号。

WeaveVendorId

 WeaveVendorId

类型定义符

FabricSecretRotationScheme

uint8_t FabricSecretRotationScheme

FabricSecretScope

uint8_t FabricSecretScope

识别可以拥有和使用结构密钥的设备类别。

WeaveAuthMode

uint16_t WeaveAuthMode

标识如何对对等节点进行身份验证。

WeaveAuthMode 描述对等节点在 Weave 消息交换期间已经或应该进行身份验证的方式。在发起上下文中,应用使用 WeaveAuthMode 为交换指定所需的对等身份验证模式,从而指示 Weave 安全和消息传递层实现所需的模式或使通信失败。在做出响应的上下文中,WeaveAuthMode 会识别请求节点(对等方)的身份验证方式,从而允许做出响应的应用根据此信息强制执行访问权限控制。

向传入的 Weave 消息分配的 WeaveAuthMode 与用于加密该消息的密钥的性质相关。WeaveAuthMode 沿用了创建密钥时所用的机制,以及在创建密钥时验证通信方身份所用的标准。

WeaveAuthMode 包含一组用于描述常见身份验证模式的预定义值。这些内容按密钥协议机制(CASE、PASE、GroupKey 等)进行细分。开发者可以通过定义特定于应用的模式来扩展 WeaveAuthMode,他们可以将该模式附加到特定的加密密钥。

WeaveEncryptionKey

union nl::Weave::WeaveEncryptionKey WeaveEncryptionKey

WeaveEncryptionType

enum nl::Weave::WeaveEncryptionType WeaveEncryptionType

Weave 邮件的加密类型。

WeaveExchangeFlags

enum nl::Weave::WeaveExchangeFlags WeaveExchangeFlags

Weave Exchange 标头标记位。

WeaveExchangeVersion

enum nl::Weave::WeaveExchangeVersion WeaveExchangeVersion

Weave Exchange 标头版本。

WeaveMessageFlags

enum nl::Weave::WeaveMessageFlags WeaveMessageFlags

与入站或出站 Weave 邮件相关联的标志。

此处定义的值将在 WeaveMessageInfo.Flags 字段中使用。

WeaveMessageHeader

struct WeaveMessageInfo WeaveMessageHeader

WeaveMessageVersion

enum nl::Weave::WeaveMessageVersion WeaveMessageVersion

Weave Message 格式的版本。

Weave 将根据 Weave 消息所需的帧格式选择合适的消息版本。默认情况下,消息版本为 kWeaveMessageVersion_V1。例如,使用 Weave Reliable Messaging 时,版本为 kWeaveMessageVersion_V2。

WeaveSubnetId

enum nl::Weave::WeaveSubnetId WeaveSubnetId

Weave 为典型设备上的区分网络接口提供了一些预留的子网编号。

在这里,这些数字被赋给符号常量。Weave 使用这些子网编号在适当的接口上配置 IPv6 ULA 地址。

变量

ExchangeMgr

NL_DLL_EXPORT WeaveExchangeManager ExchangeMgr

FabricState

NL_DLL_EXPORT WeaveFabricState FabricState

MessageLayer

NL_DLL_EXPORT WeaveMessageLayer MessageLayer

SecurityMgr

NL_DLL_EXPORT WeaveSecurityManager SecurityMgr

WeaveConnection

class NL_DLL_EXPORT WeaveConnection

WeaveExchangeManager

class NL_DLL_EXPORT WeaveExchangeManager

WeaveMessageLayer

class NL_DLL_EXPORT WeaveMessageLayer

gDefaultWRMPConfig

const WRMPConfig gDefaultWRMPConfig = { WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT,
                                        WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS }

kWeaveMsgEncAppKeyDiversifier

const uint8_t kWeaveMsgEncAppKeyDiversifier[] = { 0xB1, 0x1D, 0xAE, 0x5B }

用于 Weave 消息加密密钥派生的密钥多样化器。

此值表示“Nest Weave Message EK and AK”短语的 SHA-1 HASH 的前 4 个字节。

函数

AppGroupMasterKeyIdFromAuthMode

uint8_t AppGroupMasterKeyIdFromAuthMode(
  WeaveAuthMode authMode
)

返回与身份验证模式关联的应用组主密钥 ID。

CASEAuthMode

WeaveAuthMode CASEAuthMode(
  uint8_t certType
)

返回指定证书类型的对应 CASE 身份验证模式。

CertTypeFromAuthMode

uint8_t CertTypeFromAuthMode(
  WeaveAuthMode authMode
)

返回指定身份验证模式的密码来源。

DecodeHeaderField

void DecodeHeaderField(
  const uint16_t headerField,
  WeaveMessageInfo *msgInfo
)

DefaultOnMessageReceived

void DefaultOnMessageReceived(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

EncodeHeaderField

uint16_t EncodeHeaderField(
  const WeaveMessageInfo *msgInfo
)

FindMessageName

const char * FindMessageName(
  uint32_t inProfileId,
  uint8_t inMsgType
)

FindProfileName

const char * FindProfileName(
  uint32_t inProfileId
)

FormatWeaveError

bool FormatWeaveError(
  char *buf,
  uint16_t bufSize,
  int32_t err
)

如果出现 Weave 错误,则返回直观易懂的以 NULL 结尾的 C 字符串,以描述错误。

具体说明
参数
[in] buf
将在其中放入错误字符串的缓冲区。
[in] bufSize
所提供缓冲区的大小(以字节为单位)。
[in] err
要描述的错误。
返回值
如果说明字符串已写入所提供的缓冲区,则返回 true。
返回值
如果提供的错误不是 Weave 错误,则返回 false。

GenerateWeaveNodeId

NL_DLL_EXPORT WEAVE_ERROR GenerateWeaveNodeId(
  uint64_t & nodeId
)

生成随机 Weave 节点 ID。

此函数生成 64 位本地唯一的 Weave 节点 ID。此函数使用强加密随机数据源,以保证生成值的唯一性。请注意,生成的 Weave 节点 ID 的位 57 设置为 1,以表示生成的 Weave 节点 ID 在本地(非全局)唯一。

具体说明
参数
nodeId
对 64 位 Weave 节点 ID 的引用。
返回值
WEAVE_NO_ERROR
如果 Weave 节点 ID 已成功生成。

GetFibonacciForIndex

uint32_t GetFibonacciForIndex(
  uint32_t index
)

此函数为给定的 32 位索引生成 32 位的斐波那契数。

具体说明
返回值
32 位无符号斐波那契数。

GetMessageName

const char * GetMessageName(
  uint32_t profileId,
  uint8_t msgType
)

GetProfileName

const char * GetProfileName(
  uint32_t profileId
)

GetRandU16

uint16_t GetRandU16(
  void
)

此函数生成 16 位无符号随机数。

具体说明
返回值
16 位无符号随机整数。

GetRandU32

uint32_t GetRandU32(
  void
)

此函数生成 32 位无符号随机数。

具体说明
返回值
32 位无符号随机整数。

GetRandU64

uint64_t GetRandU64(
  void
)

此函数生成 64 位无符号随机数。

具体说明
返回值
64 位无符号随机整数。

GetRandU8

uint8_t GetRandU8(
  void
)

此函数生成 8 位无符号随机数。

具体说明
返回值
8 位无符号随机整数。

GetVendorName

const char * GetVendorName(
  uint16_t vendorId
)

GroupKeyAuthMode

WeaveAuthMode GroupKeyAuthMode(
  uint32_t keyId
)

返回给定密钥 ID 的相应组密钥身份验证模式。

IPv6InterfaceIdToWeaveNodeId

uint64_t IPv6InterfaceIdToWeaveNodeId(
  uint64_t interfaceId
)

将 IPv6 地址接口标识符转换为 Weave 节点标识符。

为方便测试,系统会将小于或等于 #kMaxAlwaysLocalWeaveNodeId (65535) 的节点标识符视为“本地标识符”,并将它们的通用/本地位设置为零。这简化了对应 IPv6 地址的字符串表示法。例如,节点标识符 10 的 ULA 为 FD00:0:1:1::A。

具体说明
参数
[in] interfaceId
64 位接口标识符。
返回值
映射的 64 位 Weave 节点标识符。

IsCASEAuthMode

bool IsCASEAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于 Weave CASE 协议,则为 true。

IsCertAuthMode

bool IsCertAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于拥有与证书关联的私钥,则为 true。

IsGroupKeyAuthMode

bool IsGroupKeyAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于拥有共享群组密钥,则为 true。

IsPASEAuthMode

bool IsPASEAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于 Weave PASE 协议,则为 true。

IsPasswordAuthMode

bool IsPasswordAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于拥有共享密码,则为 true。

IsTAKEAuthMode

bool IsTAKEAuthMode(
  WeaveAuthMode authMode
)

如果身份验证模式基于 Weave TAKE 协议,则为 true。

IsWRMPControlMessage

bool IsWRMPControlMessage(
  uint32_t profileId,
  uint8_t msgType
)

J2N_ByteArray

WEAVE_ERROR J2N_ByteArray(
  JNIEnv *env,
  jbyteArray inArray,
  uint8_t *& outArray,
  uint32_t & outArrayLen
)

J2N_ByteArrayFieldVal

WEAVE_ERROR J2N_ByteArrayFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  uint8_t *& outArray,
  uint32_t & outArrayLen
)

J2N_ByteArrayInPlace

WEAVE_ERROR J2N_ByteArrayInPlace(
  JNIEnv *env,
  jbyteArray inArray,
  uint8_t *outArray,
  uint32_t maxArrayLen
)

J2N_EnumFieldVal

WEAVE_ERROR J2N_EnumFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  const char *fieldType,
  int & outVal
)

J2N_EnumVal

WEAVE_ERROR J2N_EnumVal(
  JNIEnv *env,
  jobject enumObj,
  int & outVal
)

J2N_IntFieldVal

WEAVE_ERROR J2N_IntFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jint & outVal
)

J2N_LongFieldVal

WEAVE_ERROR J2N_LongFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jlong & outVal
)

J2N_ShortFieldVal

WEAVE_ERROR J2N_ShortFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  jshort & outVal
)

J2N_StringFieldVal

WEAVE_ERROR J2N_StringFieldVal(
  JNIEnv *env,
  jobject obj,
  const char *fieldName,
  char *& outVal
)

MakeClassName

WEAVE_ERROR MakeClassName(
  const char *basePackageName,
  const char *relativeClassName,
  char *& classNameBuf
)

PASEAuthMode

WeaveAuthMode PASEAuthMode(
  uint8_t pwSource
)

返回指定密码来源的相应 PASE 身份验证模式。

PasswordSourceFromAuthMode

uint8_t PasswordSourceFromAuthMode(
  WeaveAuthMode authMode
)

返回指定身份验证模式的密码来源。

PrintTunnelInfo

void PrintTunnelInfo(
  const WeaveConnectionTunnel & tun,
  const TCPEndPoint & fromEndPoint,
  const TCPEndPoint & toEndPoint,
  const PacketBuffer & data
)

ToHex

char ToHex(
  const uint8_t data
)

ToHexString

void ToHexString(
  const uint8_t *data,
  size_t dataLen,
  char *& outBuf,
  size_t & outBufSize
)

WeaveEncryptionKeyToString

void WeaveEncryptionKeyToString(
  uint8_t encType,
  const WeaveEncryptionKey & key,
  char *buf,
  size_t bufSize
)

WeaveFabricId 到 IPv6GlobalId

uint64_t WeaveFabricIdToIPv6GlobalId(
  uint64_t fabricId
)

将 Weave 结构标识符转换为 IPv6 ULA 全局标识符。

结构脉络地址的 ULA 全局标识符是结构 64 位结构 ID 的低 40 位。

具体说明
参数
[in] fabricId
Weave 面料标识符。
返回值
映射的 IPv6 全局标识符。

WeaveMessageSourceToStr

void WeaveMessageSourceToStr(
  char *buf,
  uint32_t bufSize,
  const WeaveMessageInfo *msgInfo
)

已弃用,请改用 WeaveMessageLayer::GetPeerDescription()

WeaveNodeAddrToStr

void WeaveNodeAddrToStr(
  char *buf,
  uint32_t bufSize,
  uint64_t nodeId,
  const IPAddress *addr,
  uint16_t port,
  WeaveConnection *con
)

已弃用,请改用 WeaveMessageLayer::GetPeerDescription()

WeaveNodeIdToIPv6InterfaceId

uint64_t WeaveNodeIdToIPv6InterfaceId(
  uint64_t nodeId
)

将 Weave 节点标识符转换为 IPv6 地址接口标识符。

Weave 节点标识符是通用/本地 EUI-64,根据 RFC-3513,系统会通过反转通用/本地位(位 57,将 LSB 视为 0)将其转换为接口标识符。

为方便测试,系统会将小于或等于 #kMaxAlwaysLocalWeaveNodeId (65535) 的节点标识符视为“本地标识符”,并将它们的通用/本地位设置为零。这简化了对应 IPv6 地址的字符串表示法。例如,节点标识符 10 的 ULA 为 FD00:0:1:1::A。

具体说明
参数
[in] nodeId
64 位 Weave 节点标识符。
返回值
IPv6 接口标识符。

最大值

const _T & max(
  const _T & a,
  const _T & b
)

分钟

const _T & min(
  const _T & a,
  const _T & b
)