-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Decrypt passwords from environment provider sub suite information (#42)
- Loading branch information
Showing
11 changed files
with
187 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,5 +16,6 @@ | |
# scipy==1.0 | ||
# | ||
packageurl-python==0.9.1 | ||
etos_lib==2.1.0 | ||
cryptography~=41.0 | ||
etos_lib==3.2.2 | ||
jsontas==1.3.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Copyright Axis Communications AB. | ||
# | ||
# For a full list of individual contributors, please see the commit history. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
"""Custom dataset module.""" | ||
from jsontas.dataset import Dataset | ||
|
||
|
||
class CustomDataset(Dataset): | ||
"""Custom dataset for ETR to decrypt secrets. | ||
This custom dataset removes all default JsonTas datastructures | ||
as we are going to run JsonTas on the sub suite information | ||
retrieved from the environment provider. | ||
This sub suite information is quite large and if we keep the | ||
default datastructures the ETR would be susceptible to remote | ||
code execution. This custom dataset shall only be used when | ||
decrypting secrets. | ||
""" | ||
|
||
def __init__(self): | ||
"""Initialize an empty dataset.""" | ||
super().__init__() | ||
# pylint:disable=unused-private-member | ||
# It is used by the parent class. | ||
self.__dataset = {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Copyright Axis Communications AB. | ||
# | ||
# For a full list of individual contributors, please see the commit history. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
"""JSONTas decrypt string data structure module.""" | ||
import os | ||
from cryptography.fernet import Fernet | ||
from jsontas.data_structures.datastructure import DataStructure | ||
|
||
# pylint:disable=too-few-public-methods | ||
|
||
|
||
def decrypt(value, key): | ||
"""Decrypt a string. | ||
:param value: Data to decrypt. | ||
:type value: str | ||
:param key: Encryption key to decrypt data with. | ||
:type key: str | ||
:return: Decrypted data. | ||
:rtype: str | ||
""" | ||
return Fernet(key).decrypt(value).decode() | ||
|
||
|
||
class Decrypt(DataStructure): | ||
"""Decrypt an encrypted string.""" | ||
|
||
def execute(self): | ||
"""Execute datastructure. | ||
:return: Name of key. None, to tel JSONTas to not override key name, and decrypted value. | ||
""" | ||
key = os.getenv("ETOS_ENCRYPTION_KEY") | ||
assert key is not None, "ETOS_ENCRYPTION_KEY environment variable must be set" | ||
return None, decrypt(self.data.get("value"), key) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.