Skip to content
Snippets Groups Projects
Commit e6bcfad4 authored by inso's avatar inso
Browse files

Add ScryptParams

parent cff47d10
No related branches found
No related tags found
No related merge requests found
from .signing_key import SigningKey from .signing_key import SigningKey, ScryptParams
from .verifying_key import VerifyingKey from .verifying_key import VerifyingKey
from .encryption_key import SecretKey, PublicKey from .encryption_key import SecretKey, PublicKey
\ No newline at end of file
...@@ -11,11 +11,12 @@ from .base58 import Base58Encoder ...@@ -11,11 +11,12 @@ from .base58 import Base58Encoder
SEED_LENGTH = 32 # Length of the key SEED_LENGTH = 32 # Length of the key
crypto_sign_BYTES = 64 crypto_sign_BYTES = 64
SCRYPT_PARAMS = {'N': 4096,
'r': 16,
'p': 1
}
class ScryptParams:
def __init__(self, N, r, p):
self.N = N
self.r = r
self.p = p
def _ensure_bytes(data): def _ensure_bytes(data):
if isinstance(data, str): if isinstance(data, str):
...@@ -25,11 +26,11 @@ def _ensure_bytes(data): ...@@ -25,11 +26,11 @@ def _ensure_bytes(data):
class SigningKey(libnacl.sign.Signer): class SigningKey(libnacl.sign.Signer):
def __init__(self, salt, password): def __init__(self, salt, password, scrypt_params):
salt = _ensure_bytes(salt) salt = _ensure_bytes(salt)
password = _ensure_bytes(password) password = _ensure_bytes(password)
seed = scrypt(password, salt, seed = scrypt(password, salt,
SCRYPT_PARAMS['N'], SCRYPT_PARAMS['r'], SCRYPT_PARAMS['p'], scrypt_params.N, scrypt_params.r, scrypt_params.p,
SEED_LENGTH) SEED_LENGTH)
super().__init__(seed) super().__init__(seed)
......
from duniterpy.key import VerifyingKey, SigningKey from duniterpy.key import VerifyingKey, SigningKey, ScryptParams
from duniterpy.documents import Peer from duniterpy.documents import Peer
import unittest import unittest
class TestVerifyingKey(unittest.TestCase): class TestVerifyingKey(unittest.TestCase):
def test_from_sign_to_verify(self): def test_from_sign_to_verify(self):
sign_key = SigningKey("saltsalt", "passwordpassword") sign_key = SigningKey("saltsalt", "passwordpassword", ScryptParams(4096, 16, 1))
verify_key = VerifyingKey(sign_key.pubkey) verify_key = VerifyingKey(sign_key.pubkey)
self.assertEqual(verify_key.vk, sign_key.vk) self.assertEqual(verify_key.vk, sign_key.vk)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment