Commit f182d979 authored by olivier R-D's avatar olivier R-D

one more test for crypto

parent 7dfc174c
...@@ -125,8 +125,7 @@ class Client(object): ...@@ -125,8 +125,7 @@ class Client(object):
return return
parts = string.split(',') parts = string.split(',')
if len(parts) < 4: if len(parts) < 4:
raise ua.UaError('Wrong format: `{}`, expected at least 4 ' raise ua.UaError('Wrong format: `{}`, expected at least 4 comma-separated values'.format(string))
'comma-separated values'.format(string))
policy_class = getattr(security_policies, 'SecurityPolicy' + parts[0]) policy_class = getattr(security_policies, 'SecurityPolicy' + parts[0])
mode = getattr(ua.MessageSecurityMode, parts[1]) mode = getattr(ua.MessageSecurityMode, parts[1])
return self.set_security(policy_class, parts[2], parts[3], return self.set_security(policy_class, parts[2], parts[3],
...@@ -158,6 +157,9 @@ class Client(object): ...@@ -158,6 +157,9 @@ class Client(object):
self.user_certificate = uacrypto.load_certificate(path) self.user_certificate = uacrypto.load_certificate(path)
def load_private_key(self, path): def load_private_key(self, path):
"""
Load user private key. This is used for authenticating using certificate
"""
self.user_private_key = uacrypto.load_private_key(path) self.user_private_key = uacrypto.load_private_key(path)
def connect_and_get_server_endpoints(self): def connect_and_get_server_endpoints(self):
...@@ -295,6 +297,11 @@ class Client(object): ...@@ -295,6 +297,11 @@ class Client(object):
return self.uaclient.find_servers_on_network(params) return self.uaclient.find_servers_on_network(params)
def create_session(self): def create_session(self):
"""
send a CreateSessionRequest to server with reasonable parameters.
If you want o modify settings look at code of this methods
and make your own
"""
desc = ua.ApplicationDescription() desc = ua.ApplicationDescription()
desc.ApplicationUri = self.application_uri desc.ApplicationUri = self.application_uri
desc.ProductUri = self.product_uri desc.ProductUri = self.product_uri
......
...@@ -3,6 +3,7 @@ import unittest ...@@ -3,6 +3,7 @@ import unittest
from opcua import Client from opcua import Client
from opcua import Server from opcua import Server
from opcua import ua from opcua import ua
from opcua.crypto import security_policies
port_num1 = 48515 port_num1 = 48515
port_num2 = 48512 port_num2 = 48512
...@@ -60,5 +61,59 @@ class TestCryptoConnect(unittest.TestCase): ...@@ -60,5 +61,59 @@ class TestCryptoConnect(unittest.TestCase):
finally: finally:
clt.disconnect() clt.disconnect()
def test_basic256_encrypt(self):
clt = Client(self.uri_crypto)
try:
clt.set_security_string("Basic256,SignAndEncrypt,examples/example-certificate.der,examples/example-private-key.pem")
clt.connect()
self.assertTrue(clt.get_objects_node().get_children())
finally:
clt.disconnect()
def test_basic128Rsa15(self):
clt = Client(self.uri_crypto)
try:
clt.set_security_string("Basic128Rsa15,Sign,examples/example-certificate.der,examples/example-private-key.pem")
clt.connect()
self.assertTrue(clt.get_objects_node().get_children())
finally:
clt.disconnect()
def test_basic128Rsa15_encrypt(self):
clt = Client(self.uri_crypto)
try:
clt.set_security_string("Basic128Rsa15,SignAndEncrypt,examples/example-certificate.der,examples/example-private-key.pem")
clt.connect()
self.assertTrue(clt.get_objects_node().get_children())
finally:
clt.disconnect()
def test_basic256_encrypt_success(self):
clt = Client(self.uri_crypto)
try:
clt.set_security(security_policies.SecurityPolicyBasic256,
'examples/example-certificate.der',
'examples/example-private-key.pem',
None,
ua.MessageSecurityMode.SignAndEncrypt
)
clt.connect()
self.assertTrue(clt.get_objects_node().get_children())
finally:
clt.disconnect()
def test_basic256_encrypt_feil(self):
# FIXME: how to make it feil???
clt = Client(self.uri_crypto)
with self.assertRaises(ua.UaError):
clt.set_security(security_policies.SecurityPolicyBasic256,
'examples/example-certificate.der',
'examples/example-private-key.pem',
None,
ua.MessageSecurityMode.None_
)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment