nl::Weave::WeaveFabricState

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

WeaveFabricState의 전방 선언

요약

생성자 및 소멸자

WeaveFabricState(void)

공개 유형

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

공개 속성

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

공개 함수

AddSharedSessionEndNode(uint64_t endNodeId, uint64_t terminatingNodeId, uint16_t keyId)
AddSharedSessionEndNode(WeaveSessionKey *sessionKey, uint64_t endNodeId)
이 메서드는 공유 엔드 노드 레코드에 새 엔드 노드를 추가합니다.
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)
이 메서드는 세션 키 항목을 찾습니다.
FindSharedSession(uint64_t terminatingNodeId, WeaveAuthMode authMode, uint8_t encType)
세션 키 테이블에서 지정된 종료 노드를 타겟팅하고 지정된 인증 모드 및 암호화 유형과 일치하는 설정된 공유 세션 키를 검색합니다.
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)
이 메서드는 지정된 세션을 공유하는 모든 엔드 노드 ID를 반환합니다.
HandleConnectionClosed(WeaveConnection *con)
void
Init(void)
Init(nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase *groupKeyStore)
IsFabricAddress(const IPAddress & addr) const
bool
IP 주소가 로컬 Weave 패브릭 내 노드의 주소를 나타내는지 확인합니다.
IsLocalFabricAddress(const IPAddress & addr) const
bool
IP 주소가 로컬 노드의 Weave 패브릭 주소를 나타내는지 확인합니다.
IsSharedSession(uint16_t keyId, uint64_t peerNodeId)
bool
이 메서드는 지정된 동종 앱 및 keyId와 연결된 보안 세션이 공유되었는지 확인합니다.
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)
이전에 정지된 Weave 보안 세션을 직렬화된 상태에서 복원합니다.
SelectNodeAddress(uint64_t nodeId, uint16_t subnet) const
지정된 노드에 대한 Weave ULA가 포함된 IPAddress를 반환합니다.
SelectNodeAddress(uint64_t nodeId) const
지정된 노드에 대한 Weave ULA가 포함된 IPAddress를 반환합니다.
SetDelegate(FabricStateDelegate *aDelegate)
void
이 메서드는 대리자 객체를 설정합니다.
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)
활성 Weave 보안 세션의 상태를 정지하고 직렬화합니다.

구조체

nl::Weave::WeaveFabricState::SessionEndCbCtxt

공개 유형

PeerIndexType

uint8_t PeerIndexType

SessionEndCbFunct

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

 State

공개 속성

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

uint8_t State

UnencRcvFlags

WeaveSessionState::ReceiveFlagsType UnencRcvFlags[WEAVE_CONFIG_MAX_PEER_NODES]

UseTestKey

bool UseTestKey

공개 함수

AddSharedSessionEndNode

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

AddSharedSessionEndNode

WEAVE_ERROR AddSharedSessionEndNode(
  WeaveSessionKey *sessionKey,
  uint64_t endNodeId
)

이 메서드는 공유 엔드 노드 레코드에 새 엔드 노드를 추가합니다.

세부정보
매개변수
[in] sessionKey
새 종료 노드를 추가해야 하는 세션을 나타내는 WeaveSessionKey 객체입니다.
[in] endNodeId
추가할 세션 종료 노드의 노드 ID입니다.
반환 값
WEAVE_ERROR_TOO_MANY_SHARED_SESSION_END_NODES
공유 종료 노드 목록에 새 항목을 위한 여유 공간이 없는 경우
WEAVE_NO_ERROR
성공 시

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
)

이 메서드는 세션 키 항목을 찾습니다.

세부정보
매개변수
[in] keyId
Weave 키 식별자입니다.
[in] peerNodeId
피어의 노드 식별자입니다.
[in] create
지정된 키를 찾을 수 없는 경우 새 키를 만들어야 하는지 여부를 나타내는 부울 값입니다.
[out] retRec
WeaveSessionKey 객체에 대한 포인터 참조입니다.
반환 값
WEAVE_ERROR_WRONG_KEY_TYPE
지정된 키가 세션 키 유형이 아닌 경우
WEAVE_ERROR_INVALID_ARGUMENT
입력 인수의 값이 잘못된 경우.
WEAVE_ERROR_KEY_NOT_FOUND
지정된 키를 찾을 수 없는 경우
WEAVE_ERROR_TOO_MANY_KEYS
새 세션 키를 만들 수 있는 무료 항목이 없는 경우
WEAVE_NO_ERROR
성공 시

