diff --git a/jrnl/Journal.py b/jrnl/Journal.py index 827c9551..43d1d2e6 100644 --- a/jrnl/Journal.py +++ b/jrnl/Journal.py @@ -3,8 +3,8 @@ try: from . import Entry except (SystemError, ValueError): import Entry -try: from .util import get_local_timezone, prompt -except (SystemError, ValueError): from util import get_local_timezone, prompt +try: from .util import get_local_timezone, prompt, getpass +except (SystemError, ValueError): from util import get_local_timezone, prompt, getpass import codecs import os try: import parsedatetime.parsedatetime_consts as pdt @@ -25,7 +25,6 @@ except ImportError: if "win32" in sys.platform: import pyreadline as readline else: import readline import hashlib -import getpass try: import colorama colorama.init() @@ -89,6 +88,7 @@ class Journal(object): sys.exit("Error: PyCrypto is not installed.") atfork() # A seed for PyCrypto iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16)) + print("iv", iv, len(iv)) crypto = AES.new(self.key, AES.MODE_CBC, iv) if len(plain) % 16 != 0: plain += " " * (16 - len(plain) % 16) @@ -98,7 +98,8 @@ class Journal(object): def make_key(self, prompt="Password: "): """Creates an encryption key from the default password or prompts for a new password.""" - password = self.config['password'] or getpass.getpass(prompt) + password = self.config['password'] or getpass(prompt) + print("GOT PWD", password) self.key = hashlib.sha256(password.encode('utf-8')).digest() def open(self, filename=None): diff --git a/jrnl/util.py b/jrnl/util.py index ac432fbf..54a60c66 100644 --- a/jrnl/util.py +++ b/jrnl/util.py @@ -3,24 +3,35 @@ import sys import os from tzlocal import get_localzone +import getpass as gp + PY3 = sys.version_info[0] == 3 PY2 = sys.version_info[0] == 2 +STDIN = sys.stdin +STDERR = sys.stderr +STDOUT = sys.stdout +TEST = False +__cached_tz = None + +def getpass(prompt): + if not TEST: + return gp.getpass(prompt) + else: + return py23_input(prompt) + def u(s): """Mock unicode function for python 2 and 3 compatibility.""" return s if PY3 else unicode(s, "unicode_escape") -STDIN = sys.stdin -STDERR = sys.stderr -STDOUT = sys.stdout -__cached_tz = None - def prompt(msg): """Prints a message to the std err stream defined in util.""" - print(msg, file=STDERR) + if not msg.endswith("\n"): + msg += "\n" + STDERR.write(u(msg)) def py23_input(msg): - STDOUT.write(msg) + STDERR.write(u(msg)) return STDIN.readline().strip() def get_local_timezone():