class Matter::SessionManager

Overview

SessionManager manages secure communication sessions

Matter uses two types of sessions:

During failsafe rollback, PASE sessions must be cleared to prevent unauthorized access if commissioning fails.

Matter Core Spec ยง4.13 - Secure Channel Protocol

Defined in:

matter/session_manager.cr

Constant Summary

Log = ::Log.for("matter.session_manager")

Constructors

Instance Method Summary

Constructor Detail

def self.new #

[View source]

Instance Method Detail

def add_case_session(session : CaseSession) : Nil #

Add an existing CASE session


[View source]
def add_pase_session(session : PaseSession) : Nil #

Add an existing PASE session


[View source]
def case_session_count : Int32 #

Get count of active CASE sessions


[View source]
def case_session_ids : Array(UInt16) #

Get all CASE session IDs


[View source]
def clear_all_sessions : Nil #

Clear all sessions


[View source]
def clear_case_sessions : Nil #

Clear all CASE sessions (typically used for device reset)


[View source]
def clear_pase_sessions : Nil #

Clear all PASE sessions

This is called during failsafe rollback to remove all PASE sessions established during commissioning. This ensures that if commissioning fails, the temporary authenticated sessions are removed.


[View source]
def create_case_session(session_id : UInt16, fabric_index : UInt8, peer_node_id : UInt64, vendor_id : UInt16 = 65521_u16) : CaseSession #

Create a new CASE session


[View source]
def create_pase_session(session_id : UInt16) : PaseSession #

Create a new PASE session


[View source]
def get_case_session(session_id : UInt16) : CaseSession | Nil #

Get a CASE session by ID


[View source]
def get_fabric_sessions(fabric_index : UInt8) : Array(CaseSession) #

Get all CASE sessions for a specific fabric


[View source]
def get_pase_session(session_id : UInt16) : PaseSession | Nil #

Get a PASE session by ID


[View source]
def has_case_session?(session_id : UInt16) : Bool #

Check if a CASE session exists


[View source]
def has_pase_session?(session_id : UInt16) : Bool #

Check if a PASE session exists


[View source]
def pase_session_count : Int32 #

Get count of active PASE sessions


[View source]
def pase_session_ids : Array(UInt16) #

Get all PASE session IDs


[View source]
def remove_case_session(session_id : UInt16) : CaseSession | Nil #

Remove a specific CASE session


[View source]
def remove_fabric_sessions(fabric_index : UInt8) : Int32 #

Remove all CASE sessions for a specific fabric


[View source]
def remove_pase_session(session_id : UInt16) : PaseSession | Nil #

Remove a specific PASE session


[View source]
def total_session_count : Int32 #

Get total session count


[View source]