@@ -25,6 +25,7 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
25
25
26
26
private var entryPeerKey : EphemeralPeerKey !
27
27
private var exitPeerKey : EphemeralPeerKey !
28
+ private var daitaParameters : DaitaV2Parameters ?
28
29
29
30
private let defaultGatewayAddressRange = [ IPAddressRange ( from: " \( LocalNetworkIPs . gatewayAddress. rawValue) /32 " ) !]
30
31
private let allTrafficRange = [
@@ -66,7 +67,11 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
66
67
await negotiateWithEntry ( )
67
68
}
68
69
69
- public func receiveEphemeralPeerPrivateKey( _ ephemeralPeerPrivateKey: PrivateKey ) async {
70
+ public func receiveEphemeralPeerPrivateKey(
71
+ _ ephemeralPeerPrivateKey: PrivateKey ,
72
+ daitaParameters: DaitaV2Parameters ?
73
+ ) async {
74
+ self . daitaParameters = daitaParameters
70
75
if state == . negotiatingWithEntry {
71
76
entryPeerKey = EphemeralPeerKey ( ephemeralKey: ephemeralPeerPrivateKey)
72
77
await negotiateBetweenEntryAndExit ( )
@@ -78,8 +83,10 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
78
83
79
84
func receivePostQuantumKey(
80
85
_ preSharedKey: PreSharedKey ,
81
- ephemeralKey: PrivateKey
86
+ ephemeralKey: PrivateKey ,
87
+ daitaParameters: DaitaV2Parameters ?
82
88
) async {
89
+ self . daitaParameters = daitaParameters
83
90
if state == . negotiatingWithEntry {
84
91
entryPeerKey = EphemeralPeerKey ( preSharedKey: preSharedKey, ephemeralKey: ephemeralKey)
85
92
await negotiateBetweenEntryAndExit ( )
@@ -95,7 +102,8 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
95
102
relay: entry,
96
103
configuration: EphemeralPeerConfiguration (
97
104
privateKey: devicePrivateKey,
98
- allowedIPs: defaultGatewayAddressRange
105
+ allowedIPs: defaultGatewayAddressRange,
106
+ daitaParameters: daitaParameters
99
107
)
100
108
) ) )
101
109
keyExchanger. startNegotiation (
@@ -113,14 +121,16 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
113
121
configuration: EphemeralPeerConfiguration (
114
122
privateKey: entryPeerKey. ephemeralKey,
115
123
preSharedKey: entryPeerKey. preSharedKey,
116
- allowedIPs: [ IPAddressRange ( from: " \( exit. endpoint. ipv4Relay. ip) /32 " ) !]
124
+ allowedIPs: [ IPAddressRange ( from: " \( exit. endpoint. ipv4Relay. ip) /32 " ) !] ,
125
+ daitaParameters: self . daitaParameters
117
126
)
118
127
) ,
119
128
exit: EphemeralPeerRelayConfiguration (
120
129
relay: exit,
121
130
configuration: EphemeralPeerConfiguration (
122
131
privateKey: devicePrivateKey,
123
- allowedIPs: defaultGatewayAddressRange
132
+ allowedIPs: defaultGatewayAddressRange,
133
+ daitaParameters: self . daitaParameters
124
134
)
125
135
)
126
136
) )
@@ -140,15 +150,17 @@ final class MultiHopEphemeralPeerExchanger: EphemeralPeerExchangingProtocol {
140
150
configuration: EphemeralPeerConfiguration (
141
151
privateKey: entryPeerKey. ephemeralKey,
142
152
preSharedKey: entryPeerKey. preSharedKey,
143
- allowedIPs: [ IPAddressRange ( from: " \( exit. endpoint. ipv4Relay. ip) /32 " ) !]
153
+ allowedIPs: [ IPAddressRange ( from: " \( exit. endpoint. ipv4Relay. ip) /32 " ) !] ,
154
+ daitaParameters: self . daitaParameters
144
155
)
145
156
) ,
146
157
exit: EphemeralPeerRelayConfiguration (
147
158
relay: exit,
148
159
configuration: EphemeralPeerConfiguration (
149
160
privateKey: exitPeerKey. ephemeralKey,
150
161
preSharedKey: exitPeerKey. preSharedKey,
151
- allowedIPs: allTrafficRange
162
+ allowedIPs: allTrafficRange,
163
+ daitaParameters: self . daitaParameters
152
164
)
153
165
)
154
166
) )
0 commit comments