SecureChannel.open(): called at server-side when client performs a OpenSecureChannelRequest.
SecureChannel.set_channel(): called at client side when it receives a response to above request.
The self._open flag is not set at this point.
Result: SecureChannel.is_open() always reports False at client side.
|
def set_channel(self, channel): |
|
""" |
|
Called on client side when getting secure channel data from server |
|
""" |
|
self.channel = channel |
|
|
|
def open(self, params, server): |
|
""" |
|
called on server side to open secure channel |
|
""" |
|
if not self._open or params.RequestType == ua.SecurityTokenRequestType.Issue: |
|
self._open = True |
|
self.channel = ua.OpenSecureChannelResult() |
|
self.channel.SecurityToken.TokenId = 13 # random value |
|
self.channel.SecurityToken.ChannelId = server.get_new_channel_id() |
|
self.channel.SecurityToken.RevisedLifetime = params.RequestedLifetime |
|
else: |
|
self._old_tokens.append(self.channel.SecurityToken.TokenId) |
|
self.channel.SecurityToken.TokenId += 1 |
|
self.channel.SecurityToken.CreatedAt = datetime.utcnow() |
|
self.channel.SecurityToken.RevisedLifetime = params.RequestedLifetime |
|
self.channel.ServerNonce = ua.utils.create_nonce(self.security_policy.symmetric_key_size) |
|
self.security_policy.make_symmetric_key(self.channel.ServerNonce, params.ClientNonce) |
|
return self.channel |
SecureChannel.open(): called at server-side when client performs a OpenSecureChannelRequest.SecureChannel.set_channel(): called at client side when it receives a response to above request.The self._open flag is not set at this point.
Result:
SecureChannel.is_open()always reports False at client side.python-opcua/opcua/common/connection.py
Lines 146 to 169 in 9c115cd