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

Add ScryptParams

parent cff47d10
Branches
Tags
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