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 del 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 dei bit per gli identificatori IEEE EUI-64.
@57{
  kMaxAlwaysLocalWeaveNodeId = 0x000000000000FFFFULL
}
enum
Intervalli speciali di ID nodo 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 frammenti di 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
Contrassegni 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 Weave Message.
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 su 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 segreto dei tessuti.
WeaveAuthMode typedef
uint16_t
Identifica il modo in cui un nodo peer viene autenticato.
WeaveEncryptionKey typedef
WeaveEncryptionType typedef
enum nl::Weave::WeaveEncryptionType
I tipi di crittografia per il messaggio Weave.
WeaveExchangeFlags typedef
enum nl::Weave::WeaveExchangeFlags
I frammenti di flag dell'intestazione Weave Exchange.
WeaveExchangeVersion typedef
enum nl::Weave::WeaveExchangeVersion
La versione dell'intestazione Weave Exchange.
WeaveMessageFlags typedef
enum nl::Weave::WeaveMessageFlags
Contrassegni associati a un messaggio Weave in entrata o in uscita.
WeaveMessageHeader typedef
WeaveMessageVersion typedef
enum nl::Weave::WeaveMessageVersion
La versione del formato Weave Message.
WeaveSubnetId typedef
enum nl::Weave::WeaveSubnetId
Weave ha alcuni numeri di subnet riservati per interfacce di rete distinte su 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 chiave master 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 e leggibile da una persona che descrive l'errore.
GenerateWeaveNodeId(uint64_t & nodeId)
NL_DLL_EXPORT WEAVE_ERROR
Genera un ID nodo Weave casuale.
GetFibonacciForIndex(uint32_t index)
uint32_t
Questa funzione genera un numero di Fibonacci a 32 bit per un dato indice a 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 una modalità di autenticazione con chiave di gruppo corrispondente a un determinato ID chiave.
IPv6InterfaceIdToWeaveNodeId(uint64_t interfaceId)
uint64_t
Converti un identificatore di interfaccia di un 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 è basata 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 a una determinata origine 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 struttura 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 di nodo Weave in un identificatore di interfaccia di indirizzi IPv6.
max(const _T & a, const _T & b)
const _T &
min(const _T & a, const _T & b)
const _T &

Corsi

nl::Weave::Binding

Acquisisce la destinazione prevista di una comunicazione Weave e le informazioni di configurazione associate.

nl::Weave::Counter

Un'interfaccia per la gestione di un contatore come valore intero.

nl::Weave::ExchangeContext

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

nl::Weave::FabricStateDelegate

Questa classe delegato astratta comunica i cambiamenti di stato dell'infrastruttura.

nl::Weave::HostPortList

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

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

Una classe per gestire un contatore che aumenta in modo monotonico come valore intero.

nl::Weave::PersistedCounter

Una classe per la gestione di un contatore come valore intero destinato a rimanere valido durante i riavvii.

nl::Weave::WeaveConnection

La definizione della classe Weave Connection.

nl::Weave::WeaveConnectionTunnel

La definizione della classe WeaveConnectionTunnel, che gestisce una coppia di TCPEndPoints i cui WeaveConnection originali sono stati accoppiati 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 Weave e il tipo di messaggio di un determinato messaggio Weave all'interno di ExchangeContext.

nl::Weave::WeaveExchangeManager

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

nl::Weave::WeaveFabricState

Dichiarazione di inoltro di WeaveFabricState.

nl::Weave::WeaveKeyId

La definizione dell'identificatore chiave Weave.

nl::Weave::WeaveMessageLayer

La definizione della classe WeaveMessageLayer, che gestisce la comunicazione con 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 e di base per l'implementazione di risponditori (server) non richiesti del profilo Weave che incapsula la convalida delle richieste autenticate e l'invio di rapporti di stato e fornisce uno spazio di archiviazione comune dei membri dei dati per lo stato della struttura e un gestore della piattaforma di scambio pubblicitario.

nl::Weave::WeaveServerDelegateBase

Una classe base comune per l'implementazione degli 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.

Structs

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

La configurazione WRMP.

nl::Weave::WeaveMessageInfo

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

Sindacati

nl::Weave::WeaveEncryptionKey

Spazi dei nomi

nl::Weave::ASN1

Questo spazio dei nomi include tutte le interfacce 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 della crittografia condivisa.

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 di Weave per il supporto del logging condiviso.

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

Questo spazio dei nomi include tutte le interfacce dei profili Weave for Weave, sia Common che specifiche del fornitore Nest Labs.

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

Definizioni per lavorare con dati codificati nel formato Weave TLV.

nl::Weave::Warm

