async def activate_session(self, username: str = None, password: str = None, certificate=None): """ Activate session using either username and password or private_key """ params = ua.ActivateSessionParameters() challenge = b"" if self.security_policy.peer_certificate is not None: challenge += self.security_policy.peer_certificate if self._server_nonce is not None: challenge += self._server_nonce if self.security_policy.AsymmetricSignatureURI: params.ClientSignature.Algorithm = self.security_policy.AsymmetricSignatureURI else: params.ClientSignature.Algorithm = ( security_policies.SecurityPolicyBasic256.AsymmetricSignatureURI ) params.ClientSignature.Signature = self.security_policy.asymmetric_cryptography.signature( challenge) params.LocaleIds.append("en") if not username and not certificate: self._add_anonymous_auth(params) elif certificate: self._add_certificate_auth(params, certificate, challenge) else: self._add_user_auth(params, username, password) return await self.uaclient.activate_session(params)
async def activate_session(self, username: str = None, password: str = None, certificate=None): """ Activate session using either username and password or private_key """ params = ua.ActivateSessionParameters() challenge = b"" if self.security_policy.server_certificate is not None: challenge += self.security_policy.server_certificate if self._server_nonce is not None: challenge += self._server_nonce params.ClientSignature.Algorithm = "http://www.w3.org/2000/09/xmldsig#rsa-sha1" params.ClientSignature.Signature = self.security_policy.asymmetric_cryptography.signature(challenge) params.LocaleIds.append("en") if not username and not certificate: self._add_anonymous_auth(params) elif certificate: self._add_certificate_auth(params, certificate, challenge) else: self._add_user_auth(params, username, password) return await self.uaclient.activate_session(params)