nl::Weave

Riepilogo

Enumerazioni

@21{
  kFlagConnectionClosed = 0x0002,
  kFlagAutoRequestAck = 0x0004,
  kFlagDropAck = 0x0008,
  kFlagResponseExpected = 0x0010,
  kFlagAckPending = 0x0020,
  kFlagPeerRequestedAck = 0x0040,
  kFlagMsgRcvdFromPeer = 0x0080,
  kFlagAutoReleaseKey = 0x0100,
  kFlagAutoReleaseConnection = 0x0200,
  kFlagUseEphemeralUDPPort = 0x0400
}
enum
@36 enum
@37 enum
@38{
  kFabricIdDefaultForTest = 1ULL
}
enum
@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
}
enum
Identifica lo scopo o l'applicazione del certificato.
@40 enum
Identifica l'origine della password utilizzata in un protocollo di autenticazione basato su password (ad es.
@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
}
enum
@42{
  kFabricSecretScope_All = 0x00
}
enum
@43{
  kTestKey_AES128CTRSHA1_DataKeyByte = 0xAB,
  kTestKey_AES128CTRSHA1_IntegrityKeyByte = 0xBA
}
enum
@44 enum
Dimensione diversificatore della chiave dell'applicazione per la crittografia dei messaggi Weave.
@45 enum
@53 enum
@54{
  kWeavePeerDescription_MaxLength = 100
}
enum
@55{
  kWeaveHeaderFlag_DestNodeId = 0x0100,
  kWeaveHeaderFlag_SourceNodeId = 0x0200,
  kWeaveHeaderFlag_TunneledData = 0x0400,
  kWeaveHeaderFlag_MsgCounterSyncReq = 0x0800
}
enum
Definizioni relative all'intestazione di un messaggio Weave codificato.
@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
}
enum
Definizioni dei campi di bit per gli identificatori EUI-64 IEEE.
@57{
  kMaxAlwaysLocalWeaveNodeId = 0x000000000000FFFFULL
}
enum
Intervalli speciali di ID nodi Weave.
WeaveEncryptionType{
  kWeaveEncryptionType_None = 0,
  kWeaveEncryptionType_AES128CTRSHA1 = 1
}
enum
I tipi di crittografia per il messaggio Weave.
WeaveExchangeFlags{
  kWeaveExchangeFlag_Initiator = 0x1,
  kWeaveExchangeFlag_AckId = 0x2,
  kWeaveExchangeFlag_NeedsAck = 0x4
}
enum
I bit dei flag dell'intestazione Weave Exchange.
WeaveExchangeVersion enum
La versione dell'intestazione 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
}
enum
Flag associati a un messaggio Weave in entrata o in uscita.
WeaveMessageVersion{
  kWeaveMessageVersion_Unspecified = 0,
  kWeaveMessageVersion_V1 = 1,
  kWeaveMessageVersion_V2 = 2
}
enum
La versione del formato del messaggio Weave.
WeaveSubnetId{
  kWeaveSubnetId_NotSpecified = 0,
  kWeaveSubnetId_PrimaryWiFi = 1,
  kWeaveSubnetId_ThreadAlarm = 2,
  kWeaveSubnetId_WiFiAP = 3,
  kWeaveSubnetId_MobileDevice = 4,
  kWeaveSubnetId_Service = 5,
  kWeaveSubnetId_ThreadMesh = 6
}
enum
Weave ha alcuni numeri di subnet riservati per interfacce di rete distinte sui dispositivi tipici.
WeaveVendorId enum

Typedef

FabricSecretRotationScheme typedef
uint8_t
FabricSecretScope nl::Weave::FabricSecretScope
uint8_t
Identifica la categoria di dispositivi che possono possedere e utilizzare il fabric secret.
WeaveAuthMode typedef
uint16_t
Identifica come viene autenticato un nodo peer.
WeaveEncryptionKey typedef
WeaveEncryptionType typedef
enum nl::Weave::WeaveEncryptionType
I tipi di crittografia per il messaggio Weave.
WeaveExchangeFlags typedef
enum nl::Weave::WeaveExchangeFlags
I bit dei flag dell'intestazione Weave Exchange.
WeaveExchangeVersion typedef
enum nl::Weave::WeaveExchangeVersion
La versione dell'intestazione Weave Exchange.
WeaveMessageFlags typedef
enum nl::Weave::WeaveMessageFlags
Flag associati a un messaggio Weave in entrata o in uscita.
WeaveMessageHeader typedef
WeaveMessageVersion typedef
enum nl::Weave::WeaveMessageVersion
La versione del formato del messaggio Weave.
WeaveSubnetId typedef
enum nl::Weave::WeaveSubnetId
Weave ha alcuni numeri di subnet riservati per interfacce di rete distinte sui dispositivi tipici.

