diff --git a/src/sakia/gui/sub/transfer/controller.py b/src/sakia/gui/sub/transfer/controller.py
index c1e19e6ba76660654ccdeb78c80551cbba04b162..e15713fa6c3656135c9f2963bac736b0b07218a4 100644
--- a/src/sakia/gui/sub/transfer/controller.py
+++ b/src/sakia/gui/sub/transfer/controller.py
@@ -334,7 +334,11 @@ class TransferController(QObject):
         source = self.model.current_source
         condition = pypeg2.parse(source.conditions, Condition)
         result, _errors = self.model.app.sources_service.evaluate_condition(
-            self.model.app.currency, condition, [], [], source.identifier
+            self.model.app.currency,
+            condition,
+            [self.model.connection.pubkey],
+            [],
+            source.identifier,
         )
         if result:
             message = QCoreApplication.translate(
diff --git a/src/sakia/services/documents.py b/src/sakia/services/documents.py
index fc9e98bf2d61171214ccae6cbfde229800145963..2ca92823fcfca45592c9b9836b227219ba43d8be 100644
--- a/src/sakia/services/documents.py
+++ b/src/sakia/services/documents.py
@@ -302,7 +302,7 @@ class DocumentsService:
         :param int amount: The amount target value
         :param int amount_base: The amount base target value
         :param str currency: The community target of the transaction
-        :param str key: The key owning the sources
+        :param SigningKey key: The key owning the sources
         :return: The list of inputs to use in the transaction document
         """
 
@@ -332,7 +332,7 @@ class DocumentsService:
                     condition = pypeg2.parse(s.conditions, Condition)
                     # evaluate the condition
                     result, _ = self._sources_services.evaluate_condition(
-                        currency, condition, [key], [], s.identifier
+                        currency, condition, [key.pubkey], [], s.identifier
                     )
                     if not result:
                         continue
diff --git a/src/sakia/services/sources.py b/src/sakia/services/sources.py
index 152066eed21ba87c74759c4526dfc76937a77c05..7e5a8a321ff1c8c23848248004d11f51ce55b091 100644
--- a/src/sakia/services/sources.py
+++ b/src/sakia/services/sources.py
@@ -279,7 +279,7 @@ class SourcesServices(QObject):
         self,
         currency: str,
         condition: Condition,
-        keys: list,
+        pubkeys: list,
         passwords: list,
         identifier: str,
         result: bool = False,
@@ -291,11 +291,12 @@ class SourcesServices(QObject):
 
         :param str currency: Name of currency
         :param Condition condition: Condition instance
-        :param [SigningKey] keys: Keys to unlock condition
+        :param [str] pubkeys: Keys to unlock condition
         :param [str] passwords: List of passwords
         :param str identifier: Source transaction identifier
         :param bool result: Evaluation result accumulator
-        :param [tuple] _errors: List of tuple with parameters returning false (parameter: str, message: str, param: int)
+        :param [tuple] _errors: List of tuple with infos on condition returning false (condition: str, message: str,
+         param: str|int)
         :return:
         """
         left = False
@@ -304,17 +305,29 @@ class SourcesServices(QObject):
         if isinstance(condition.left, Condition):
             # evaluate condition
             left, _errors = self.evaluate_condition(
-                currency, condition.left, keys, passwords, identifier, result, _errors
+                currency,
+                condition.left,
+                pubkeys,
+                passwords,
+                identifier,
+                result,
+                _errors,
             )
         # if right param is a condition...
         if isinstance(condition.right, Condition):
             # evaluate condition
             right, _errors = self.evaluate_condition(
-                currency, condition.right, keys, passwords, identifier, result, _errors
+                currency,
+                condition.right,
+                pubkeys,
+                passwords,
+                identifier,
+                result,
+                _errors,
             )
         # if left param is a SIG...
         if isinstance(condition.left, SIG):
-            if condition.left.pubkey in (key.pubkey for key in keys):
+            if condition.left.pubkey in pubkeys:
                 left = True
             else:
                 if _errors is None:
@@ -388,7 +401,7 @@ class SourcesServices(QObject):
 
         # if right param is a SIG...
         if isinstance(condition.right, SIG):
-            if condition.right.pubkey in (key.pubkey for key in keys):
+            if condition.right.pubkey in pubkeys:
                 right = True
             else:
                 if _errors is None:
diff --git a/tests/unit/services/test_sources.py b/tests/unit/services/test_sources.py
index e42fc7c2bcbf54add327bc108ec606180a360cbb..2a098a5269c5617ff39ec9682ef08fb95da249a6 100644
--- a/tests/unit/services/test_sources.py
+++ b/tests/unit/services/test_sources.py
@@ -127,7 +127,11 @@ def test_evaluate_condition_source_lock_mode_0(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [bob.key], [], tx_hash
+        application_with_one_connection.currency,
+        condition,
+        [bob.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is True
     assert _errors is None
@@ -137,7 +141,11 @@ def test_evaluate_condition_source_lock_mode_0(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [alice.key], [], tx_hash,
+        application_with_one_connection.currency,
+        condition,
+        [alice.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is False
     assert _errors == [
@@ -215,7 +223,11 @@ def test_evaluate_condition_source_lock_mode_1(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [bob.key], [], tx_hash
+        application_with_one_connection.currency,
+        condition,
+        [bob.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is True
     assert _errors == [
@@ -232,7 +244,11 @@ def test_evaluate_condition_source_lock_mode_1(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [alice.key], [], tx_hash,
+        application_with_one_connection.currency,
+        condition,
+        [alice.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is False
     assert _errors == [
@@ -289,7 +305,11 @@ def test_evaluate_condition_source_lock_mode_1(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [bob.key], [], tx_hash
+        application_with_one_connection.currency,
+        condition,
+        [bob.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is True
     assert _errors == [
@@ -305,7 +325,11 @@ def test_evaluate_condition_source_lock_mode_1(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [alice.key], [], tx_hash,
+        application_with_one_connection.currency,
+        condition,
+        [alice.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is True
     assert _errors == [
@@ -378,7 +402,11 @@ def test_evaluate_condition_source_multisig(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [bob.key], [], tx_hash
+        application_with_one_connection.currency,
+        condition,
+        [bob.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is False
     assert _errors == [
@@ -394,7 +422,11 @@ def test_evaluate_condition_source_multisig(
         result,
         _errors,
     ) = application_with_one_connection.sources_service.evaluate_condition(
-        application_with_one_connection.currency, condition, [alice.key], [], tx_hash,
+        application_with_one_connection.currency,
+        condition,
+        [alice.key.pubkey],
+        [],
+        tx_hash,
     )
     assert result is False
     assert _errors == [
@@ -412,7 +444,7 @@ def test_evaluate_condition_source_multisig(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         condition,
-        [alice.key, bob.key],
+        [alice.key.pubkey, bob.key.pubkey],
         [],
         tx_hash,
     )
@@ -570,7 +602,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx2_condition,
-        [alice.key],
+        [alice.key.pubkey],
         [password],
         tx2_hash,
     )
@@ -597,7 +629,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx1_condition,
-        [bob.key],
+        [bob.key.pubkey],
         [password],
         tx1_hash,
     )
@@ -623,7 +655,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx1_condition,
-        [bob.key, alice.key],
+        [bob.key.pubkey, alice.key.pubkey],
         [password],
         tx1_hash,
     )
@@ -639,7 +671,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx2_condition,
-        [bob.key, alice.key],
+        [bob.key.pubkey, alice.key.pubkey],
         [password],
         tx2_hash,
     )
@@ -655,7 +687,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx2_condition,
-        [alice.key],
+        [alice.key.pubkey],
         [],
         tx2_hash,
     )
@@ -686,7 +718,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx1_condition,
-        [bob.key],
+        [bob.key.pubkey],
         [],
         tx1_hash,
     )
@@ -797,7 +829,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx1_condition,
-        [alice.key],
+        [alice.key.pubkey],
         [],
         tx1_hash,
     )
@@ -827,7 +859,7 @@ def test_evaluate_condition_source_atomic_swap(
     ) = application_with_one_connection.sources_service.evaluate_condition(
         application_with_one_connection.currency,
         tx2_condition,
-        [bob.key],
+        [bob.key.pubkey],
         [],
         tx2_hash,
     )