Island: Remove disused StringListEncryptor

This commit is contained in:
Mike Salvatore 2022-07-14 07:27:47 -04:00
parent 60a1e79179
commit 7760520cc8
5 changed files with 1 additions and 77 deletions

View File

@ -21,5 +21,4 @@ from .dict_encryptor import (
FieldNotFoundError, FieldNotFoundError,
) )
from .field_encryptors.i_field_encryptor import IFieldEncryptor from .field_encryptors.i_field_encryptor import IFieldEncryptor
from .field_encryptors.string_list_encryptor import StringListEncryptor
from .field_encryptors.string_encryptor import StringEncryptor from .field_encryptors.string_encryptor import StringEncryptor

View File

@ -1,3 +1,2 @@
from .i_field_encryptor import IFieldEncryptor from .i_field_encryptor import IFieldEncryptor
from .string_list_encryptor import StringListEncryptor
from .string_encryptor import StringEncryptor from .string_encryptor import StringEncryptor

View File

@ -1,14 +0,0 @@
from typing import List
from ..data_store_encryptor import get_datastore_encryptor
from . import IFieldEncryptor
class StringListEncryptor(IFieldEncryptor):
@staticmethod
def encrypt(value: List[str]) -> List[str]:
return [get_datastore_encryptor().encrypt(string.encode()).decode() for string in value]
@staticmethod
def decrypt(value: List[str]) -> List[str]:
return [get_datastore_encryptor().decrypt(string.encode()).decode() for string in value]

View File

@ -1,16 +1,14 @@
import copy import copy
from typing import List
import pytest import pytest
from monkey_island.cc.models import Report from monkey_island.cc.models import Report
from monkey_island.cc.models.report import get_report, save_report from monkey_island.cc.models.report import get_report, save_report
from monkey_island.cc.server_utils.encryption import IFieldEncryptor, SensitiveField
MOCK_SENSITIVE_FIELD_CONTENTS = ["the_string", "the_string2"] MOCK_SENSITIVE_FIELD_CONTENTS = ["the_string", "the_string2"]
MOCK_REPORT_DICT = { MOCK_REPORT_DICT = {
"overview": { "overview": {
"foo": {"the_key": MOCK_SENSITIVE_FIELD_CONTENTS, "other_key": "other_value"}, "foo": {"the_key": ["the_string", "the_string2"], "other_key": "other_value"},
"bar": {"the_key": []}, "bar": {"the_key": []},
}, },
"glance": {"foo": "bar"}, "glance": {"foo": "bar"},
@ -19,43 +17,6 @@ MOCK_REPORT_DICT = {
} }
class MockStringListEncryptor(IFieldEncryptor):
plaintext = []
@staticmethod
def encrypt(value: List[str]) -> List[str]:
return [MockStringListEncryptor._encrypt(v) for v in value]
@staticmethod
def _encrypt(value: str) -> str:
MockStringListEncryptor.plaintext.append(value)
return f"ENCRYPTED_{str(len(MockStringListEncryptor.plaintext) - 1)}"
@staticmethod
def decrypt(value: List[str]) -> List[str]:
return MockStringListEncryptor.plaintext
@pytest.fixture(autouse=True)
def patch_sensitive_fields(monkeypatch):
mock_sensitive_fields = [
SensitiveField("overview.foo.the_key", MockStringListEncryptor),
SensitiveField("overview.bar.the_key", MockStringListEncryptor),
]
monkeypatch.setattr(
"monkey_island.cc.models.report.report_dal.sensitive_fields", mock_sensitive_fields
)
@pytest.mark.usefixtures("uses_database")
def test_report_encryption():
save_report(MOCK_REPORT_DICT)
assert Report.objects.first()["overview"]["foo"]["the_key"] == ["ENCRYPTED_0", "ENCRYPTED_1"]
assert Report.objects.first()["overview"]["bar"]["the_key"] == []
assert get_report()["overview"]["foo"]["the_key"] == MOCK_SENSITIVE_FIELD_CONTENTS
@pytest.mark.usefixtures("uses_database") @pytest.mark.usefixtures("uses_database")
def test_report_dot_encoding(): def test_report_dot_encoding():
mrd = copy.deepcopy(MOCK_REPORT_DICT) mrd = copy.deepcopy(MOCK_REPORT_DICT)

View File

@ -1,21 +0,0 @@
import pytest
from monkey_island.cc.server_utils.encryption import StringListEncryptor
MOCK_STRING_LIST = ["test_1", "test_2"]
EMPTY_LIST = []
@pytest.mark.slow
def test_encryption_and_decryption(uses_encryptor):
encrypted_list = StringListEncryptor.encrypt(MOCK_STRING_LIST)
assert not encrypted_list == MOCK_STRING_LIST
decrypted_list = StringListEncryptor.decrypt(encrypted_list)
assert decrypted_list == MOCK_STRING_LIST
@pytest.mark.slow
def test_empty_list(uses_encryptor):
# Tests that no errors are raised
encrypted_list = StringListEncryptor.encrypt(EMPTY_LIST)
StringListEncryptor.decrypt(encrypted_list)