Variabili

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
Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia dei messaggi Weave.

Funzioni

AppGroupMasterKeyIdFromAuthMode(WeaveAuthMode authMode)
uint8_t
Restituisce l'ID della chiave principale del gruppo di applicazioni associato alla modalità di autenticazione.
CASEAuthMode(uint8_t certType)
WeaveAuthMode
Restituisce una modalità di autenticazione CASE corrispondente per un determinato tipo di certificato.
CertTypeFromAuthMode(WeaveAuthMode authMode)
uint8_t
Restituisce l'origine della password per la modalità di autenticazione specificata.
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
Dato un errore Weave, restituisce una stringa C con terminazione NULL leggibile che descrive l'errore.
GenerateWeaveNodeId(uint64_t & nodeId)
NL_DLL_EXPORT WEAVE_ERROR
Genera l'ID del nodo Weave casuale.
GetFibonacciForIndex(uint32_t index)
uint32_t
Questa funzione genera un numero di Fibonacci a 32 bit per un determinato indice di 32 bit.
GetMessageName(uint32_t profileId, uint8_t msgType)
const char *
GetProfileName(uint32_t profileId)
const char *
GetRandU16(void)
uint16_t
Questa funzione genera un numero casuale senza segno a 16 bit.
GetRandU32(void)
uint32_t
Questa funzione genera un numero casuale senza segno a 32 bit.
GetRandU64(void)
uint64_t
Questa funzione genera un numero casuale senza segno a 64 bit.
GetRandU8(void)
uint8_t
Questa funzione genera un numero casuale senza segno a 8 bit.
GetVendorName(uint16_t vendorId)
const char *
GroupKeyAuthMode(uint32_t keyId)
WeaveAuthMode
Restituisce la modalità di autenticazione della chiave di gruppo corrispondente per un determinato ID chiave.
IPv6InterfaceIdToWeaveNodeId(uint64_t interfaceId)
uint64_t
Converti un identificatore dell'interfaccia dell'indirizzo IPv6 in un identificatore del nodo Weave.
IsCASEAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul protocollo Weave CASE.
IsCertAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul possesso di una chiave privata associata a un certificato.
IsGroupKeyAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul possesso di una chiave di gruppo condivisa.
IsPASEAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul protocollo Weave PASE.
IsPasswordAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul possesso di una password condivisa.
IsTAKEAuthMode(WeaveAuthMode authMode)
bool
True se la modalità di autenticazione si basa sul protocollo Weave Take.
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
Restituisce una modalità di autenticazione PASE corrispondente per una determinata origine della password.
PasswordSourceFromAuthMode(WeaveAuthMode authMode)
uint8_t
Restituisce l'origine della password per la modalità di autenticazione specificata.
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
Converti un identificatore di fabric Weave in un identificatore globale ULA IPv6.
WeaveMessageSourceToStr(char *buf, uint32_t bufSize, const WeaveMessageInfo *msgInfo)
void
OBSOLETO Utilizza invece WeaveMessageLayer::GetPeerDescription().
WeaveNodeAddrToStr(char *buf, uint32_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, WeaveConnection *con)
void
OBSOLETO Utilizza invece WeaveMessageLayer::GetPeerDescription().
WeaveNodeIdToIPv6InterfaceId(uint64_t nodeId)
uint64_t
Converti un identificatore del nodo Weave in un identificatore di interfaccia dell'indirizzo IPv6.
max(const _T & a, const _T & b)
const _T &
min(const _T & a, const _T & b)
const _T &

Corsi

nl::Weave::Binding

Acquisisce il target previsto di una comunicazione Weave e le informazioni di configurazione associate.

nl::Weave::Counter

Interfaccia per la gestione di un contatore come valore intero.

nl::Weave::ExchangeContext

Questa classe rappresenta una conversazione in corso (ExchangeContext) tra due o più nodi.

nl::Weave::FabricStateDelegate

Questa classe delegata astratta comunica i cambiamenti di stato del fabric.

nl::Weave::HostPortList

Per gestire e manipolare un elenco di porte host, una raccolta compatta con codifica binaria di tuple di identificatori di host e porte associate a Weave Service Directory.

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

Una classe per la gestione di un contatore con aumento monotonico come valore intero.

nl::Weave::PersistedCounter

