class TTTLS13::Message::Extension::ServerName
NOTE: The extension_data field SHALL be empty when @server_name is empty. Then, serialized extension_data is
00 00 00 00
Attributes
extension_type[R]
server_name[R]
Public Class Methods
deserialize(binary)
click to toggle source
@param binary [String]
@raise [TTTLS13::Error::ErrorAlerts]
@return [TTTLS13::Message::Extension::ServerName, nil]
# 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
new(server_name)
click to toggle source
@param server_name
[String]
@raise [TTTLS13::Error::ErrorAlerts]
@example
ServerName.new('example.com')
# 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
Private Class Methods
deserialize_host_name(binary)
click to toggle source
@param binary [String]
@raise [TTTLS13::Error::ErrorAlerts]
@return [TTTLS13::Message::Extension::ServerName, nil]
# File lib/tttls1.3/message/extension/server_name.rb, line 73 def deserialize_host_name(binary) raise Error::ErrorAlerts, :internal_error if binary.nil? return nil unless binary.length > 5 && binary[2] == NameType::HOST_NAME snlist_len = Convert.bin2i(binary.slice(0, 2)) sn_len = Convert.bin2i(binary.slice(3, 2)) server_name = binary.slice(5, sn_len) return nil unless snlist_len + 2 == binary.length && sn_len + 5 == binary.length ServerName.new(server_name) end
Public Instance Methods
serialize()
click to toggle source
@return [String]
# 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