class

Matter::Session::SecureContext

Inherits Reference < Object

Secure session context holding encryption keys and state

Constructors

from_h(h : Hash(String, String | UInt64 | UInt32 | UInt16 | UInt8 | Int64 | Bool)) : SecureContext

Deserialize session from a hash

Source
new(session_id : UInt16, peer_session_id : UInt16, session_type : SessionType, encryption_key : Bytes, decryption_key : Bytes, initiator : Bool = true, peer_node_id : DataType::NodeId | Nil = nil, local_node_id : DataType::NodeId | Nil = nil, attestation_challenge : Bytes | Nil = nil, case_session : Bool = false, fabric_index : UInt8 | Nil = nil)
Source

Instance methods

attestation_challenge
Source
attestation_challenge=(attestation_challenge : Bytes | Nil)
Source
case_session=(case_session : Bool)

Session type and fabric association case_session: true for CASE sessions, false for PASE sessions fabric_index: the fabric index for CASE sessions (nil for PASE)

Source
case_session?

Session type and fabric association case_session: true for CASE sessions, false for PASE sessions fabric_index: the fabric index for CASE sessions (nil for PASE)

Source
creation_time

Session metadata

Source
creation_time=(creation_time : Time)

Session metadata

Source
decryption_key
Source
decryption_key=(decryption_key : Bytes)
Source
encryption_key

Encryption keys

Source
encryption_key=(encryption_key : Bytes)

Encryption keys

Source
expired?(idle_timeout : Time::Span = 5.minutes) : Bool

Check if session is expired based on idle time

Source
fabric_index
Source
fabric_index=(fabric_index : UInt8 | Nil)
Source
initiator=(initiator : Bool)
Source
initiator?
Source
last_activity_time
Source
last_activity_time=(time : Time)

Set activity time (for testing)

Source
local_message_counter

Message counters for replay protection

Source
local_message_counter=(local_message_counter : UInt32)

Message counters for replay protection

Source
local_node_id
Source
local_node_id=(local_node_id : DataType::NodeId | Nil)
Source
max_message_counter
Source
max_message_counter=(max_message_counter : UInt32)
Source
next_message_counter

Get the next message counter and increment

Source
peer_message_counter
Source
peer_message_counter=(peer_message_counter : UInt32 | Nil)
Source
peer_node_id
Source
peer_node_id=(peer_node_id : DataType::NodeId | Nil)
Source
peer_session_id
Source
peer_session_id=(peer_session_id : UInt16)
Source
peer_subject_ids

All authenticated Subject IDs for the peer (NodeId + any CATs). Used for AccessControl evaluation (ACL subjects can be Node IDs or CATs).

Source
peer_subject_ids=(peer_subject_ids : Array(UInt64))

All authenticated Subject IDs for the peer (NodeId + any CATs). Used for AccessControl evaluation (ACL subjects can be Node IDs or CATs).

Source
session_id
Source
session_id=(session_id : UInt16)
Source
session_type
Source
session_type=(session_type : SessionType)
Source
to_h

Serialize session to a hash for JSON persistence

Source
update_activity

Update activity timestamp

Source
validate_message_counter(received_counter : UInt32) : Bool

Validate received message counter (prevent replay attacks)

Source
would_accept_message_counter?(received_counter : UInt32) : Bool

Check if a message counter would be accepted (without updating state) Used for pre-checking duplicates before attempting decryption

Source