Una classe per la gestione di un contatore come valore intero che deve rimanere persistente tra i riavvii.

nl::Weave::WeaveConnection

La definizione della classe di connessione Weave.

nl::Weave::WeaveConnectionTunnel

La definizione della classe WeaveConnectionTunnel, che gestisce una coppia di TCPEndPoints le cui WeaveConnection originali sono state accoppiate e tra i quali WeaveMessageLayer inoltra tutti i dati e le chiusure delle connessioni.

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

Consente di specificare il profilo e il tipo di messaggio Weave di un determinato messaggio Weave all'interno di ExchangeContext.

nl::Weave::WeaveExchangeManager

Questa classe viene utilizzata per gestire ExchangeContext con altri nodi Weave.

nl::Weave::WeaveFabricState

Dichiarazione di WeaveFabricState.

nl::Weave::WeaveKeyId

La definizione dell'identificatore della chiave Weave.

nl::Weave::WeaveMessageLayer

La definizione della classe WeaveMessageLayer, che gestisce la comunicazione con gli altri nodi Weave.

nl::Weave::WeaveMsgEncryptionKey

Contiene informazioni sulla chiave di crittografia dei messaggi Weave.

nl::Weave::WeaveMsgEncryptionKeyCache

Cache delle chiavi per le chiavi di crittografia dei messaggi Weave.

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

Oggetto comune di base per l'implementazione di risponditori non richiesti (server) del profilo Weave che incapsula la convalida di richieste autenticate e l'invio di report sullo stato, oltre a fornire spazio di archiviazione comune dei membri dei dati per lo stato della fabric e di un gestore di Exchange.

nl::Weave::WeaveServerDelegateBase

Una classe di base comune per l'implementazione di oggetti delegati del server Weave.

nl::Weave::WeaveSessionKey

Contiene informazioni su una chiave di sessione Weave.

nl::Weave::WeaveSessionState

Trasmette lo stato di comunicazione necessario per inviare/ricevere messaggi con un altro nodo.

Strutture

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

La configurazione WRMP.

nl::Weave::WeaveMessageInfo

Informazioni su un messaggio Weave in fase di invio o ricezione.

Unione

nl::Weave::WeaveEncryptionKey

Spazi dei nomi

nl::Weave::ASN1

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per lavorare con Abstract Syntax Notation One (ASN.1).

nl::Weave::Crypto

Questo spazio dei nomi include tutte le interfacce di Weave per il supporto crittografico condiviso.

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

Questo spazio dei nomi fornisce funzioni per:

nl::Weave::Logging

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il supporto del logging condiviso.

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

Questo spazio dei nomi include tutte le interfacce all'interno dei profili Weave per Weave, sia Common che di Nest Labs specifici.

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

Definizioni per l'utilizzo di dati codificati in formato Weave TLV.

nl::Weave::Warm

Questo spazio dei nomi include le interfacce per il modulo di indirizzo e routing Weave, un modulo portatile per la configurazione di route e indirizzi IP Weave.

Enumerazioni

@21

 @21
Proprietà
kFlagAckPending

Se è prevista una risposta per un messaggio inviato.

kFlagAutoReleaseConnection

Rilascia automaticamente la chiave di crittografia del messaggio quando il contesto di Exchange viene liberato.

kFlagAutoReleaseKey

Se impostato, indica che è stato ricevuto almeno un messaggio dal peer in questo contesto di scambio.

kFlagAutoRequestAck

Questo contesto è stato associato a una WeaveConnection.

kFlagConnectionClosed

Questo contesto è l'elemento che ha dato inizio allo scambio.

kFlagDropAck

Se impostato, questa opzione richiede automaticamente una conferma ogni volta che un messaggio viene inviato tramite UDP.

kFlagMsgRcvdFromPeer

Se impostato, significa che almeno un messaggio ricevuto su questa piattaforma di scambio ha richiesto una conferma.

Questo flag viene letto dall'applicazione per decidere se deve richiedere una conferma del messaggio di risposta che sta per inviare. Questo flag può anche indicare se il peer utilizza WRMP.

kFlagPeerRequestedAck

Se impostato, significa che è presente una conferma in attesa di essere rinviata.

kFlagResponseExpected

Solo per uso interno e debug: se impostato, il livello di scambio non invia una conferma.

kFlagUseEphemeralUDPPort

Rilascia automaticamente la WeaveConnection associata quando il contesto della piattaforma di scambio viene liberato.

@36

 @36

@37

 @37

@38

 @38
Proprietà
kFabricIdDefaultForTest

