Skip to content

Commit 915ce84

Browse files
authored
Merge pull request #97 from thekuwayama/ech_outer_extensions__6
[ech_outer_extensions] 6. mv remove_and_replace!
2 parents 6b9688f + 99bc395 commit 915ce84

File tree

2 files changed

+27
-31
lines changed

2 files changed

+27
-31
lines changed

lib/tttls1.3/ech.rb

-31
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,6 @@
22
# frozen_string_literal: true
33

44
module TTTLS13
5-
module Refinements
6-
refine TTTLS13::Message::Extensions do
7-
# @param ex_types [Array of TTTLS13::Message::ExtensionType]
8-
#
9-
# @return [TTTLS13::Message::Extensions] for EncodedClientHelloInner
10-
define_method(:remove_and_replace!) do |ex_types|
11-
# NOTE: sort external_extensions in descending order.
12-
tmp1 = filter { |k, _| !ex_types.include?(k) }
13-
tmp2 = filter { |k, _| ex_types.include?(k) }.sort
14-
clear
15-
tmp1.each { |k, v| self[k] = v }
16-
tmp2.each { |k, v| self[k] = v }
17-
18-
# removing and replacing extensions from EncodedClientHelloInner
19-
# with a single "ech_outer_extensions"
20-
reduce(Message::Extensions.new) do |acc, (k, v)|
21-
if ex_types.include?(k) &&
22-
!acc.include?(Message::ExtensionType::ECH_OUTER_EXTENSIONS)
23-
outer_extensions = (ex_types - (ex_types - keys)).sort
24-
acc[Message::ExtensionType::ECH_OUTER_EXTENSIONS] = \
25-
Message::Extension::ECHOuterExtensions.new(outer_extensions)
26-
elsif !ex_types.include?(k)
27-
acc[k] = v
28-
end
29-
30-
acc
31-
end
32-
end
33-
end
34-
end
35-
365
using Refinements
376

387
SUPPORTED_ECHCONFIG_VERSIONS = ["\xfe\x0d"].freeze

lib/tttls1.3/message/extensions.rb

+27
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,33 @@ def <<(ex)
105105
store(ex.extension_type, ex)
106106
end
107107

108+
# @param ex_types [Array of TTTLS13::Message::ExtensionType]
109+
#
110+
# @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
115+
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
130+
131+
acc
132+
end
133+
end
134+
108135
class << self
109136
private
110137

0 commit comments

Comments
 (0)