class TTTLS13::Message::Extension::SupportedGroups

Attributes

extension_type[R]
named_group_list[R]

Public Class Methods

deserialize(binary) click to toggle source

@param binary [String]

@raise [TTTLS13::Error::ErrorAlerts]

@return [TTTLS13::Message::Extension::SupportedGroups, nil] rubocop: disable Metrics/CyclomaticComplexity

# File lib/tttls1.3/message/extension/supported_groups.rb, line 35
def self.deserialize(binary)
  raise Error::ErrorAlerts, :internal_error if binary.nil?

  return nil if binary.length < 2

  nglist_len = Convert.bin2i(binary.slice(0, 2))
  i = 2
  named_group_list = []
  while i < nglist_len + 2
    return nil if i + 2 > binary.length

    named_group_list << binary.slice(i, 2)
    i += 2
  end
  return nil unless i == binary.length &&
                    nglist_len + 2 == binary.length

  SupportedGroups.new(named_group_list)
end
new(named_group_list) click to toggle source

@param named_group_list [Array of NamedGroup]

@raise [TTTLS13::Error::ErrorAlerts]

# File lib/tttls1.3/message/extension/supported_groups.rb, line 15
def initialize(named_group_list)
  @extension_type = ExtensionType::SUPPORTED_GROUPS
  @named_group_list = named_group_list || []
  raise Error::ErrorAlerts, :internal_error \
    if @named_group_list.empty? || @named_group_list.length >= 2**15 - 1
end

Public Instance Methods

serialize() click to toggle source

@return [String]

# File lib/tttls1.3/message/extension/supported_groups.rb, line 23
def serialize
  binary = @named_group_list.join

  @extension_type + binary.prefix_uint16_length.prefix_uint16_length
end