ID fabric predefinito, che deve essere utilizzato solo a scopo di test.

@39

 @39

Identifica lo scopo o l'applicazione del certificato.

Un tipo di certificato è un'etichetta che descrive lo scopo o l'applicazione di un certificato. I tipi di certificati non sono riportati come attributi dei certificati corrispondenti, ma derivano dalla struttura del certificato e/o dal contesto in cui viene utilizzato. L'enumerazione del tipo di certificato include un insieme di valori predefiniti che descrivono le applicazioni di certificato di uso comune. Gli sviluppatori possono anche estendere l'intervallo di valori del tipo di certificato con tipi specifici dell'applicazione, che descrivono certificati personalizzati o certificati con proprietà di sicurezza univoche.

I tipi di certificati vengono utilizzati principalmente nell'implementazione dei criteri di controllo dell'accesso, in cui l'accesso alle funzionalità dell'applicazione è influenzato dal tipo di certificato presentato dal richiedente.

Proprietà
kCertType_AccessToken

Un certificato del token di accesso Weave.

kCertType_AppDefinedBase

I tipi di certificato specifici dell'applicazione devono avere valori >= questo valore.

kCertType_CA

Un certificato CA.

kCertType_Device

Un certificato del dispositivo Weave.

kCertType_FirmwareSigning

Un certificato di firma del firmware Weave.

kCertType_General

Il certificato è di tipo generale o non specifico.

kCertType_Max

I tipi di certificato non devono essere maggiori di questo valore.

kCertType_NotSpecified

Il tipo di certificato non è stato specificato.

kCertType_ServiceEndpoint

Un certificato dell'endpoint di servizio Weave.

@40

 @40

Identifica l'origine della password utilizzata in un protocollo di autenticazione basato su password (ad es.

PASE Weave)

@41

 @41
Proprietà
kWeaveAuthModeCategory_AppDefinedBase

Valore di base per le categorie di autenticazione definite dall'applicazione.

kWeaveAuthModeCategory_CASE

Peer autenticato utilizzando il protocollo Weave CASE.

kWeaveAuthModeCategory_General

Peer si è autenticato utilizzando uno di un insieme di meccanismi generali.

kWeaveAuthModeCategory_GroupKey

Peer autenticato utilizzando una chiave di gruppo condivisa.

kWeaveAuthModeCategory_PASE

Peer autenticato utilizzando il protocollo Weave PASE.

kWeaveAuthModeCategory_TAKE

Peer autenticato utilizzando il protocollo Weave Take.

kWeaveAuthMode_CASE_AccessToken

Il peer è stato autenticato utilizzando CASE con il certificato del token di accesso Weave.

kWeaveAuthMode_CASE_AnyCert

Peer autenticato utilizzando CASE con certificato arbitrario o certificato di tipo sconosciuto.

kWeaveAuthMode_CASE_Device

Peer autenticato utilizzando CASE con il certificato del dispositivo Weave.

kWeaveAuthMode_CASE_GeneralCert

Peer autenticato utilizzando CASE con un tipo di certificato generale o non specifico.

kWeaveAuthMode_CASE_ServiceEndPoint

Peer autenticato utilizzando CASE con il certificato dell'endpoint di servizio Weave.

kWeaveAuthMode_NotSpecified

Modalità di autenticazione non specificata.

kWeaveAuthMode_PASE_PairingCode

Peer autenticato tramite PASE con codice di accoppiamento dispositivo.

kWeaveAuthMode_TAKE_IdentificationKey

Peer autenticato utilizzando Take con una chiave di identificazione token.

kWeaveAuthMode_Unauthenticated

Peer non autenticato.

@42

 @42
Proprietà
kFabricSecretScope_All

Tutti i dispositivi possono disporre di un fabric secret corrispondente.

@43

 @43
Proprietà
kTestKey_AES128CTRSHA1_DataKeyByte

Valore byte che crea la chiave di crittografia e viene utilizzata solo per i test.

kTestKey_AES128CTRSHA1_IntegrityKeyByte

Valore byte che crea la chiave di integrità, utilizzata solo per i test.

@44

 @44

Dimensione diversificatore della chiave dell'applicazione per la crittografia dei messaggi Weave.

@45

 @45

@53

 @53

@54

 @54
Proprietà
kWeavePeerDescription_MaxLength

Lunghezza massima della stringa (incluso il carattere NUL) restituita da WeaveMessageLayer::GetPeerDescription().

@55

 @55

Definizioni relative all'intestazione di un messaggio Weave codificato.

