Class: EchSpec::Spec::Spec5_1_10::NotSameOrderExtensions

Inherits:
TTTLS13::Message::Extensions
  • Object
show all
Defined in:
lib/echspec/spec/5.1-10.rb

Instance Method Summary collapse

Instance Method Details

#remove_and_replace!(_) ⇒ TTTLS13::Message::Extensions

Returns for EncodedClientHelloInner.

Parameters:

  • _ (Array<TTTLS13::Message::ExtensionType>)

Returns:

  • (TTTLS13::Message::Extensions)

    for EncodedClientHelloInner



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
# File 'lib/echspec/spec/5.1-10.rb', line 200

def remove_and_replace!(_)
  outer_extensions = [
    TTTLS13::Message::ExtensionType::KEY_SHARE,
    TTTLS13::Message::ExtensionType::SUPPORTED_VERSIONS
  ]
  tmp1 = filter { |k, _| !outer_extensions.include?(k) }
  tmp2 = filter { |k, _| outer_extensions.include?(k) }

  clear
  replaced = TTTLS13::Message::Extensions.new

  tmp1.each_value { |v| self << v; replaced << v }
  tmp2.each_value { |v| self << v }
  # extensions in ClientHelloOuter and OuterExtensions are not in the same order.
  replaced << TTTLS13::Message::Extension::ECHOuterExtensions.new(
    tmp2.keys.reverse
  )
  replaced
end