Browse Source

Merge pull request #4563 from spesmilo/remove_pbkdf2

remove pbkdf2 dependency, use stdlib instead
3.2.x
ThomasV 7 years ago
committed by GitHub
parent
commit
bdb8220a1a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      contrib/requirements/requirements.txt
  2. 7
      electrum/keystore.py
  3. 3
      electrum/mnemonic.py
  4. 4
      electrum/plugins/digitalbitbox/digitalbitbox.py
  5. 6
      electrum/storage.py
  6. 1
      run_electrum

1
contrib/requirements/requirements.txt

@ -1,6 +1,5 @@
pyaes>=0.1a1
ecdsa>=0.9
pbkdf2
requests
qrcode
protobuf

7
electrum/keystore.py

@ -552,13 +552,12 @@ def bip39_normalize_passphrase(passphrase):
return normalize('NFKD', passphrase or '')
def bip39_to_seed(mnemonic, passphrase):
import pbkdf2, hashlib, hmac
import hashlib, hmac
PBKDF2_ROUNDS = 2048
mnemonic = normalize('NFKD', ' '.join(mnemonic.split()))
passphrase = bip39_normalize_passphrase(passphrase)
return pbkdf2.PBKDF2(mnemonic, 'mnemonic' + passphrase,
iterations = PBKDF2_ROUNDS, macmodule = hmac,
digestmodule = hashlib.sha512).read(64)
return hashlib.pbkdf2_hmac('sha512', mnemonic.encode('utf-8'),
b'mnemonic' + passphrase.encode('utf-8'), iterations = PBKDF2_ROUNDS)
# returns tuple (is_checksum_valid, is_wordlist_valid)
def bip39_is_checksum_valid(mnemonic):

3
electrum/mnemonic.py

@ -30,7 +30,6 @@ import unicodedata
import string
import ecdsa
import pbkdf2
from .util import print_error
from .bitcoin import is_old_seed, is_new_seed
@ -131,7 +130,7 @@ class Mnemonic(object):
PBKDF2_ROUNDS = 2048
mnemonic = normalize_text(mnemonic)
passphrase = normalize_text(passphrase)
return pbkdf2.PBKDF2(mnemonic, 'electrum' + passphrase, iterations = PBKDF2_ROUNDS, macmodule = hmac, digestmodule = hashlib.sha512).read(64)
return hashlib.pbkdf2_hmac('sha512', mnemonic.encode('utf-8'), b'electrum' + passphrase.encode('utf-8'), iterations = PBKDF2_ROUNDS)
def mnemonic_encode(self, i):
n = len(self.wordlist)

4
electrum/plugins/digitalbitbox/digitalbitbox.py

@ -120,8 +120,8 @@ class DigitalBitbox_Client():
def stretch_key(self, key):
import pbkdf2, hmac
return to_hexstr(pbkdf2.PBKDF2(key, b'Digital Bitbox', iterations = 20480, macmodule = hmac, digestmodule = hashlib.sha512).read(64))
import hmac
return to_hexstr(hashlib.pbkdf2_hmac('sha512', key.encode('utf-8'), b'Digital Bitbox', iterations = 20480))
def backup_password_dialog(self):

6
electrum/storage.py

@ -29,7 +29,7 @@ import json
import copy
import re
import stat
import pbkdf2, hmac, hashlib
import hmac, hashlib
import base64
import zlib
from collections import defaultdict
@ -165,7 +165,7 @@ class WalletStorage(PrintError):
@staticmethod
def get_eckey_from_password(password):
secret = pbkdf2.PBKDF2(password, '', iterations=1024, macmodule=hmac, digestmodule=hashlib.sha512).read(64)
secret = hashlib.pbkdf2_hmac('sha512', password.encode('utf-8'), b'', iterations=1024)
ec_key = ecc.ECPrivkey.from_arbitrary_size_secret(secret)
return ec_key
@ -637,7 +637,7 @@ class WalletStorage(PrintError):
# version 1.9.8 created v6 wallets when an incorrect seed was entered in the restore dialog
msg += '\n\nThis file was created because of a bug in version 1.9.8.'
if self.get('master_public_keys') is None and self.get('master_private_keys') is None and self.get('imported_keys') is None:
# pbkdf2 was not included with the binaries, and wallet creation aborted.
# pbkdf2 (at that time an additional dependency) was not included with the binaries, and wallet creation aborted.
msg += "\nIt does not contain any keys, and can safely be removed."
else:
# creation was complete if electrum was run from source

1
run_electrum

@ -46,7 +46,6 @@ def check_imports():
import ecdsa
import requests
import qrcode
import pbkdf2
import google.protobuf
import jsonrpclib
except ImportError as e:

Loading…
Cancel
Save