Proprietà
kWeaveHeaderFlag_DestNodeId

Indica che l'ID nodo di destinazione è presente nell'intestazione del messaggio Weave.

kWeaveHeaderFlag_MsgCounterSyncReq

Indica che il mittente richiede la sincronizzazione del contatore dei messaggi.

kWeaveHeaderFlag_SourceNodeId

Indica che l'ID nodo di origine è presente nell'intestazione del messaggio Weave.

kWeaveHeaderFlag_TunneledData

Indica che il payload dei messaggi Weave è un pacchetto IP con tunnel.

@56

 @56

Definizioni dei campi di bit per gli identificatori EUI-64 IEEE.

Proprietà
kEUI64_IG_Group

Valore di bit di un singolo/gruppo che indica l'identificatore EUI-64 di un indirizzo di gruppo.

kEUI64_IG_Individual

Valore di bit di un singolo indirizzo/gruppo che indica un identificatore EUI-64 di un singolo indirizzo.

kEUI64_IG_Mask

Maschera di bit per il bit individuale/gruppo (I/G) all'interno di un identificatore EUI-64.

Il valore 0 indica che l'ID è un indirizzo singolo. Il valore 1 indica che l'ID è un indirizzo di gruppo.

kEUI64_UL_Local

Valore in bit universale/locale che indica un identificatore EUI-64 amministrato localmente.

kEUI64_UL_Mask

Maschera di bit per il bit Universal/Local (U/L) all'interno di un identificatore EUI-64.

Il valore 0 indica che l'ID è amministrato universalmente (a livello globale). Il valore 1 indica che l'ID è amministrato localmente.

kEUI64_UL_Unversal

Valore di bit universale/locale che indica un identificatore EUI-64 amministrato universalmente.

@57

 @57

Intervalli speciali di ID nodi Weave.

Proprietà
kMaxAlwaysLocalWeaveNodeId

Gli identificatori dei nodi Weave minori o uguali a questo valore sono considerati locali per comodità di test.

WeaveEncryptionType

 WeaveEncryptionType

I tipi di crittografia per il messaggio Weave.

Proprietà
kWeaveEncryptionType_AES128CTRSHA1

Messaggio criptato utilizzando la crittografia AES-128-CTR con integrità del messaggio HMAC-SHA-1.

kWeaveEncryptionType_None

Messaggio non criptato.

WeaveExchangeFlags

 WeaveExchangeFlags

I bit dei flag dell'intestazione Weave Exchange.

Proprietà
kWeaveExchangeFlag_AckId

Imposta quando il messaggio corrente è una conferma di un messaggio ricevuto in precedenza.

kWeaveExchangeFlag_Initiator

Imposta quando il messaggio corrente viene inviato da chi ha avviato uno scambio.

kWeaveExchangeFlag_NeedsAck

Da impostare quando il messaggio corrente richiede una conferma al destinatario.

WeaveExchangeVersion

 WeaveExchangeVersion

La versione dell'intestazione Weave Exchange.

WeaveMessageFlags

 WeaveMessageFlags

Flag associati a un messaggio Weave in entrata o in uscita.

I valori definiti qui vengono utilizzati all'interno del campo WeaveMessageInfo.Flags.

Proprietà
kWeaveMessageFlag_DefaultMulticastSourceAddress

Indica che la selezione dell'indirizzo di origine IPv6 predefinito deve essere utilizzata per l'invio di messaggi multicast IPv6.

kWeaveMessageFlag_DelaySend

Indica che l'invio del messaggio deve essere ritardato.

kWeaveMessageFlag_DestNodeId

Indica che l'ID nodo di destinazione è presente nell'intestazione del messaggio Weave.

kWeaveMessageFlag_DuplicateMessage

Indica che il messaggio è un duplicato di un messaggio ricevuto in precedenza.

kWeaveMessageFlag_FromInitiator

Indica che l'origine del messaggio è l'utente che ha avviato lo scambio Weave.

kWeaveMessageFlag_MessageEncoded

Indica che il messaggio Weave è già codificato.

kWeaveMessageFlag_MsgCounterSyncReq

Indica che il mittente richiede la sincronizzazione del contatore dei messaggi del peer.

kWeaveMessageFlag_MulticastFromLinkLocal

Alias deprecato per kWeaveMessageFlag_DefaultMulticastSourceAddress.

kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized

Indica che il contatore dei messaggi relativi alle chiavi del gruppo del peer non è sincronizzato.

kWeaveMessageFlag_PeerRequestedAck

