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)
วิธีนี้จะแสดงผลรหัสโหนดปลายทางทั้งหมดที่แชร์เซสชันที่ระบุ
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
วิธีนี้จะตรวจสอบว่ามีการแชร์เซสชันที่ปลอดภัยซึ่งเชื่อมโยงกับแอปเทียบเท่าและคีย์Id ที่ระบุหรือไม่
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
แสดงผล IPAddress ที่มี Weave ULA สําหรับโหนดที่ระบุ
SelectNodeAddress(uint64_t nodeId) const
แสดงผล IPAddress ที่มี Weave ULA สําหรับโหนดที่ระบุ
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

ประเภทสาธารณะ

ประเภท PeerIndex

uint8_t PeerIndexType

เซสชันสิ้นสุด CbFunct

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

สถานะ

 State

แอตทริบิวต์สาธารณะ

สร้างคีย์อัตโนมัติ

bool AutoCreateKeys

รหัส DebugFabric

uint64_t DebugFabricId

เครือข่ายย่อยเริ่มต้น

uint16_t DefaultSubnet

รหัสผ้า

uint64_t FabricId

กลุ่มคีย์สโตร์

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

ผู้ฟัง

IPAddress ListenIPv4Addr

ผู้ฟัง

IPAddress ListenIPv6Addr

รหัสท้องถิ่น

uint64_t LocalNodeId

คีย์บันทึก

bool LogKeys

ค่าสูงสุดของ UnUDcUDPMsgIdRcvd

uint32_t MaxUnencUDPMsgIdRcvd[WEAVE_CONFIG_MAX_PEER_NODES]

เลเยอร์ข้อความ

WeaveMessageLayer * MessageLayer

ดัชนีการใช้งานล่าสุด

PeerIndexType MostRecentlyUsedIndexes[WEAVE_CONFIG_MAX_PEER_NODES]

รหัสโหนด

uint64_t NodeId[WEAVE_CONFIG_MAX_PEER_NODES]

รหัสการจับคู่

const char * PairingCode

สถานะ

uint8_t State

ค่าสถานะ EncRcvv

WeaveSessionState::ReceiveFlagsType UnencRcvFlags[WEAVE_CONFIG_MAX_PEER_NODES]

ใช้คีย์ทดสอบ

bool UseTestKey

ฟังก์ชันสาธารณะ

เพิ่มเซสชันสิ้นสุดร่วมกัน

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

เพิ่มเซสชันสิ้นสุดร่วมกัน

WEAVE_ERROR AddSharedSessionEndNode(
  WeaveSessionKey *sessionKey,
  uint64_t endNodeId
)

เมธอดนี้จะเพิ่มโหนดปลายทางใหม่ไปยังระเบียนโหนดปลายทางที่ใช้ร่วมกัน

รายละเอียด
พารามิเตอร์
[in] sessionKey
ออบเจ็กต์ WeaveSessionKey แสดงถึงเซสชันที่ควรเพิ่มโหนดสิ้นสุดใหม่
[in] endNodeId
รหัสโหนดของโหนดตอนท้ายของเซสชันที่จะเพิ่ม
แสดงผลค่า
WEAVE_ERROR_TOO_MANY_SHARED_SESSION_END_NODES
หากไม่มีพื้นที่ว่างสําหรับรายการใหม่ในรายการโหนดปลายทางที่ใช้ร่วมกัน
WEAVE_NO_ERROR
สําเร็จแล้ว

คีย์ประเภทเซสชัน

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

ล้างสถานะ

void ClearFabricState(
  void
)

สร้างผ้า

WEAVE_ERROR CreateFabric(
  void
)

คีย์การค้นหา

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

วิธีนี้พบรายการคีย์เซสชัน

รายละเอียด
พารามิเตอร์
[in] keyId
สลับตัวระบุคีย์
[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
สําเร็จแล้ว

เซสชันการค้นหาที่แชร์

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

ค้นหาตารางเซสชันคีย์ที่ใช้ร่วมกันโดยใช้คีย์เซสชันที่ใช้ร่วมกันซึ่งกําหนดเป้าหมายไปยังโหนดการสิ้นสุดที่ระบุ และตรงกับโหมดการตรวจสอบสิทธิ์และประเภทการเข้ารหัสที่ระบุ

รายละเอียด
พารามิเตอร์
[in] terminatingNodeId
ตัวระบุโหนดของตัวสิ้นสุดเซสชัน
[in] authMode
โหมดการตรวจสอบสิทธิ์เซสชันที่ต้องการ
[in] encType
ประเภทการเข้ารหัสข้อความที่ต้องการ
แสดงผลค่า
WeaveSessionKey
* ตัวชี้ไปยังออบเจ็กต์ WeaveSessionKey แสดงถึงเซสชันที่แชร์ซึ่งตรงกัน หรือไปยัง NULL หากไม่พบเซสชันที่ตรงกัน

สถานะ GetFabric

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

รับรหัสผ่าน

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

คีย์ GetSession

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

สถานะ GetSession

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
)

วิธีนี้จะแสดงผลรหัสโหนดปลายทางทั้งหมดที่แชร์เซสชันที่ระบุ

รายละเอียด
พารามิเตอร์
[in] sessionKey
ตัวชี้ไปยังออบเจ็กต์คีย์เซสชัน
[in] endNodeIds
ตัวชี้ไปยังบัฟเฟอร์รหัสโหนด
[in] endNodeIdsMaxCount
จํานวนสูงสุดของรหัสโหนดที่พอดีกับบัฟเฟอร์ได้
[out] endNodeIdsCount
จํานวนรหัสโหนดปลายทางที่พบ ซึ่งแชร์เซสชันที่ระบุ
แสดงผลค่า
WEAVE_ERROR_BUFFER_TOO_SMALL
หากบัฟเฟอร์รหัสโหนดปลายทางที่ระบุไม่ใหญ่พอ
WEAVE_NO_ERROR
สําเร็จแล้ว

