Moves EncryptedBlob to common

This commit is contained in:
Sergi Delgado Segura
2020-02-13 16:06:48 +01:00
parent 6e40938733
commit 02e159faac
13 changed files with 18 additions and 20 deletions

View File

@@ -11,7 +11,7 @@ from uuid import uuid4
from apps.cli import config, LOG_PREFIX
from apps.cli.help import help_add_appointment, help_get_appointment
from apps.cli.blob import Blob
from common.blob import Blob
import common.cryptographer
from common import constants

View File

@@ -2,7 +2,7 @@ import json
import struct
from binascii import unhexlify
from pisa.encrypted_blob import EncryptedBlob
from common.encrypted_blob import EncryptedBlob
class Appointment:
@@ -16,7 +16,7 @@ class Appointment:
end_time (:mod:`int`): The block height where the tower will stop watching for breaches.
to_self_delay (:mod:`int`): The ``to_self_delay`` encoded in the ``csv`` of the ``htlc`` that this appointment is
covering.
encrypted_blob (:obj:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>`): An ``EncryptedBlob`` object
encrypted_blob (:obj:`EncryptedBlob <common.encrypted_blob.EncryptedBlob>`): An ``EncryptedBlob`` object
containing an encrypted penalty transaction. The tower will decrypt it and broadcast the penalty transaction
upon seeing a breach on the blockchain.
"""

View File

@@ -49,12 +49,12 @@ class Cryptographer:
@staticmethod
def encrypt(blob, secret, rtype="str"):
"""
Encrypts a given :mod:`Blob <apps.cli.blob.Blob>` data using ``CHACHA20POLY1305``.
Encrypts a given :mod:`Blob <common.cli.blob.Blob>` data using ``CHACHA20POLY1305``.
``SHA256(secret)`` is used as ``key``, and ``0 (12-byte)`` as ``iv``.
Args:
blob (:mod:`Blob <apps.cli.blob.Blob>`): a ``Blob`` object containing a raw penalty transaction.
blob (:mod:`Blob <common.cli.blob.Blob>`): a ``Blob`` object containing a raw penalty transaction.
secret (:mod:`str`): a value to used to derive the encryption key. Should be the dispute txid.
rtype(:mod:`str`): the return type for the encrypted value. Can be either ``'str'`` or ``'bytes'``.
@@ -93,12 +93,12 @@ class Cryptographer:
# ToDo: #20-test-tx-decrypting-edge-cases
def decrypt(encrypted_blob, secret, rtype="str"):
"""
Decrypts a given :mod:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>` using ``CHACHA20POLY1305``.
Decrypts a given :mod:`EncryptedBlob <common.encrypted_blob.EncryptedBlob>` using ``CHACHA20POLY1305``.
``SHA256(secret)`` is used as ``key``, and ``0 (12-byte)`` as ``iv``.
Args:
encrypted_blob(:mod:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>`): an ``EncryptedBlob`` potentially
encrypted_blob(:mod:`EncryptedBlob <comnmon.encrypted_blob.EncryptedBlob>`): an ``EncryptedBlob`` potentially
containing a penalty transaction.
secret (:mod:`str`): a value to used to derive the decryption key. Should be the dispute txid.
rtype(:mod:`str`): the return type for the decrypted value. Can be either ``'str'`` or ``'bytes'``.

View File

@@ -24,7 +24,7 @@ class Watcher:
The :class:`Watcher` keeps track of the accepted appointments in ``appointments`` and, for new received block,
checks if any breach has happened by comparing the txids with the appointment locators. If a breach is seen, the
:obj:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>` of the corresponding appointment is decrypted and the data
:obj:`EncryptedBlob <common.encrypted_blob.EncryptedBlob>` of the corresponding appointment is decrypted and the data
is passed to the :obj:`Responder <pisa.responder.Responder>`.
If an appointment reaches its end with no breach, the data is simply deleted.
@@ -81,7 +81,7 @@ class Watcher:
the blockchain (``do_watch``) until ``appointments`` is empty.
Once a breach is seen on the blockchain, the :obj:`Watcher` will decrypt the corresponding
:obj:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>` and pass the information to the
:obj:`EncryptedBlob <common.encrypted_blob.EncryptedBlob>` and pass the information to the
:obj:`Responder <pisa.responder.Responder>`.
The tower may store multiple appointments with the same ``locator`` to avoid DoS attacks based on data
@@ -232,7 +232,7 @@ class Watcher:
"""
Filters what of the found breaches contain valid transaction data.
The :obj:`Watcher` cannot if a given :obj:`EncryptedBlob <pisa.encrypted_blob.EncryptedBlob>` contains a valid
The :obj:`Watcher` cannot if a given :obj:`EncryptedBlob <common.encrypted_blob.EncryptedBlob>` contains a valid
transaction until a breach if seen. Blobs that contain arbitrary data are dropped and not sent to the
:obj:`Responder <pisa.responder.Responder>`.

View File

@@ -14,7 +14,7 @@ from common.tools import compute_locator
from common.appointment import Appointment
from common.cryptographer import Cryptographer
from apps.cli.blob import Blob
from common.blob import Blob
import apps.cli.wt_cli as wt_cli
from test.apps.cli.unit.conftest import get_random_value_hex

View File

@@ -4,7 +4,7 @@ import binascii
from pytest import fixture
from common.appointment import Appointment
from pisa.encrypted_blob import EncryptedBlob
from common.encrypted_blob import EncryptedBlob
from test.pisa.unit.conftest import get_random_value_hex

View File

@@ -1,6 +1,6 @@
from binascii import unhexlify
from apps.cli.blob import Blob
from common.blob import Blob
from test.pisa.unit.conftest import get_random_value_hex

View File

@@ -5,10 +5,10 @@ from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
import common.cryptographer
from apps.cli.blob import Blob
from common.blob import Blob
from common.logger import Logger
from common.cryptographer import Cryptographer
from pisa.encrypted_blob import EncryptedBlob
from common.encrypted_blob import EncryptedBlob
from test.common.unit.conftest import get_random_value_hex
common.cryptographer.logger = Logger(actor="Cryptographer", log_name_prefix="")

View File

@@ -1,4 +1,4 @@
from pisa.encrypted_blob import EncryptedBlob
from common.encrypted_blob import EncryptedBlob
from test.pisa.unit.conftest import get_random_value_hex

View File

@@ -1,13 +1,11 @@
import json
import binascii
from time import sleep
from riemann.tx import Tx
from pisa import config
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
from common.blob import Blob
import common.cryptographer
from common.logger import Logger

View File

@@ -11,7 +11,7 @@ from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
from apps.cli.blob import Blob
from common.blob import Blob
from pisa.responder import TransactionTracker
from pisa.tools import bitcoin_cli
from pisa.db_manager import DBManager