@@ -105,31 +105,31 @@ def <<(ex)
105
105
store ( ex . extension_type , ex )
106
106
end
107
107
108
- # @param ex_types [Array of TTTLS13::Message::ExtensionType]
108
+ # removing and replacing extensions from EncodedClientHelloInner
109
+ # with a single "ech_outer_extensions"
110
+ #
111
+ # for example
112
+ # - before
113
+ # - self.keys: [A B C D E]
114
+ # - param : [D B]
115
+ # - after remove_and_replace!
116
+ # - self.keys: [A C E B D]
117
+ # - return : [A C E ech_outer_extensions[B D]]
118
+ # @param outer_extensions [Array of TTTLS13::Message::ExtensionType]
109
119
#
110
120
# @return [TTTLS13::Message::Extensions] for EncodedClientHelloInner
111
- def remove_and_replace! ( ex_types )
112
- # NOTE: sort external_extensions in descending order.
113
- tmp1 = filter { |k , _ | ! ex_types . include? ( k ) }
114
- tmp2 = filter { | k , _ | ex_types . include? ( k ) } . sort
121
+ def remove_and_replace! ( outer_extensions )
122
+ tmp1 = filter { | k , _ | ! outer_extensions . include? ( k ) }
123
+ tmp2 = filter { |k , _ | outer_extensions . include? ( k ) }
124
+
115
125
clear
116
- tmp1 . each { |k , v | self [ k ] = v }
117
- tmp2 . each { |k , v | self [ k ] = v }
118
-
119
- # removing and replacing extensions from EncodedClientHelloInner
120
- # with a single "ech_outer_extensions"
121
- reduce ( Message ::Extensions . new ) do |acc , ( k , v ) |
122
- if ex_types . include? ( k ) &&
123
- !acc . include? ( Message ::ExtensionType ::ECH_OUTER_EXTENSIONS )
124
- outer_extensions = ( ex_types - ( ex_types - keys ) ) . sort
125
- acc [ Message ::ExtensionType ::ECH_OUTER_EXTENSIONS ] = \
126
- Message ::Extension ::ECHOuterExtensions . new ( outer_extensions )
127
- elsif !ex_types . include? ( k )
128
- acc [ k ] = v
129
- end
126
+ replaced = Message ::Extensions . new
127
+ tmp1 . each { |_ , v | self << v ; replaced << v }
128
+ tmp2 . each { |_ , v | self << v }
130
129
131
- acc
132
- end
130
+ replaced << Message ::Extension ::ECHOuterExtensions . new ( tmp2 . keys ) \
131
+ unless tmp2 . keys . empty?
132
+ replaced
133
133
end
134
134
135
135
class << self
0 commit comments