แฮนเดิลการเชื่อมต่อแบบปิด

void HandleConnectionClosed(
  WeaveConnection *con
)

เริ่ม

WEAVE_ERROR Init(
  void
)

เริ่ม

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 สําหรับโหนดในระบบหรือไม่

เซสชันที่ใช้ร่วมกัน

bool IsSharedSession(
  uint16_t keyId,
  uint64_t peerNodeId
)

วิธีนี้จะตรวจสอบว่ามีการแชร์เซสชันที่ปลอดภัยซึ่งเชื่อมโยงกับแอปเทียบเท่าและคีย์Id ที่ระบุหรือไม่

รายละเอียด
พารามิเตอร์
[in] keyId
ตัวระบุคีย์เซสชัน
[in] peerNodeId
ตัวระบุโหนดของแอปเทียบเท่า
แสดงผลค่า
bool
ระบุว่าแชร์เซสชันที่ระบุหรือไม่

เข้าร่วมที่มีอยู่แล้ว

WEAVE_ERROR JoinExistingFabric(
  const uint8_t *fabricState,
  uint32_t fabricStateLen
)

ลงทะเบียนเซสชันสิ้นสุดการโทร

WEAVE_ERROR RegisterSessionEndCallback(
  SessionEndCbCtxt *sessionEndCb
)

นํา IDIdleเซสชัน

bool RemoveIdleSessionKeys()

นําเซสชันออก

WEAVE_ERROR RemoveSessionKey(
  uint16_t keyId,
  uint64_t peerNodeId
)

นําเซสชันออก

void RemoveSessionKey(
  WeaveSessionKey *sessionKey,
  bool wasIdle
)

นําเซสชันที่มีการแชร์ออก

void RemoveSharedSessionEndNodes(
  const WeaveSessionKey *sessionKey
)

คืนค่าเซสชัน

WEAVE_ERROR RestoreSession(
  uint8_t *serializedSession,
  uint16_t serializedSessionLen
)

กู้คืนเซสชันความปลอดภัยของ Weave ที่ถูกระงับก่อนหน้านี้จากสถานะแบบเรียงอันดับ

เลือกที่อยู่

IPAddress SelectNodeAddress(
  uint64_t nodeId,
  uint16_t subnet
) const 

แสดงผล IPAddress ที่มี Weave ULA สําหรับโหนดที่ระบุ

ตัวแปรนี้ช่วยให้ระบุซับเน็ตได้

รายละเอียด
พารามิเตอร์
[in] nodeId
หมายเลขรหัสโหนดของโหนดที่ต้องการ
[in] subnet
ซับเน็ตที่ต้องการของ ULA
แสดงผลค่า
IPAddress
ออบเจ็กต์ IPAddress

เลือกที่อยู่

IPAddress SelectNodeAddress(
  uint64_t nodeId
) const 

แสดงผล IPAddress ที่มี Weave ULA สําหรับโหนดที่ระบุ

ตัวแปรนี้ใช้ซับเน็ตเริ่มต้น&#39 ของโหนดในเครื่อง

รายละเอียด
พารามิเตอร์
[in] nodeId
หมายเลขรหัสโหนดของโหนดที่ต้องการ
แสดงผลค่า
IPAddress
ออบเจ็กต์ IPAddress

ผู้รับมอบสิทธิ์

void SetDelegate(
  FabricStateDelegate *aDelegate
)

เมธอดนี้จะกําหนดออบเจ็กต์การมอบสิทธิ์

เราจะเรียกใช้เมธอดเรียกกลับของผู้รับมอบสิทธิ์เมื่อใดก็ตามที่มีการเปลี่ยนแปลง FabricId เช่น เมื่อเราเข้าร่วม/สร้างผ้า หรือเมื่อเราทิ้งผ้า (สถานะผ้าที่ชัดเจน)

หากมีการมอบสิทธิ์ไว้ก่อนหน้านี้ การเรียกใช้วิธีนี้ครั้งที่ 2 จะเขียนทับการมอบสิทธิ์ก่อนหน้านี้

รายละเอียด
พารามิเตอร์
[in] aDelegate
ออบเจ็กต์การมอบสิทธิ์ โดยอาจเป็นค่าว่างได้โดยไม่ต้องมีผู้รับมอบสิทธิ์

คีย์ตั้งค่าเซสชัน

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

คีย์ตั้งค่าเซสชัน

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

ปิดการทำงาน

WEAVE_ERROR Shutdown(
  void
)

ระงับเซสชัน

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

ระงับและจําลองสถานะของเซสชันความปลอดภัย Weave ที่ใช้งานอยู่

แยกสถานะเซสชันความปลอดภัย Weave ที่ระบุเป็นบัฟเฟอร์ที่มีให้และระงับเซสชันดังกล่าวเพื่อให้ส่งหรือรับข้อความไม่ได้อีก

เมธอดนี้มีไว้เพื่อใช้งานโดยอุปกรณ์ที่ไม่ได้รักษา RAM ขณะนอนหลับ จึงช่วยให้อุปกรณ์รักษาสถานะเซสชันที่ใช้งานอยู่ได้ จึงช่วยให้ไม่จําเป็นต้องสร้างเซสชันอีกครั้งเมื่อตื่น

WeaveFabricState

 WeaveFabricState(
  void
)