Merge pull request #33 from asergi/urandom

Use system RNG in crypto
This commit is contained in:
Arun Prakash Jana 2016-06-01 12:00:58 +05:30
commit db816fb93d

6
buku
View File

@ -34,7 +34,6 @@ try:
import getpass import getpass
import hashlib import hashlib
from Crypto.Cipher import AES from Crypto.Cipher import AES
from Crypto import Random
import struct import struct
no_crypto = False no_crypto = False
@ -662,7 +661,6 @@ class BukuDb:
except Exception: except Exception:
pass pass
def close_quit(self, exitval=0): def close_quit(self, exitval=0):
"""Close a DB connection and exit""" """Close a DB connection and exit"""
@ -1081,12 +1079,12 @@ def encrypt_file(iterations):
dbhash = get_filehash(dbpath) dbhash = get_filehash(dbpath)
# Generate random 256-bit salt and key # Generate random 256-bit salt and key
salt = Random.get_random_bytes(SALT_SIZE) salt = os.urandom(SALT_SIZE)
key = ('%s%s' % (password, salt.decode('utf-8', 'replace'))).encode('utf-8') key = ('%s%s' % (password, salt.decode('utf-8', 'replace'))).encode('utf-8')
for _ in range(iterations): for _ in range(iterations):
key = hashlib.sha256(key).digest() key = hashlib.sha256(key).digest()
iv = Random.get_random_bytes(16) iv = os.urandom(16)
cipher = AES.new(key, AES.MODE_CBC, iv) cipher = AES.new(key, AES.MODE_CBC, iv)
filesize = os.path.getsize(dbpath) filesize = os.path.getsize(dbpath)