nl::Weave::WeaveFabricState

#include <src/lib/core/WeaveFabricState.h>

Weiterleitende Deklaration von WeaveFabricState.

Zusammenfassung

Konstruktoren und Zerstörer

WeaveFabricState(void)

Öffentliche Typen

PeerIndexType typedef.
uint8_t
SessionEndCbFunct)(uint16_t keyId, uint64_t peerNodeId, void *context) typedef.
void(*
State enum

Öffentliche Attribute

AutoCreateKeys
bool
DebugFabricId
uint64_t
DefaultSubnet
uint16_t
FabricId
uint64_t
GroupKeyStore
ListenIPv4Addr
IPAddress
ListenIPv6Addr
IPAddress
LocalNodeId
uint64_t
LogKeys
bool
MaxUnencUDPMsgIdRcvd[WEAVE_CONFIG_MAX_PEER_NODES]
uint32_t
MessageLayer
MostRecentlyUsedIndexes[WEAVE_CONFIG_MAX_PEER_NODES]
PeerIndexType
NodeId[WEAVE_CONFIG_MAX_PEER_NODES]
uint64_t
PairingCode
const char *
State
uint8_t
UnencRcvFlags[WEAVE_CONFIG_MAX_PEER_NODES]
WeaveSessionState::ReceiveFlagsType
UseTestKey
bool

Öffentliche Funktionen

AddSharedSessionEndNode(uint64_t endNodeId, uint64_t terminatingNodeId, uint16_t keyId)
AddSharedSessionEndNode(WeaveSessionKey *sessionKey, uint64_t endNodeId)
Mit dieser Methode wird dem Datensatz der freigegebenen Endknoten ein neuer Endknoten hinzugefügt.
AllocSessionKey(uint64_t peerNodeId, uint16_t keyId, WeaveConnection *boundCon, WeaveSessionKey *& sessionKey)
ClearFabricState(void)
void
CreateFabric(void)
FindSessionKey(uint16_t keyId, uint64_t peerNodeId, bool create, WeaveSessionKey *& retRec)
Mit dieser Methode wird der Sitzungsschlüssel-Eintrag gefunden.
FindSharedSession(uint64_t terminatingNodeId, WeaveAuthMode authMode, uint8_t encType)
Durchsucht die Tabelle mit Sitzungsschlüssel nach einem festgelegten freigegebenen Sitzungsschlüssel, der auf den angegebenen Endknoten ausgerichtet ist und dem angegebenen Authentifizierungsmodus und Verschlüsselungstyp entspricht.
GetFabricState(uint8_t *buf, uint32_t bufSize, uint32_t & fabricStateLen)
GetPassword(uint8_t pwSrc, const char *& ps, uint16_t & pwLen)
GetSessionKey(uint16_t keyId, uint64_t peerNodeId, WeaveSessionKey *& outSessionKey)
GetSessionState(uint64_t remoteNodeId, uint16_t keyId, uint8_t encType, WeaveConnection *con, WeaveSessionState & outSessionState)
GetSharedSessionEndNodeIds(const WeaveSessionKey *sessionKey, uint64_t *endNodeIds, uint8_t endNodeIdsBufSize, uint8_t & endNodeIdsCount)
Diese Methode gibt alle Endknoten-IDs zurück, die die angegebene Sitzung gemeinsam nutzen.
HandleConnectionClosed(WeaveConnection *con)
void
Init(void)
Init(nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase *groupKeyStore)
IsFabricAddress(const IPAddress & addr) const
bool
Ermittelt, ob eine IP-Adresse eine Adresse eines Knotens innerhalb der lokalen Weave-Struktur darstellt.
IsLocalFabricAddress(const IPAddress & addr) const
bool
Ermittelt, ob eine IP-Adresse eine Weave-Fabric-Adresse für den lokalen Knoten ist.
IsSharedSession(uint16_t keyId, uint64_t peerNodeId)
bool
Diese Methode prüft, ob eine sichere Sitzung freigegeben ist, die der angegebenen Peer- und der angegebenen Schlüssel-ID zugeordnet ist.
JoinExistingFabric(const uint8_t *fabricState, uint32_t fabricStateLen)
RegisterSessionEndCallback(SessionEndCbCtxt *sessionEndCb)
RemoveIdleSessionKeys()
bool
RemoveSessionKey(uint16_t keyId, uint64_t peerNodeId)
RemoveSessionKey(WeaveSessionKey *sessionKey, bool wasIdle)
void
RemoveSharedSessionEndNodes(const WeaveSessionKey *sessionKey)
void
RestoreSession(uint8_t *serializedSession, uint16_t serializedSessionLen)
Stellen Sie eine zuvor gesperrte Weave-Sicherheitssitzung aus einem serialisierten Zustand wieder her.
SelectNodeAddress(uint64_t nodeId, uint16_t subnet) const
Gibt eine IPAddress zurück, die eine Weave-ULA für einen angegebenen Knoten enthält.
SelectNodeAddress(uint64_t nodeId) const
Gibt eine IPAddress zurück, die eine Weave-ULA für einen angegebenen Knoten enthält.
SetDelegate(FabricStateDelegate *aDelegate)
void
Mit dieser Methode wird das Delegatobjekt festgelegt.
SetSessionKey(uint16_t keyId, uint64_t peerNodeId, uint8_t encType, WeaveAuthMode authMode, const WeaveEncryptionKey *encKey)
SetSessionKey(WeaveSessionKey *sessionKey, uint8_t encType, WeaveAuthMode authMode, const WeaveEncryptionKey *encKey)
Shutdown(void)
SuspendSession(uint16_t keyId, uint64_t peerNodeId, uint8_t *buf, uint16_t bufSize, uint16_t & serializedSessionLen)
Unterbrechen und serialisieren Sie den Status einer aktiven Weave-Sicherheitssitzung.

Strukturen

nl::Weave::WeaveFabricState::SessionEndCbCtxt

Öffentliche Typen

PeerIndexType

uint8_t PeerIndexType

SessionEndCbFunct

void(* SessionEndCbFunct)(uint16_t keyId, uint64_t peerNodeId, void *context)

Status

 State

Öffentliche Attribute

AutoCreateKeys

bool AutoCreateKeys

DebugFabricId

uint64_t DebugFabricId

DefaultSubnet

uint16_t DefaultSubnet

FabricId

uint64_t FabricId

GroupKeyStore

nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase * GroupKeyStore

ListenIPv4Addr

IPAddress ListenIPv4Addr

ListenIPv6Addr

IPAddress ListenIPv6Addr

LocalNodeId

uint64_t LocalNodeId

LogKeys

bool LogKeys

MaxUnencUDPMsgIdRcvd

uint32_t MaxUnencUDPMsgIdRcvd[WEAVE_CONFIG_MAX_PEER_NODES]

MessageLayer

WeaveMessageLayer * MessageLayer

MostRecentlyUsedIndexes

PeerIndexType MostRecentlyUsedIndexes[WEAVE_CONFIG_MAX_PEER_NODES]

NodeId

uint64_t NodeId[WEAVE_CONFIG_MAX_PEER_NODES]

PairingCode

const char * PairingCode

Status

uint8_t State

UnencRcvFlags

WeaveSessionState::ReceiveFlagsType UnencRcvFlags[WEAVE_CONFIG_MAX_PEER_NODES]

UseTestKey

bool UseTestKey

Öffentliche Funktionen

AddSharedSessionEndNode

WEAVE_ERROR AddSharedSessionEndNode(
  uint64_t endNodeId,
  uint64_t terminatingNodeId,
  uint16_t keyId
)

AddSharedSessionEndNode

WEAVE_ERROR AddSharedSessionEndNode(
  WeaveSessionKey *sessionKey,
  uint64_t endNodeId
)

Mit dieser Methode wird dem Datensatz der freigegebenen Endknoten ein neuer Endknoten hinzugefügt.

Details
Parameter
[in] sessionKey
Das Objekt WeaveSessionKey, das die Sitzung darstellt, für die der neue Endknoten hinzugefügt werden soll.
[in] endNodeId
Die Knoten-ID des Sitzungsendknotens, der hinzugefügt werden soll.
Rückgabewerte
WEAVE_ERROR_TOO_MANY_SHARED_SESSION_END_NODES
Wenn kein freier Speicherplatz für einen neuen Eintrag in der Liste der freigegebenen Endknoten vorhanden ist.
WEAVE_NO_ERROR
Bei Erfolg.

AllocSessionKey

WEAVE_ERROR AllocSessionKey(
  uint64_t peerNodeId,
  uint16_t keyId,
  WeaveConnection *boundCon,
  WeaveSessionKey *& sessionKey
)

ClearFabricState

void ClearFabricState(
  void
)

CreateFabric

WEAVE_ERROR CreateFabric(
  void
)

FindSessionKey

WEAVE_ERROR FindSessionKey(
  uint16_t keyId,
  uint64_t peerNodeId,
  bool create,
  WeaveSessionKey *& retRec
)

Mit dieser Methode wird der Sitzungsschlüssel-Eintrag gefunden.

Details
Parameter
[in] keyId
Weave-Schlüsselkennung.
[in] peerNodeId
Die Knotenkennung des Peers.
[in] create
Ein boolescher Wert, der angibt, ob ein neuer Schlüssel erstellt werden soll, wenn der angegebene Schlüssel nicht gefunden wird.
[out] retRec
Ein Zeigerverweis auf ein WeaveSessionKey-Objekt.
Rückgabewerte
WEAVE_ERROR_WRONG_KEY_TYPE
Wenn der angegebene Schlüssel kein Sitzungsschlüsseltyp ist.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn Eingabeargumente falsche Werte haben.
WEAVE_ERROR_KEY_NOT_FOUND
Wenn der angegebene Schlüssel nicht gefunden wird.
WEAVE_ERROR_TOO_MANY_KEYS
Wenn kein kostenloser Zugang zum Erstellen eines neuen Sitzungsschlüssels vorhanden ist.
WEAVE_NO_ERROR
Bei Erfolg.

FindSharedSession

WeaveSessionKey * FindSharedSession(
  uint64_t terminatingNodeId,
  WeaveAuthMode authMode,
  uint8_t encType
)

Durchsucht die Tabelle mit Sitzungsschlüssel nach einem festgelegten freigegebenen Sitzungsschlüssel, der auf den angegebenen Endknoten ausgerichtet ist und dem angegebenen Authentifizierungsmodus und Verschlüsselungstyp entspricht.

Details
Parameter
[in] terminatingNodeId
Die Knoten-ID des Sitzungsbeendigers.
[in] authMode
Der gewünschte Sitzungsauthentifizierungsmodus.
[in] encType
Der gewünschte Typ der Nachrichtenverschlüsselung.
Rückgabewerte
WeaveSessionKey
* Einen Verweis auf ein WeaveSessionKey-Objekt, das die übereinstimmende freigegebene Sitzung darstellt oder NULL, wenn keine passende Sitzung gefunden wurde.

GetFabricState

WEAVE_ERROR GetFabricState(
  uint8_t *buf,
  uint32_t bufSize,
  uint32_t & fabricStateLen
)

GetPassword

WEAVE_ERROR GetPassword(
  uint8_t pwSrc,
  const char *& ps,
  uint16_t & pwLen
)

GetSessionKey

WEAVE_ERROR GetSessionKey(
  uint16_t keyId,
  uint64_t peerNodeId,
  WeaveSessionKey *& outSessionKey
)

GetSessionState

WEAVE_ERROR GetSessionState(
  uint64_t remoteNodeId,
  uint16_t keyId,
  uint8_t encType,
  WeaveConnection *con,
  WeaveSessionState & outSessionState
)

GetSharedSessionEndNodeIds

WEAVE_ERROR GetSharedSessionEndNodeIds(
  const WeaveSessionKey *sessionKey,
  uint64_t *endNodeIds,
  uint8_t endNodeIdsBufSize,
  uint8_t & endNodeIdsCount
)

Diese Methode gibt alle Endknoten-IDs zurück, die die angegebene Sitzung gemeinsam nutzen.

Details
Parameter
[in] sessionKey
Ein Zeiger auf das Sitzungsschlüsselobjekt.
[in] endNodeIds
Ein Zeiger auf den Zwischenspeicher von Knoten-IDs.
[in] endNodeIdsMaxCount
Die maximale Anzahl von Knoten-IDs, die in den Zwischenspeicher passen.
[out] endNodeIdsCount
Anzahl der gefundenen Endknoten-IDs, die die angegebene Sitzung gemeinsam nutzen.
Rückgabewerte
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn der ID-Zwischenspeicher des Endknotens angegeben ist, ist er nicht groß genug.
WEAVE_NO_ERROR
Bei Erfolg.

HandleConnectionClosed

void HandleConnectionClosed(
  WeaveConnection *con
)

Init

WEAVE_ERROR Init(
  void
)

Init

WEAVE_ERROR Init(
  nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase *groupKeyStore
)

IsFabricAddress

bool IsFabricAddress(
  const IPAddress & addr
) const 

Ermittelt, ob eine IP-Adresse eine Adresse eines Knotens innerhalb der lokalen Weave-Struktur darstellt.

IsLocalFabricAddress

bool IsLocalFabricAddress(
  const IPAddress & addr
) const 

Ermittelt, ob eine IP-Adresse eine Weave-Fabric-Adresse für den lokalen Knoten ist.

IsSharedSession

bool IsSharedSession(
  uint16_t keyId,
  uint64_t peerNodeId
)

Diese Methode prüft, ob eine sichere Sitzung freigegeben ist, die der angegebenen Peer- und der angegebenen Schlüssel-ID zugeordnet ist.

Details
Parameter
[in] keyId
Die Kennung des Sitzungsschlüssels.
[in] peerNodeId
Die Knotenkennung des Peers.
Rückgabewerte
bool
Gibt an, ob die angegebene Sitzung freigegeben ist oder nicht.

JoinExistingFabric

WEAVE_ERROR JoinExistingFabric(
  const uint8_t *fabricState,
  uint32_t fabricStateLen
)

RegisterSessionEndCallback

WEAVE_ERROR RegisterSessionEndCallback(
  SessionEndCbCtxt *sessionEndCb
)

RemoveIdleSessionKeys

bool RemoveIdleSessionKeys()

RemoveSessionKey

WEAVE_ERROR RemoveSessionKey(
  uint16_t keyId,
  uint64_t peerNodeId
)

RemoveSessionKey

void RemoveSessionKey(
  WeaveSessionKey *sessionKey,
  bool wasIdle
)

RemoveSharedSessionEndNodes

void RemoveSharedSessionEndNodes(
  const WeaveSessionKey *sessionKey
)

RestoreSession

WEAVE_ERROR RestoreSession(
  uint8_t *serializedSession,
  uint16_t serializedSessionLen
)

Stellen Sie eine zuvor gesperrte Weave-Sicherheitssitzung aus einem serialisierten Zustand wieder her.

SelectNodeAddress

IPAddress SelectNodeAddress(
  uint64_t nodeId,
  uint16_t subnet
) const 

Gibt eine IPAddress zurück, die eine Weave-ULA für einen angegebenen Knoten enthält.

Bei dieser Variante kann ein Subnetz angegeben werden.

Details
Parameter
[in] nodeId
Die Knoten-ID des betreffenden Knotens.
[in] subnet
Das gewünschte Subnetz der ULA.
Rückgabewerte
IPAddress
Ein IPAddress-Objekt.

SelectNodeAddress

IPAddress SelectNodeAddress(
  uint64_t nodeId
) const 

Gibt eine IPAddress zurück, die eine Weave-ULA für einen angegebenen Knoten enthält.

Diese Variante verwendet das Standardsubnetz des lokalen Knotens.

Details
Parameter
[in] nodeId
Die Knoten-ID des betreffenden Knotens.
Rückgabewerte
IPAddress
Ein IPAddress-Objekt.

SetDelegate

void SetDelegate(
  FabricStateDelegate *aDelegate
)

Mit dieser Methode wird das Delegatobjekt festgelegt.

Die Callback-Methoden des Delegats werden immer dann aufgerufen, wenn die FabricId geändert wird, d.h. wenn wir eine Fabric verbinden/erstellen oder eine Fabric verlassen (klarer Fabric-Zustand)

Wenn der Delegat zuvor festgelegt wurde, wird der vorherige Delegat durch einen zweiten Aufruf dieser Methode überschrieben.

Details
Parameter
[in] aDelegate
Das Delegatobjekt. Er kann NULL sein, wenn kein Delegat erforderlich ist.

SetSessionKey

WEAVE_ERROR SetSessionKey(
  uint16_t keyId,
  uint64_t peerNodeId,
  uint8_t encType,
  WeaveAuthMode authMode,
  const WeaveEncryptionKey *encKey
)

SetSessionKey

WEAVE_ERROR SetSessionKey(
  WeaveSessionKey *sessionKey,
  uint8_t encType,
  WeaveAuthMode authMode,
  const WeaveEncryptionKey *encKey
)

Herunterfahren

WEAVE_ERROR Shutdown(
  void
)

SuspendSession

WEAVE_ERROR SuspendSession(
  uint16_t keyId,
  uint64_t peerNodeId,
  uint8_t *buf,
  uint16_t bufSize,
  uint16_t & serializedSessionLen
)

Unterbrechen und serialisieren Sie den Status einer aktiven Weave-Sicherheitssitzung.

Serialisiert den Status einer identifizierten Weave-Sicherheitssitzung in den bereitgestellten Zwischenspeicher und unterbricht die Sitzung, sodass keine weiteren Nachrichten gesendet oder empfangen werden können.

Diese Methode ist für Geräte vorgesehen, die im Ruhezustand keinen RAM beibehalten, sodass sie den Status einer aktiven Sitzung beibehalten und die Sitzung nach dem Beenden des Ruhemodus nicht neu starten müssen.

WeaveFabricState

 WeaveFabricState(
  void
)