From d447debe54c1c6cc2d92481971275200ae622be4 Mon Sep 17 00:00:00 2001 From: Sergi Delgado Segura Date: Tue, 11 Feb 2020 20:22:51 +0100 Subject: [PATCH] Temporal fix for Cryptographer logs. Close #91 --- apps/cli/wt_cli.py | 3 ++- common/cryptographer.py | 7 ++----- pisa/inspector.py | 2 ++ pisa/pisad.py | 2 ++ pisa/watcher.py | 2 ++ test/apps/cli/unit/test_wt_cli.py | 5 ++++- test/common/unit/test_cryptographer.py | 5 ++++- test/pisa/e2e/test_basic_e2e.py | 5 +++++ test/pisa/unit/conftest.py | 5 +++++ test/pisa/unit/test_inspector.py | 6 ++++++ test/pisa/unit/test_watcher.py | 5 +++++ 11 files changed, 39 insertions(+), 8 deletions(-) diff --git a/apps/cli/wt_cli.py b/apps/cli/wt_cli.py index 275ae25..c9b41b9 100644 --- a/apps/cli/wt_cli.py +++ b/apps/cli/wt_cli.py @@ -13,6 +13,7 @@ from apps.cli import config, LOG_PREFIX from apps.cli.help import help_add_appointment, help_get_appointment from apps.cli.blob import Blob +import common.cryptographer from common import constants from common.logger import Logger from common.appointment import Appointment @@ -20,7 +21,7 @@ from common.cryptographer import Cryptographer from common.tools import check_sha256_hex_format, check_locator_format, compute_locator logger = Logger(actor="Client", log_name_prefix=LOG_PREFIX) - +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) # FIXME: creating a simpler load_keys for the alpha. Client keys will not be necessary. PISA key is hardcoded. # def load_keys(pisa_pk_path, cli_sk_path, cli_pk_path): diff --git a/common/cryptographer.py b/common/cryptographer.py index fee5001..6519620 100644 --- a/common/cryptographer.py +++ b/common/cryptographer.py @@ -10,9 +10,8 @@ from cryptography.hazmat.primitives.serialization import load_der_public_key, lo from cryptography.exceptions import InvalidSignature from common.tools import check_sha256_hex_format -from common.logger import Logger - -logger = Logger("Cryptographer") +# FIXME: Common has not log file, so it needs to log in the same log as the caller. This is a temporary fix. +logger = None class Cryptographer: @@ -39,12 +38,10 @@ class Cryptographer: if len(data) % 2: error = "Incorrect (Odd-length) value" - logger.error(error, data=data) raise ValueError(error) if not check_sha256_hex_format(secret): error = "Secret must be a 32-byte hex value (64 hex chars)" - logger.error(error, secret=secret) raise ValueError(error) return True diff --git a/pisa/inspector.py b/pisa/inspector.py index b78b7cb..ee5bd10 100644 --- a/pisa/inspector.py +++ b/pisa/inspector.py @@ -1,6 +1,7 @@ import re from binascii import unhexlify +import common.cryptographer from common.constants import LOCATOR_LEN_HEX from common.cryptographer import Cryptographer @@ -10,6 +11,7 @@ from common.appointment import Appointment from pisa.block_processor import BlockProcessor logger = Logger(actor="Inspector", log_name_prefix=LOG_PREFIX) +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) # FIXME: The inspector logs the wrong messages sent form the users. A possible attack surface would be to send a really # long field that, even if not accepted by PISA, would be stored in the logs. This is a possible DoS surface diff --git a/pisa/pisad.py b/pisa/pisad.py index 89602b5..ad0c183 100644 --- a/pisa/pisad.py +++ b/pisa/pisad.py @@ -2,6 +2,7 @@ from getopt import getopt from sys import argv, exit from signal import signal, SIGINT, SIGQUIT, SIGTERM +import common.cryptographer from common.logger import Logger from common.cryptographer import Cryptographer @@ -16,6 +17,7 @@ from pisa.block_processor import BlockProcessor from pisa.tools import can_connect_to_bitcoind, in_correct_network logger = Logger(actor="Daemon", log_name_prefix=LOG_PREFIX) +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) def handle_signals(signal_received, frame): diff --git a/pisa/watcher.py b/pisa/watcher.py index 5b1860c..281de92 100644 --- a/pisa/watcher.py +++ b/pisa/watcher.py @@ -2,6 +2,7 @@ from uuid import uuid4 from queue import Queue from threading import Thread +import common.cryptographer from common.cryptographer import Cryptographer from common.appointment import Appointment from common.tools import compute_locator @@ -13,6 +14,7 @@ from pisa.cleaner import Cleaner from pisa.block_processor import BlockProcessor logger = Logger(actor="Watcher", log_name_prefix=LOG_PREFIX) +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) class Watcher: diff --git a/test/apps/cli/unit/test_wt_cli.py b/test/apps/cli/unit/test_wt_cli.py index 67aeb8b..b05164e 100644 --- a/test/apps/cli/unit/test_wt_cli.py +++ b/test/apps/cli/unit/test_wt_cli.py @@ -1,4 +1,3 @@ -import pytest import responses import json import os @@ -9,6 +8,8 @@ from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import ec +import common.cryptographer +from common.logger import Logger from common.tools import compute_locator from common.appointment import Appointment from common.cryptographer import Cryptographer @@ -17,6 +18,8 @@ from apps.cli.blob import Blob import apps.cli.wt_cli as wt_cli from test.apps.cli.unit.conftest import get_random_value_hex +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=wt_cli.LOG_PREFIX) + # dummy keys for the tests dummy_sk = ec.generate_private_key(ec.SECP256K1, default_backend()) dummy_pk = dummy_sk.public_key() diff --git a/test/common/unit/test_cryptographer.py b/test/common/unit/test_cryptographer.py index 875cea4..728e1fd 100644 --- a/test/common/unit/test_cryptographer.py +++ b/test/common/unit/test_cryptographer.py @@ -1,15 +1,18 @@ import os -import pytest import binascii from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import serialization +import common.cryptographer from apps.cli.blob import Blob +from common.logger import Logger from common.cryptographer import Cryptographer from pisa.encrypted_blob import EncryptedBlob from test.common.unit.conftest import get_random_value_hex +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix="") + data = "6097cdf52309b1b2124efeed36bd34f46dc1c25ad23ac86f28380f746254f777" key = "b2e984a570f6f49bc38ace178e09147b0aa296cbb7c92eb01412f7e2d07b5659" encrypted_data = "8f31028097a8bf12a92e088caab5cf3fcddf0d35ed2b72c24b12269373efcdea04f9d2a820adafe830c20ff132d89810" diff --git a/test/pisa/e2e/test_basic_e2e.py b/test/pisa/e2e/test_basic_e2e.py index a8f83e7..ceec093 100644 --- a/test/pisa/e2e/test_basic_e2e.py +++ b/test/pisa/e2e/test_basic_e2e.py @@ -7,6 +7,9 @@ from pisa import HOST, PORT from apps.cli import wt_cli from apps.cli.blob import Blob from apps.cli import config as cli_conf + +import common.cryptographer +from common.logger import Logger from common.tools import compute_locator from common.appointment import Appointment from common.cryptographer import Cryptographer @@ -19,6 +22,8 @@ from test.pisa.e2e.conftest import ( run_pisad, ) +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix="") + # We'll use wt_cli to add appointments. The expected input format is a list of arguments with a json-encoded # appointment wt_cli.pisa_api_server = HOST diff --git a/test/pisa/unit/conftest.py b/test/pisa/unit/conftest.py index 2ffcb85..6766faa 100644 --- a/test/pisa/unit/conftest.py +++ b/test/pisa/unit/conftest.py @@ -22,9 +22,14 @@ from bitcoind_mock.transaction import create_dummy_transaction from bitcoind_mock.bitcoind import BitcoindMock from bitcoind_mock.conf import BTC_RPC_HOST, BTC_RPC_PORT +from pisa import LOG_PREFIX +import common.cryptographer +from common.logger import Logger from common.constants import LOCATOR_LEN_HEX from common.cryptographer import Cryptographer +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) + @pytest.fixture(scope="session") def run_bitcoind(): diff --git a/test/pisa/unit/test_inspector.py b/test/pisa/unit/test_inspector.py index 4dbafce..2cf7c54 100644 --- a/test/pisa/unit/test_inspector.py +++ b/test/pisa/unit/test_inspector.py @@ -14,6 +14,12 @@ from test.pisa.unit.conftest import get_random_value_hex, generate_dummy_appoint from common.constants import LOCATOR_LEN_BYTES, LOCATOR_LEN_HEX from common.cryptographer import Cryptographer +from common.logger import Logger + +from pisa import LOG_PREFIX +import common.cryptographer + +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) inspector = Inspector(get_config()) diff --git a/test/pisa/unit/test_watcher.py b/test/pisa/unit/test_watcher.py index 5a85bec..447c85c 100644 --- a/test/pisa/unit/test_watcher.py +++ b/test/pisa/unit/test_watcher.py @@ -20,9 +20,14 @@ from test.pisa.unit.conftest import ( ) from pisa.conf import EXPIRY_DELTA, MAX_APPOINTMENTS +import common.cryptographer +from pisa import LOG_PREFIX +from common.logger import Logger from common.tools import compute_locator from common.cryptographer import Cryptographer +common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix=LOG_PREFIX) + APPOINTMENTS = 5 START_TIME_OFFSET = 1