FindSharedSession

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

세션 키 테이블에서 지정된 종료 노드를 타겟팅하고 지정된 인증 모드 및 암호화 유형과 일치하는 설정된 공유 세션 키를 검색합니다.

세부정보
매개변수
[in] terminatingNodeId
세션 종료자의 노드 식별자입니다.
[in] authMode
원하는 세션 인증 모드.
[in] encType
원하는 메일 암호화 유형입니다.
반환 값
WeaveSessionKey
* 일치하는 공유 세션을 나타내는 WeaveSessionKey 객체에 대한 포인터입니다. 일치하는 세션이 없으면 NULL을 반환합니다.

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
)

이 메서드는 지정된 세션을 공유하는 모든 엔드 노드 ID를 반환합니다.

세부정보
매개변수
[in] sessionKey
세션 키 객체에 대한 포인터입니다.
[in] endNodeIds
노드 ID의 버퍼에 대한 포인터입니다.
[in] endNodeIdsMaxCount
버퍼에 맞출 수 있는 최대 노드 ID 수입니다.
[out] endNodeIdsCount
지정된 세션을 공유하는 발견된 엔드 노드 ID의 수입니다.
반환 값
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 최종 노드 ID 버퍼가 충분히 크지 않습니다.
WEAVE_NO_ERROR
성공 시

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 

IP 주소가 로컬 Weave 패브릭 내 노드의 주소를 나타내는지 확인합니다.

IsLocalFabricAddress

bool IsLocalFabricAddress(
  const IPAddress & addr
) const 

IP 주소가 로컬 노드의 Weave 패브릭 주소를 나타내는지 확인합니다.

IsSharedSession

bool IsSharedSession(
  uint16_t keyId,
  uint64_t peerNodeId
)

이 메서드는 지정된 동종 앱 및 keyId와 연결된 보안 세션이 공유되었는지 확인합니다.

세부정보
매개변수
[in] keyId
세션 키 식별자입니다.
[in] peerNodeId
피어의 노드 식별자입니다.
반환 값
bool
지정된 세션의 공유 여부입니다.

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
)

이전에 정지된 Weave 보안 세션을 직렬화된 상태에서 복원합니다.

SelectNodeAddress

IPAddress SelectNodeAddress(
  uint64_t nodeId,
  uint16_t subnet
) const 

지정된 노드에 대한 Weave ULA가 포함된 IPAddress를 반환합니다.

이 변형을 사용하면 서브넷을 지정할 수 있습니다.

세부정보
매개변수
[in] nodeId
문제가 되는 노드의 노드 ID 번호입니다.
[in] subnet
ULA의 원하는 서브넷입니다.
반환 값
IPAddress
IPAddress 객체입니다.

SelectNodeAddress

IPAddress SelectNodeAddress(
  uint64_t nodeId
) const 

지정된 노드에 대한 Weave ULA가 포함된 IPAddress를 반환합니다.

이 변형은 로컬 노드의 기본 서브넷을 사용합니다.

세부정보
매개변수
[in] nodeId
문제가 되는 노드의 노드 ID 번호입니다.
반환 값
IPAddress
IPAddress 객체입니다.

SetDelegate

void SetDelegate(
  FabricStateDelegate *aDelegate
)

이 메서드는 대리자 객체를 설정합니다.

대리자의 콜백 메서드는 FabricId가 변경될 때마다, 즉 패브릭을 조인/생성할 때 또는 패브릭을 종료할 때 (명확한 패브릭 상태) 호출됩니다.

위임이 이전에 설정된 경우 이 메서드에 대한 두 번째 호출은 이전 대리자를 덮어씁니다.

세부정보
매개변수
[in] aDelegate
위임 객체입니다. 대리자가 필요하지 않으면 NULL일 수 있습니다.

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
)

종료

WEAVE_ERROR Shutdown(
  void
)

SuspendSession

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

활성 Weave 보안 세션의 상태를 정지하고 직렬화합니다.

식별된 Weave 보안 세션의 상태를 제공된 버퍼에 직렬화하고, 더 이상 메시지를 보내거나 받을 수 없도록 세션을 정지합니다.

이 메서드는 절전 모드 동안 RAM을 유지하지 않는 기기에서 사용하도록 되어 있으며, 이를 통해 활성 세션의 상태를 유지하여 절전 모드 해제 시 세션을 다시 설정할 필요가 없도록 합니다.

WeaveFabricState

 WeaveFabricState(
  void
)