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 ID 的位元欄位定義。
@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 列舉

Typedefs

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 有部分保留的子網路號碼,用於一般裝置上的專用網路介面。

Variables

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 位元的 Fibonacci 號碼。
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 位址介面 ID 轉換為 Weave 節點 ID。
IsCASEAuthMode(WeaveAuthMode authMode)
bool
如果驗證模式採用 Weave CASE 通訊協定,則為 True。
IsCertAuthMode(WeaveAuthMode authMode)
bool
如果驗證模式是根據與憑證相關聯的私密金鑰所擁有,則為「是」。
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 架構 ID 轉換為 IPv6 ULA 全域 ID。
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 節點 ID 轉換為 IPv6 位址介面 ID。
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 相關聯的精簡且採用二進位編碼的主機和通訊埠 ID 組合。

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

以整數值管理單調遞增計數器的類別。

nl::Weave::PersistedCounter

一個類別,用於將計數器管理為整數值,以便在重新啟動後保持不變。

nl::Weave::WeaveConnection

Weave Connection 類別的定義。

nl::Weave::WeaveConnectionTunnel

WeaveConnectionTunnel 類別的定義,這個類別可管理一對原始 WeaveConnections 已連線的 TCPEndPoints,以及 WeaveMessageLayer 會轉送所有資料和連線關閉之間的 TCPEndPoint。

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

用來指定 ExchangeContext 中特定 Weave 訊息的 Weave 設定檔和郵件類型。

nl::Weave::WeaveExchangeManager

這個類別可用於管理與其他 Weave 節點的 ExchangeContexts。

nl::Weave::WeaveFabricState

WeaveFabricState 的轉寄宣告。

nl::Weave::WeaveKeyId

