diff --git a/duniterpy/helpers.py b/duniterpy/helpers.py
index 851b1cbd9ea4fc141d9ca61ef94a3ba09f4f485c..5e7f68b01605c2d4808ec56c8cf696fb5b7bb8b8 100644
--- a/duniterpy/helpers.py
+++ b/duniterpy/helpers.py
@@ -1,6 +1,7 @@
+from typing import Union
 
 
-def ensure_bytes(data):
+def ensure_bytes(data: Union[str, bytes]) -> bytes:
     """
     Convert data in bytes if data is a string
 
@@ -13,7 +14,7 @@ def ensure_bytes(data):
     return data
 
 
-def ensure_str(data):
+def ensure_str(data: Union[str, bytes]) -> str:
     """
     Convert data in str if data are bytes
 
@@ -23,4 +24,4 @@ def ensure_str(data):
     if isinstance(data, bytes):
         return str(data, 'utf-8')
 
-    return data
\ No newline at end of file
+    return data
diff --git a/duniterpy/key/signing_key.py b/duniterpy/key/signing_key.py
index ae5b2384e3e68e0c855bf5ff2843ae06a89f5dc6..146699e39480801f7f4b5e3a74e0ac1c2a71a98b 100644
--- a/duniterpy/key/signing_key.py
+++ b/duniterpy/key/signing_key.py
@@ -3,7 +3,7 @@ duniter public and private keys
 
 @author: inso
 """
-from typing import Optional
+from typing import Optional, Union
 
 import libnacl.sign
 from pylibscrypt import scrypt
@@ -30,7 +30,8 @@ class ScryptParams:
 
 
 class SigningKey(libnacl.sign.Signer):
-    def __init__(self, salt: str, password: str, scrypt_params: Optional[ScryptParams] = None) -> None:
+    def __init__(self, salt: Union[str, bytes], password: Union[str, bytes],
+                 scrypt_params: Optional[ScryptParams] = None) -> None:
         """
         Init a SigningKey object from credentials