class TTTLS13::Message::Extension::SignatureAlgorithms

Constants

DEFAULT_SIGNATURE_ALGORITHMS

Attributes

extension_type[RW]
supported_signature_algorithms[R]

Public Class Methods

deserialize(binary) click to toggle source

@param binary [String]

@return [TTTLS13::Message::Extensions::SignatureAlgorithms, nil]

# File lib/tttls1.3/message/extension/signature_algorithms.rb, line 70
def self.deserialize(binary)
  ssa = deserialize_supported_signature_algorithms(binary)
  return nil if ssa.nil?

  SignatureAlgorithms.new(ssa)
end
deserialize_supported_signature_algorithms(binary) click to toggle source

@param binary [String]

@raise [TTTLS13::Error::ErrorAlerts]

@return [Array of SignatureScheme]

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

  return nil if binary.length < 2

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

    supported_signature_algorithms << binary.slice(i, 2)
    i += 2
  end
  return nil unless ssa_len + 2 == binary.length

  supported_signature_algorithms
end
new(supported_signature_algorithms) click to toggle source

@param supported_signature_algorithms [Array of SignatureScheme]

# File lib/tttls1.3/message/extension/signature_algorithms.rb, line 28
def initialize(supported_signature_algorithms)
  @extension_type = ExtensionType::SIGNATURE_ALGORITHMS
  @supported_signature_algorithms = supported_signature_algorithms || []
  raise Error::ErrorAlerts, :internal_error \
    if @supported_signature_algorithms.empty? ||
       @supported_signature_algorithms.length * 2 > 2**16 - 3
end

Public Instance Methods

serialize() click to toggle source

@return [String]

# File lib/tttls1.3/message/extension/signature_algorithms.rb, line 37
def serialize
  binary = @supported_signature_algorithms.join

  @extension_type + binary.prefix_uint16_length.prefix_uint16_length
end