Weave 金鑰 ID 的定義。

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 內所有可使用 Abstract Syntax Notation One (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 設定檔的所有介面,包括 Common 和 Nest Labs 供應商的專屬介面。

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

處理以 Weave TLV 格式編碼的資料的定義。

nl::Weave::Warm

此命名空間包含 Weave Address 和路由模組的介面,這是一種可設定 Weave IP 位址和路徑的可攜式模組。

列舉

@21

 @21
屬性
kFlagAckPending

預期在傳送中的訊息應得到回覆。

kFlagAutoReleaseConnection

交換內容被釋出時,自動釋出訊息加密金鑰。

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

用於識別密碼式驗證通訊協定 (例如

編織紋)

@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

表示 Weave 訊息標頭中含有目的地節點 ID。

kWeaveHeaderFlag_MsgCounterSyncReq

表示寄件者要求郵件計數器同步處理。

kWeaveHeaderFlag_SourceNodeId

表示來源節點 ID 出現在 Weave 郵件標頭中。

kWeaveHeaderFlag_TunneledData

表示 Weave 訊息酬載是通道 IP 封包。

@56

 @56

IEEE EUI-64 ID 的位元欄位定義。

屬性
kEUI64_IG_Group

代表群組地址 EUI-64 識別碼的個別/群組位元值。

kEUI64_IG_Individual

代表個別地址 EUI-64 識別碼的個別/群組位元值。

kEUI64_IG_Mask

EUI-64 ID 中的個人/群組 (I/G) 位元位元遮罩。

如果值為 0,表示 ID 是個別地址。如果值為 1,表示 ID 是群組地址。

kEUI64_UL_Local

通用/本機位元值,表示本機管理的 EUI-64 ID。

kEUI64_UL_Mask

EUI-64 ID 中的通用/本機 (U/L) 位元位元遮罩。

如果值為 0,表示 ID 是通用 (全球) 管理。如果值為 1,表示 ID 是由本機管理。

kEUI64_UL_Unversal

通用/本機位元值,表示通用管理的 EUI-64 ID。

@57

 @57

Weave 節點 ID 的特殊範圍。

屬性
kMaxAlwaysLocalWeaveNodeId

為了方便測試,我們會將小於或等於此值的 Weave 節點 ID 視為本機。

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

表示 Weave 訊息標頭中含有目的地節點 ID。

kWeaveMessageFlag_DuplicateMessage

表示郵件與先前收到的郵件重複。

kWeaveMessageFlag_FromInitiator

表示郵件來源是 Weave 交換服務的發起人。

kWeaveMessageFlag_MessageEncoded

表示 Weave 訊息已編碼。

kWeaveMessageFlag_MsgCounterSyncReq

表示寄件者會要求對等方的郵件計數器同步處理作業。

kWeaveMessageFlag_MulticastFromLinkLocal

kWeaveMessageFlag_DefaultMulticastSourceAddress 的別名已淘汰,

kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized

表示系統不會同步處理對等點的群組金鑰訊息計數器。

kWeaveMessageFlag_PeerRequestedAck

表示訊息寄件者要求確認。

kWeaveMessageFlag_RetainBuffer

表示在傳送後不應釋出訊息緩衝區。

kWeaveMessageFlag_ReuseMessageId

表示必須重複使用現有的訊息 ID。

kWeaveMessageFlag_ReuseSourceId

表示必須重複使用現有的來源節點 ID。

kWeaveMessageFlag_SourceNodeId

表示來源節點 ID 出現在 Weave 郵件標頭中。

kWeaveMessageFlag_TunneledData

表示 Weave 訊息酬載是通道 IP 封包。

kWeaveMessageFlag_ViaEphemeralUDPPort

表示訊息正透過本機臨時 UDP 通訊埠傳送/接收。

WeaveMessageVersion

 WeaveMessageVersion

Weave Message 格式的版本。

Weave 會根據 Weave 訊息所需的頁框格式,選擇適當的訊息版本。根據預設,訊息版本為 kWeaveMessageVersion_V1。使用 Weave 可靠訊息時,例如 kWeaveMessageVersion_V2。

屬性
kWeaveMessageVersion_Unspecified

未指定的訊息版本。

kWeaveMessageVersion_V1

郵件標頭格式 V1。

kWeaveMessageVersion_V2

郵件標頭格式 V2。

WeaveSubnetId

 WeaveSubnetId

Weave 有部分保留的子網路號碼,用於一般裝置上的專用網路介面。

這些數字會指派給符號常數。Weave 會透過這些子網路編號,在適當的介面上設定 IPv6 ULA 位址。

屬性
kWeaveSubnetId_MobileDevice

所有行動裝置的子網路 ID。

kWeaveSubnetId_NotSpecified

保留為未指定或空值。

kWeaveSubnetId_PrimaryWiFi

Wi-Fi 無線電介面子網路號碼。

kWeaveSubnetId_Service

Nest Service 端點的子網路 ID。

kWeaveSubnetId_ThreadAlarm

Thread 鬧鐘廣播介面子網路編號。

kWeaveSubnetId_ThreadMesh

Thread 網格無線電介面子網路 ID。

kWeaveSubnetId_WiFiAP

本機 Wi-Fi AP 介面子網路號碼。

WeaveVendorId

 WeaveVendorId

Typedefs

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 可靠訊息時,例如 kWeaveMessageVersion_V2。

WeaveSubnetId

enum nl::Weave::WeaveSubnetId WeaveSubnetId

Weave 有部分保留的子網路號碼,用於一般裝置上的專用網路介面。

這些數字會指派給符號常數。Weave 會透過這些子網路編號,在適當的介面上設定 IPv6 ULA 位址。

Variables

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 位元的 Fibonacci 號碼。

詳細說明
傳回
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 位址介面 ID 轉換為 Weave 節點 ID。

為方便測試,系統會將小於或等於 #kMaxAlwaysWeaveNodeId (65535) 的節點 ID 視為「本機」,並將通用/本機位元設為零。這樣可以簡化對應 IPv6 位址的字串表示法。例如,節點 ID 10 的 ULA 會是 FD00:0:1:1::A。

詳細說明
參數
[in] interfaceId
64 位元介面 ID。
傳回
對應的 64 位元 Weave 節點 ID

IsCASEAuthMode

bool IsCASEAuthMode(
  WeaveAuthMode authMode
)

如果驗證模式採用 Weave CASE 通訊協定,則為 True。

IsCertAuthMode

bool IsCertAuthMode(
  WeaveAuthMode authMode
)

如果驗證模式是根據與憑證相關聯的私密金鑰所擁有,則為「是」。

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
)

WeaveFabricIdToIPv6GlobalId

uint64_t WeaveFabricIdToIPv6GlobalId(
  uint64_t fabricId
)

將 Weave 架構 ID 轉換為 IPv6 ULA 全域 ID。

織布地址的 ULA 全域 ID 是織布 64 位元織布 ID 的下限 40 位元。

詳細說明
參數
[in] fabricId
Weave 織物 ID。
傳回
對應的 IPv6 全域 ID

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 節點 ID 轉換為 IPv6 位址介面 ID。

Weave 節點 ID 是 Universal/Local EUI-64s,依 RFC-3513 反轉通用/本機位元 (位元 57 將 LSB 計算為 0) 來轉換為介面 ID。

為方便測試,系統會將小於或等於 #kMaxAlwaysWeaveNodeId (65535) 的節點 ID 視為「本機」,並將通用/本機位元設為零。這樣可以簡化對應 IPv6 位址的字串表示法。例如,節點 ID 10 的 ULA 會是 FD00:0:1:1::A。

詳細說明
參數
[in] nodeId
64 位元 Weave 節點 ID。
傳回
IPv6 介面 ID。

最高

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

分鐘

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