Indica che il mittente del messaggio ha richiesto una conferma.

kWeaveMessageFlag_RetainBuffer

Indica che il buffer dei messaggi non deve essere liberato dopo l'invio.

kWeaveMessageFlag_ReuseMessageId

Indica che l'identificatore del messaggio esistente deve essere riutilizzato.

kWeaveMessageFlag_ReuseSourceId

Indica che l'identificatore del nodo di origine esistente deve essere riutilizzato.

kWeaveMessageFlag_SourceNodeId

Indica che l'ID nodo di origine è presente nell'intestazione del messaggio Weave.

kWeaveMessageFlag_TunneledData

Indica che il payload dei messaggi Weave è un pacchetto IP con tunnel.

kWeaveMessageFlag_ViaEphemeralUDPPort

Indica che il messaggio viene inviato/ricevuto tramite la porta UDP temporanea locale.

WeaveMessageVersion

 WeaveMessageVersion

La versione del formato del messaggio Weave.

Weave sceglierà la versione del messaggio appropriata in base al formato del frame richiesto per il messaggio Weave. Per impostazione predefinita, la versione del messaggio è kWeaveMessageVersion_V1. Quando si utilizza Weave Reliable Messaging, ad esempio, la versione è kWeaveMessageVersion_V2.

Proprietà
kWeaveMessageVersion_Unspecified

Versione del messaggio non specificata.

kWeaveMessageVersion_V1

Versione V1 del formato dell'intestazione del messaggio.

kWeaveMessageVersion_V2

Versione del formato dell'intestazione del messaggio V2.

WeaveSubnetId

 WeaveSubnetId

Weave ha alcuni numeri di subnet riservati per interfacce di rete distinte sui dispositivi tipici.

Questi numeri sono assegnati qui a costanti simboliche. Questi numeri di subnet vengono utilizzati da Weave per configurare indirizzi ULA IPv6 sulle interfacce appropriate.

Proprietà
kWeaveSubnetId_MobileDevice

L'identificatore di subnet per tutti i dispositivi mobili.

kWeaveSubnetId_NotSpecified

Riservato come valore non specificato o nullo.

kWeaveSubnetId_PrimaryWiFi

Il numero della subnet dell'interfaccia radio Wi-Fi.

kWeaveSubnetId_Service

L'identificatore di subnet per gli endpoint del servizio Nest.

kWeaveSubnetId_ThreadAlarm

Il numero della subnet dell'interfaccia radio dell'allarme Thread.

kWeaveSubnetId_ThreadMesh

L'identificatore della subnet dell'interfaccia radio mesh di Thread.

kWeaveSubnetId_WiFiAP

Il numero della subnet dell'interfaccia dell'AP Wi-Fi locale.

WeaveVendorId

 WeaveVendorId

Typedef

FabricSecretRotationScheme

uint8_t FabricSecretRotationScheme

FabricSecretScope

uint8_t FabricSecretScope

Identifica la categoria di dispositivi che possono possedere e utilizzare il fabric secret.

WeaveAuthMode

uint16_t WeaveAuthMode

Identifica come viene autenticato un nodo peer.

WeaveAuthMode descrive il modo in cui un nodo peer è stato, o dovrebbe essere, autenticato durante uno scambio di messaggi Weave. In un contesto di avvio, le applicazioni usano WeaveAuthMode per esprimere la modalità di autenticazione peer desiderata per uno scambio, indicando così ai livelli di sicurezza e messaggistica Weave di ottenere la modalità desiderata o non riuscire a comunicare. In un contesto di risposta, WeaveAuthMode identifica il modo in cui è stato autenticato il nodo richiedente (il peer), consentendo all'applicazione che risponde di applicare i controlli dell'accesso in base a queste informazioni.

Il metodo WeaveAuthMode assegnato a un messaggio Weave in entrata è correlato alla natura della chiave utilizzata per criptare il messaggio. WeaveAuthMode deriva dal meccanismo in base al quale è stata stabilita la chiave e dai criteri utilizzati per verificare l'identità delle parti comunicanti al momento della creazione della chiave.

WeaveAuthMode include un insieme di valori predefiniti che descrivono le modalità di autenticazione comuni. Questi termini sono suddivisi in base al meccanismo di accordo chiave (CASE, PASE, GroupKey e così via). Gli sviluppatori possono estendere WeaveAuthMode definendo modalità specifiche dell'applicazione, che possono collegare a chiavi di crittografia specifiche.

WeaveEncryptionKey

union nl::Weave::WeaveEncryptionKey WeaveEncryptionKey

