class Matter::Session::SecureContext

Overview

Secure session context holding encryption keys and state

Defined in:

matter/session/context.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(session_id : UInt16, peer_session_id : UInt16, session_type : SessionType, encryption_key : Bytes, decryption_key : Bytes, is_initiator : Bool = true, peer_node_id : DataType::NodeId | Nil = nil, local_node_id : DataType::NodeId | Nil = nil, attestation_challenge : Bytes | Nil = nil) #

[View source]

Instance Method Detail

def attestation_challenge : Bytes | Nil #

[View source]
def attestation_challenge=(attestation_challenge : Bytes | Nil) #

[View source]
def creation_time : Time #

Session metadata


[View source]
def creation_time=(creation_time : Time) #

Session metadata


[View source]
def decryption_key : Bytes #

[View source]
def decryption_key=(decryption_key : Bytes) #

[View source]
def encryption_key : Bytes #

Encryption keys


[View source]
def encryption_key=(encryption_key : Bytes) #

Encryption keys


[View source]
def expired?(idle_timeout : Time::Span = 5.minutes) : Bool #

Check if session is expired based on idle time


[View source]
def is_initiator : Bool #

[View source]
def is_initiator=(is_initiator : Bool) #

[View source]
def last_activity_time : Time #

[View source]
def last_activity_time=(last_activity_time : Time) #

[View source]
def local_message_counter : UInt32 #

Message counters for replay protection


[View source]
def local_message_counter=(local_message_counter : UInt32) #

Message counters for replay protection


[View source]
def local_node_id : DataType::NodeId | Nil #

[View source]
def local_node_id=(local_node_id : DataType::NodeId | Nil) #

[View source]
def max_message_counter : UInt32 #

[View source]
def max_message_counter=(max_message_counter : UInt32) #

[View source]
def next_message_counter : UInt32 #

Get the next message counter and increment


[View source]
def peer_message_counter : UInt32 | Nil #

[View source]
def peer_message_counter=(peer_message_counter : UInt32 | Nil) #

[View source]
def peer_node_id : DataType::NodeId | Nil #

[View source]
def peer_node_id=(peer_node_id : DataType::NodeId | Nil) #

[View source]
def peer_session_id : UInt16 #

[View source]
def peer_session_id=(peer_session_id : UInt16) #

[View source]
def session_id : UInt16 #

[View source]
def session_id=(session_id : UInt16) #

[View source]
def session_type : SessionType #

[View source]
def session_type=(session_type : SessionType) #

[View source]
def set_last_activity_time(time : Time) #

Set activity time (for testing)


[View source]
def update_activity #

Update activity timestamp


[View source]
def validate_message_counter(received_counter : UInt32) : Bool #

Validate received message counter (prevent replay attacks)


[View source]