Questo spazio dei nomi include interfacce per Weave Address and Routing Module, un modulo portabile per la configurazione di indirizzi IP e route di Weave.

Enumerazioni

@21

 @21
Proprietà
kFlagAckPending

Se è prevista una risposta per un messaggio in fase di invio.

kFlagAutoReleaseConnection

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

kFlagAutoReleaseKey

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

kFlagAutoRequestAck

Questo contesto è associato a una WeaveConnection.

kFlagConnectionClosed

Questo contesto è l'iniziatore dello scambio.

kFlagDropAck

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

kFlagMsgRcvdFromPeer

Se impostato, indica che almeno un messaggio ricevuto su questo scambio ha richiesto un riconoscimento.

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

kFlagPeerRequestedAck

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

kFlagResponseExpected

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

kFlagUseEphemeralUDPPort

Rilascia automaticamente la WeaveConnection associata quando il contesto dello 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 certificato non vengono forniti come attributi dei certificati corrispondenti, ma derivano dalla struttura del certificato e/o dal contesto in cui vengono utilizzati. L'enumerazione dei tipi di certificato include un insieme di valori predefiniti che descrivono le applicazioni di certificati 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 certificato vengono utilizzati principalmente nell'implementazione di criteri di controllo dell'accesso, in cui l'accesso alle funzionalità delle applicazioni è influenzato dal tipo di certificato presentato da un richiedente.

Proprietà
kCertType_AccessToken

Un certificato del token di accesso Weave.

kCertType_AppDefinedBase

I tipi di certificati 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 superiori a questo valore.

kCertType_NotSpecified

Il tipo di certificato non è stato specificato.

kCertType_ServiceEndpoint

Un certificato di endpoint di servizio Weave.

@40

 @40

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

Weave PASE)

@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

Autenticazione dei peer eseguita tramite uno dei vari 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

Peer autenticato utilizzando CASE con 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 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 certificato di endpoint di servizio Weave.

kWeaveAuthMode_NotSpecified

Modalità di autenticazione non specificata.

kWeaveAuthMode_PASE_PairingCode

Peer autenticato utilizzando PASE con codice di accoppiamento del dispositivo.

kWeaveAuthMode_TAKE_IdentificationKey

Peer autenticato utilizzando TAKE con una chiave di identificazione del token.

kWeaveAuthMode_Unauthenticated

Peer non autenticato.

@42

 @42
Proprietà
kFabricSecretScope_All

Tutti i dispositivi possono avere un segreto per il tessuto corrispondente.

@43

 @43
Proprietà
kTestKey_AES128CTRSHA1_DataKeyByte

Valore del byte che genera la chiave di crittografia, utilizzata solo per i test.

kTestKey_AES128CTRSHA1_IntegrityKeyByte

Valore del byte che costruisce una chiave di integrità, utilizzata solo per i test.

@44

 @44

Dimensione del 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 del nodo di origine è presente nell'intestazione del messaggio Weave.

kWeaveHeaderFlag_TunneledData

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

@56

 @56

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

Proprietà
kEUI64_IG_Group

Valore di bit individuale/gruppo che indica un identificatore EUI-64 dell'indirizzo di gruppo.

kEUI64_IG_Individual

Valore di bit individuale/gruppo che indica un identificatore EUI-64 dell'indirizzo individuale.

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 singolo indirizzo. Il valore 1 indica che l'ID è l'indirizzo di un gruppo.

kEUI64_UL_Local

Valore di bit universale/locale che indica un identificatore EUI-64 gestito localmente.

kEUI64_UL_Mask

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

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

kEUI64_UL_Unversal

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

@57

 @57

Intervalli speciali di ID nodo Weave.

Proprietà
kMaxAlwaysLocalWeaveNodeId

Gli identificatori dei nodi Weave minori o uguali a questo valore sono considerati locali per praticità del 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 frammenti di flag dell'intestazione Weave Exchange.

Proprietà
kWeaveExchangeFlag_AckId

Imposta quando il messaggio attuale è 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

Imposta quando il messaggio corrente richiede una conferma da parte del destinatario.

WeaveExchangeVersion

 WeaveExchangeVersion

La versione dell'intestazione Weave Exchange.

WeaveMessageFlags

 WeaveMessageFlags

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

I valori definiti qui devono essere 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'iniziatore dello scambio Weave.

kWeaveMessageFlag_MessageEncoded

Indica che il messaggio Weave è già codificato.

kWeaveMessageFlag_MsgCounterSyncReq

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

kWeaveMessageFlag_MulticastFromLinkLocal

Alias obsoleto per kWeaveMessageFlag_DefaultMulticastSourceAddress.