WeaveEncryptionType

enum nl::Weave::WeaveEncryptionType WeaveEncryptionType

I tipi di crittografia per il messaggio Weave.

WeaveExchangeFlags

enum nl::Weave::WeaveExchangeFlags WeaveExchangeFlags

I bit dei flag dell'intestazione Weave Exchange.

WeaveExchangeVersion

enum nl::Weave::WeaveExchangeVersion WeaveExchangeVersion

La versione dell'intestazione Weave Exchange.

WeaveMessageFlags

enum nl::Weave::WeaveMessageFlags WeaveMessageFlags

Flag associati a un messaggio Weave in entrata o in uscita.

I valori definiti qui vengono utilizzati all'interno del campo WeaveMessageInfo.Flags.

WeaveMessageHeader

struct WeaveMessageInfo WeaveMessageHeader

WeaveMessageVersion

enum nl::Weave::WeaveMessageVersion WeaveMessageVersion

La versione del formato del messaggio Weave.

Weave sceglierà la versione del messaggio appropriata in base al formato del frame richiesto per il messaggio Weave. Per impostazione predefinita, la versione del messaggio è kWeaveMessageVersion_V1. Quando si utilizza Weave Reliable Messaging, ad esempio, la versione è kWeaveMessageVersion_V2.

WeaveSubnetId

enum nl::Weave::WeaveSubnetId WeaveSubnetId

Weave ha alcuni numeri di subnet riservati per interfacce di rete distinte sui dispositivi tipici.

Questi numeri sono assegnati qui a costanti simboliche. Questi numeri di subnet vengono utilizzati da Weave per configurare indirizzi ULA IPv6 sulle interfacce appropriate.

Variabili

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 }

Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia dei messaggi Weave.

Questo valore rappresenta i primi 4 byte dell'HASH SHA-1 della frase "Nest Weave Message EK and AK".

Funzioni

AppGroupMasterKeyIdFromAuthMode

uint8_t AppGroupMasterKeyIdFromAuthMode(
  WeaveAuthMode authMode
)

Restituisce l'ID della chiave principale del gruppo di applicazioni associato alla modalità di autenticazione.

CASEAuthMode

WeaveAuthMode CASEAuthMode(
  uint8_t certType
)

Restituisce una modalità di autenticazione CASE corrispondente per un determinato tipo di certificato.

CertTypeFromAuthMode

uint8_t CertTypeFromAuthMode(
  WeaveAuthMode authMode
)

Restituisce l'origine della password per la modalità di autenticazione specificata.

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
)

Dato un errore Weave, restituisce una stringa C con terminazione NULL leggibile che descrive l'errore.

Dettagli
Parametri
[in] buf
Buffer in cui verrà inserita la stringa di errore.
[in] bufSize
Dimensione in byte del buffer fornito.
[in] err
L'errore da descrivere.
Restituisce
true Se nel buffer fornito è stata scritta una stringa di descrizione.
Restituisce
false Se l'errore fornito non è un errore Weave.

GenerateWeaveNodeId

NL_DLL_EXPORT WEAVE_ERROR GenerateWeaveNodeId(
  uint64_t & nodeId
)

Genera l'ID del nodo Weave casuale.

Questa funzione genera un ID nodo Weave univoco a 64 bit a livello locale. Questa funzione utilizza un'origine dati casuale con una crittografia efficace per garantire l'unicità del valore generato. Tieni presente che il bit 57 dell'ID del nodo Weave generato è impostato su 1 per indicare che l'ID del nodo Weave generato è locale (non globale) univoco.

Dettagli
Parametri
nodeId
Un riferimento all'ID del nodo Weave a 64 bit.
Valori restituiti
WEAVE_NO_ERROR
Se l'ID nodo Weave è stato generato correttamente.

GetFibonacciForIndex

uint32_t GetFibonacciForIndex(
  uint32_t index
)

Questa funzione genera un numero di Fibonacci a 32 bit per un determinato indice di 32 bit.

Dettagli
Restituisce
Numero di Fibonacci non firmato a 32 bit.

GetMessageName

const char * GetMessageName(
  uint32_t profileId,
  uint8_t msgType
)

GetProfileName

const char * GetProfileName(
  uint32_t profileId
)

GetRandU16

uint16_t GetRandU16(
  void
)

Questa funzione genera un numero casuale senza segno a 16 bit.

Dettagli
Restituisce
Numero intero casuale senza segno a 16 bit.

GetRandU32

uint32_t GetRandU32(
  void
)

