Class: TTTLS13::Message::Extension::ServerName

Inherits:
Object
  • Object
show all
Defined in:
lib/tttls1.3/message/extension/server_name.rb

Overview

NOTE: The extension_data field SHALL be empty when @server_name is empty. Then, serialized extension_data is

00 00 00 00

tools.ietf.org/html/rfc6066#section-3

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_name) ⇒ ServerName

Returns a new instance of ServerName.

Examples:

ServerName.new('example.com')

Parameters:

  • server_name (String)

Raises:



29
30
31
32
33
34
# File 'lib/tttls1.3/message/extension/server_name.rb', line 29

def initialize(server_name)
  @extension_type = ExtensionType::SERVER_NAME
  @server_name = server_name || ''
  raise Error::ErrorAlerts, :internal_error \
    if @server_name.length > 2**16 - 5
end

Instance Attribute Details

#extension_typeObject (readonly)

Returns the value of attribute extension_type.



20
21
22
# File 'lib/tttls1.3/message/extension/server_name.rb', line 20

def extension_type
  @extension_type
end

#server_nameObject (readonly)

Returns the value of attribute server_name.



21
22
23
# File 'lib/tttls1.3/message/extension/server_name.rb', line 21

def server_name
  @server_name
end

Class Method Details

.deserialize(binary) ⇒ TTTLS13::Message::Extension::ServerName?

Parameters:

  • binary (String)

Returns:

Raises:



56
57
58
59
60
61
62
63
# File 'lib/tttls1.3/message/extension/server_name.rb', line 56

def self.deserialize(binary)
  raise Error::ErrorAlerts, :internal_error if binary.nil?

  return nil if binary.length == 1
  return ServerName.new('') if binary.empty?

  deserialize_host_name(binary)
end

Instance Method Details

#serializeString

Returns:

  • (String)


37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tttls1.3/message/extension/server_name.rb', line 37

def serialize
  return "\x00\x00\x00\x00" if @server_name.empty?

  sn_len = @server_name.length
  binary = ''
  binary += @extension_type
  binary += (sn_len + 5).to_uint16
  binary += (sn_len + 3).to_uint16
  binary += NameType::HOST_NAME
  binary += sn_len.to_uint16
  binary += @server_name
  binary
end