kWeaveMessageFlag_PeerGroupMsgIdNotSynchronized

Indica che il contatore dei messaggi chiave del gruppo di app 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 del nodo di origine è presente nell'intestazione del messaggio Weave.

kWeaveMessageFlag_TunneledData

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

kWeaveMessageFlag_ViaEphemeralUDPPort

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

WeaveMessageVersion

 WeaveMessageVersion

La versione del formato Weave Message.

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

Proprietà
kWeaveMessageVersion_Unspecified

Versione messaggio non specificata.

kWeaveMessageVersion_V1

Formato intestazione messaggio versione V1.

kWeaveMessageVersion_V2

Formato intestazione messaggio versione V2.

WeaveSubnetId

 WeaveSubnetId

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

Questi numeri vengono 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 di subnet dell'interfaccia radio Wi-Fi.

kWeaveSubnetId_Service

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

kWeaveSubnetId_ThreadAlarm

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

kWeaveSubnetId_ThreadMesh

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

kWeaveSubnetId_WiFiAP

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

WeaveVendorId

 WeaveVendorId

Typedef

FabricSecretRotationScheme

uint8_t FabricSecretRotationScheme

FabricSecretScope

uint8_t FabricSecretScope

Identifica la categoria di dispositivi che possono possedere e utilizzare il segreto dei tessuti.

WeaveAuthMode

uint16_t WeaveAuthMode

Identifica il modo in cui un nodo peer viene autenticato.

WeaveAuthMode descrive il mezzo mediante il quale un nodo peer è stato, o dovrebbe essere, autenticato durante uno scambio di messaggi Weave. In un contesto iniziale, le applicazioni utilizzano WeaveAuthMode per esprimere una modalità di autenticazione peer desiderata per uno scambio, indicando così ai livelli di sicurezza e messaggistica di Weave di raggiungere la modalità desiderata o interrompere la comunicazione. In un contesto di risposta, WeaveAuthMode identifica il modo in cui il nodo richiedente (il peer) è stato autenticato, 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 arrivo è correlato alla natura della chiave utilizzata per crittografare il messaggio. WeaveAuthMode deriva dal meccanismo mediante il 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 più comuni. Questi vengono 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 specifiche chiavi di crittografia.

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 frammenti di flag dell'intestazione Weave Exchange.

WeaveExchangeVersion

enum nl::Weave::WeaveExchangeVersion WeaveExchangeVersion

La versione dell'intestazione Weave Exchange.

WeaveMessageFlags

enum nl::Weave::WeaveMessageFlags WeaveMessageFlags

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

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

WeaveMessageHeader

struct WeaveMessageInfo WeaveMessageHeader

WeaveMessageVersion

enum nl::Weave::WeaveMessageVersion WeaveMessageVersion

La versione del formato Weave Message.

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

WeaveSubnetId

enum nl::Weave::WeaveSubnetId WeaveSubnetId

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

Questi numeri vengono 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 di "Nest Weave Message EK and AK" a frase.

Funzioni

AppGroupMasterKeyIdFromAuthMode

uint8_t AppGroupMasterKeyIdFromAuthMode(
  WeaveAuthMode authMode
)

Restituisce l'ID chiave master 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 e leggibile da una persona che descrive l'errore.

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

GenerateWeaveNodeId

NL_DLL_EXPORT WEAVE_ERROR GenerateWeaveNodeId(
  uint64_t & nodeId
)

Genera un ID 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 buona crittografia per garantire l'univocità 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 è univoco a livello locale (non a livello globale).

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

GetFibonacciForIndex

uint32_t GetFibonacciForIndex(
  uint32_t index
)

Questa funzione genera un numero di Fibonacci a 32 bit per un dato indice a 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 una modalità di autenticazione con chiave di gruppo corrispondente a un determinato ID chiave.

Interfaccia IPv6InterfaceIdToWeaveNodeId

uint64_t IPv6InterfaceIdToWeaveNodeId(
  uint64_t interfaceId
)

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

Per praticità, gli identificatori di nodo inferiori 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 del 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 è basata 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 a una determinata origine 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 WeaveFabricToIPv6GlobalId

uint64_t WeaveFabricIdToIPv6GlobalId(
  uint64_t fabricId
)

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

L'identificatore globale ULA per un indirizzo di fabric è i 40 bit inferiori dell'ID fabric a 64 bit dell'infrastruttura.

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

WeaveMessageSourceToStr

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

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 di nodo Weave in un identificatore di interfaccia di indirizzi IPv6.

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

Per praticità, gli identificatori di nodo inferiori 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 del nodo 10 sarebbe FD00:0:1:1::A.

Dettagli
Parametri
[in] nodeId
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
)