Questa funzione genera un numero casuale senza segno a 32 bit.

Dettagli
Restituisce
Numero intero casuale senza segno a 32 bit.

GetRandU64

uint64_t GetRandU64(
  void
)

Questa funzione genera un numero casuale senza segno a 64 bit.

Dettagli
Restituisce
Numero intero casuale senza segno a 64 bit.

GetRandU8

uint8_t GetRandU8(
  void
)

Questa funzione genera un numero casuale senza segno a 8 bit.

Dettagli
Restituisce
Numero intero casuale senza segno a 8 bit.

GetVendorName

const char * GetVendorName(
  uint16_t vendorId
)

GroupKeyAuthMode

WeaveAuthMode GroupKeyAuthMode(
  uint32_t keyId
)

Restituisce la modalità di autenticazione della chiave di gruppo corrispondente per un determinato ID chiave.

IPv6InterfaceIdToWeaveNodeId

uint64_t IPv6InterfaceIdToWeaveNodeId(
  uint64_t interfaceId
)

Converti un identificatore dell'interfaccia dell'indirizzo IPv6 in un identificatore del nodo Weave.

Per facilitare i test, gli identificatori di nodo minori o uguali a #kMaxsempreLocalWeaveNodeId (65535) sono considerati "locali" e il loro bit universale/locale è impostato su zero. Ciò semplifica la rappresentazione in formato stringa degli indirizzi IPv6 corrispondenti. Ad esempio, un ULA per l'identificatore di nodo 10 sarebbe FD00:0:1:1::A.

Dettagli
Parametri
[in] interfaceId
L'identificatore dell'interfaccia a 64 bit.
Restituisce
l'identificatore del nodo Weave a 64 bit mappato.

IsCASEAuthMode

bool IsCASEAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul protocollo Weave CASE.

IsCertAuthMode

bool IsCertAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul possesso di una chiave privata associata a un certificato.

IsGroupKeyAuthMode

bool IsGroupKeyAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul possesso di una chiave di gruppo condivisa.

IsPASEAuthMode

bool IsPASEAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul protocollo Weave PASE.

IsPasswordAuthMode

bool IsPasswordAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul possesso di una password condivisa.

IsTAKEAuthMode

bool IsTAKEAuthMode(
  WeaveAuthMode authMode
)

True se la modalità di autenticazione si basa sul protocollo Weave Take.

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
)

Restituisce una modalità di autenticazione PASE corrispondente per una determinata origine della password.

PasswordSourceFromAuthMode

uint8_t PasswordSourceFromAuthMode(
  WeaveAuthMode authMode
)

Restituisce l'origine della password per la modalità di autenticazione specificata.

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
)

ID tessuto Weave per l'ID globale IPv6

uint64_t WeaveFabricIdToIPv6GlobalId(
  uint64_t fabricId
)

Converti un identificatore di fabric Weave in un identificatore globale ULA IPv6.

L'identificatore globale ULA per un indirizzo del fabric corrisponde ai 40 bit inferiori dell'ID dell'infrastruttura a 64 bit del fabric.

Dettagli
Parametri
[in] fabricId
L'identificatore del fabric Weave.
Restituisce
l'identificatore globale IPv6 mappato.

WeaveMessageSourceToStr

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

OBSOLETO Utilizza invece WeaveMessageLayer::GetPeerDescription().

WeaveNodeAddrToStr

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

OBSOLETO Utilizza invece WeaveMessageLayer::GetPeerDescription().

WeaveNodeIdToIPv6InterfaceId

uint64_t WeaveNodeIdToIPv6InterfaceId(
  uint64_t nodeId
)

Converti un identificatore del nodo Weave in un identificatore di interfaccia dell'indirizzo IPv6.

Gli identificatori dei nodi Weave sono EUI-64 universali/locali, che in base all'RFC-3513 vengono convertiti in identificatori di interfaccia invertendo il bit universale/locale (il bit 57 conteggia l'LSB come 0).

Per facilitare i test, gli identificatori di nodo minori o uguali a #kMaxsempreLocalWeaveNodeId (65535) sono considerati "locali" e il loro bit universale/locale è impostato su zero. Ciò semplifica la rappresentazione in formato stringa degli indirizzi IPv6 corrispondenti. Ad esempio, un ULA per l'identificatore di nodo 10 sarebbe FD00:0:1:1::A.

Dettagli
Parametri
[in] nodeId
L'identificatore del nodo Weave a 64 bit.
Restituisce
l'identificatore dell'interfaccia IPv6.

max

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

min

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