class TTTLS13::Message::Extension::EarlyDataIndication

Attributes

extension_type[R]
max_early_data_size[R]

Public Class Methods

deserialize(binary, msg_type) click to toggle source

@param binary [String] @param msg_type [TTTLS13::Message::ContentType]

@raise [TTTLS13::Error::ErrorAlerts]

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

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

  case msg_type
  when HandshakeType::CLIENT_HELLO, HandshakeType::ENCRYPTED_EXTENSIONS
    return nil unless binary.empty?

    max_early_data_size = nil
  when HandshakeType::NEW_SESSION_TICKET
    return nil unless binary.length == 4

    max_early_data_size = Convert.bin2i(binary)
  else
    raise Error::ErrorAlerts, :internal_error
  end

  EarlyDataIndication.new(max_early_data_size)
end
new(max_early_data_size = nil) click to toggle source

@param max_early_data_size [Integer, nil]

@raise [TTTLS13::Error::ErrorAlerts]

# File lib/tttls1.3/message/extension/early_data_indication.rb, line 15
def initialize(max_early_data_size = nil)
  @extension_type = ExtensionType::EARLY_DATA
  @max_early_data_size = max_early_data_size
  raise Error::ErrorAlerts, :internal_error \
    unless @max_early_data_size.nil? || @max_early_data_size < 2**32
end

Public Instance Methods

serialize() click to toggle source

@return [String]

# File lib/tttls1.3/message/extension/early_data_indication.rb, line 23
def serialize
  binary = ''
  binary = @max_early_data_size.to_uint32 \
    unless @max_early_data_size.nil?

  @extension_type + binary.prefix_uint16_length
end