MCPcopy Create free account
hub / github.com/FreeOpcUa/python-opcua / open

Method open

opcua/common/connection.py:164–193  ·  view source on GitHub ↗

called on server side to open secure channel

(self, params, server)

Source from the content-addressed store, hash-verified

162 self._allow_prev_token = True
163
164 def open(self, params, server):
165 """
166 called on server side to open secure channel
167 """
168
169 self.local_nonce = ua.utils.create_nonce(self.security_policy.symmetric_key_size)
170 self.remote_nonce = params.ClientNonce
171 response = ua.OpenSecureChannelResult()
172 response.ServerNonce = self.local_nonce
173
174 if not self._open or params.RequestType == ua.SecurityTokenRequestType.Issue:
175 self._open = True
176 self.security_token.TokenId = 13 # random value
177 self.security_token.ChannelId = server.get_new_channel_id()
178 self.security_token.RevisedLifetime = params.RequestedLifetime
179 self.security_token.CreatedAt = datetime.utcnow()
180
181 response.SecurityToken = self.security_token
182
183 self.security_policy.make_local_symmetric_key(self.remote_nonce, self.local_nonce)
184 self.security_policy.make_remote_symmetric_key(self.local_nonce, self.remote_nonce)
185 else:
186 self.next_security_token = copy.deepcopy(self.security_token)
187 self.next_security_token.TokenId += 1
188 self.next_security_token.RevisedLifetime = params.RequestedLifetime
189 self.next_security_token.CreatedAt = datetime.utcnow()
190
191 response.SecurityToken = self.next_security_token
192
193 return response
194
195 def close(self):
196 self._open = False

Callers 4

open_secure_channelMethod · 0.80
make_aspace_shelfMethod · 0.80
load_aspace_shelfMethod · 0.80
runTestMethod · 0.80

Calls 3

get_new_channel_idMethod · 0.80

Tested by 1

runTestMethod · 0.64