Class: TTTLS13::Message::EncryptedExtensions

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(extensions = Extensions.new) ⇒ EncryptedExtensions

Returns a new instance of EncryptedExtensions.

Parameters:



27
28
29
30
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 27

def initialize(extensions = Extensions.new)
  @msg_type = HandshakeType::ENCRYPTED_EXTENSIONS
  @extensions = extensions || Extensions.new
end

Instance Attribute Details

#extensionsObject (readonly)

Returns the value of attribute extensions.



24
25
26
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 24

def extensions
  @extensions
end

#msg_typeObject (readonly)

Returns the value of attribute msg_type.



23
24
25
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 23

def msg_type
  @msg_type
end

Class Method Details

.deserialize(binary) ⇒ TTTLS13::Message::EncryptedExtensions

Parameters:

  • binary (String)

Returns:

Raises:



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 44

def self.deserialize(binary)
  raise Error::ErrorAlerts, :internal_error if binary.nil?
  raise Error::ErrorAlerts, :decode_error if binary.length < 6
  raise Error::ErrorAlerts, :internal_error \
    unless binary[0] == HandshakeType::ENCRYPTED_EXTENSIONS

  ee_len = Convert.bin2i(binary.slice(1, 3))
  exs_len = Convert.bin2i(binary.slice(4, 2))
  extensions = Extensions.deserialize(binary.slice(6, exs_len),
                                      HandshakeType::ENCRYPTED_EXTENSIONS)
  raise Error::ErrorAlerts, :decode_error \
    unless exs_len + 2 == ee_len && exs_len + 6 == binary.length

  EncryptedExtensions.new(extensions)
end

Instance Method Details

#appearable_extensions?Boolean

Returns:

  • (Boolean)


61
62
63
64
65
66
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 61

def appearable_extensions?
  exs = @extensions.keys - APPEARABLE_EE_EXTENSIONS
  return true if exs.empty?

  !(exs - DEFINED_EXTENSIONS).empty?
end

#serializeString Also known as: fragment

Returns:

  • (String)


33
34
35
# File 'lib/tttls1.3/message/encrypted_extensions.rb', line 33

def serialize
  @msg_type + @extensions.serialize.prefix_uint24_length
end