keylocker 0.4.2__tar.gz → 0.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.3
2
+ Name: keylocker
3
+ Version: 0.4.3
4
+ Summary: Library with the CLI to save the encrypted secrets in the configuration file, but a transparent read and write the new settings in the app.
5
+ License: MIT
6
+ Author: vpuhoff
7
+ Author-email: vpuhoff@live.ru
8
+ Requires-Python: >=3.10
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
+ Classifier: Topic :: Utilities
16
+ Description-Content-Type: text/markdown
17
+
18
+ # Keylocker CLI (YAML Edition)
19
+
20
+ A command-line interface (CLI) tool and Python library for managing secrets directly within YAML configuration files. Allows encrypting individual values using the `!SEC` tag and loading values from environment variables using the `!ENV` tag.
21
+
22
+ ## Installation
23
+
24
+ You can install the package using pip:
25
+
26
+ ```bash
27
+ pip install keylocker
28
+ ```
29
+
30
+ The package is available on PyPI: [https://pypi.org/project/keylocker/](https://pypi.org/project/keylocker/)
31
+
32
+ ## Example YAML file (`config.yaml`):
33
+
34
+ ```yaml
35
+ # config.yaml
36
+ database:
37
+ host: db.example.com
38
+ username: user
39
+ # Encrypted password using 'keylocker encrypt'
40
+ password: !SEC gAAAAABh...[rest of encrypted data]...
41
+ api:
42
+ endpoint: [https://api.example.com](https://api.example.com)
43
+ # Load key from the API_KEY environment variable
44
+ key: !ENV API_KEY
45
+ deployment:
46
+ region: us-east-1
47
+ # Another secret
48
+ ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
49
+ ```
50
+
51
+ ## CLI Usage:
52
+
53
+ 1. **Initialization (create key):**
54
+ ```bash
55
+ keylocker init
56
+ # The storage.key file will be created (if it doesn't exist)
57
+ ```
58
+
59
+ 2. **Encrypt value for YAML insertion:**
60
+ ```bash
61
+ keylocker encrypt "my_secret_value"
62
+ # Output:
63
+ # Add the following line to your YAML file:
64
+ # !SEC gAAAAABh...[encrypted data]...
65
+
66
+ # Copy the !SEC ... line into your YAML file
67
+ ```
68
+
69
+ 3. **View decrypted YAML:**
70
+ ```bash
71
+ # Set the environment variable (if using !ENV)
72
+ export API_KEY="your_actual_api_key"
73
+
74
+ keylocker view config.yaml
75
+ # Outputs the YAML with !SEC values decrypted
76
+ # and !ENV values substituted
77
+ # Example output:
78
+ # database:
79
+ # host: db.example.com
80
+ # username: user
81
+ # password: my_secret_value # Decrypted!
82
+ # api:
83
+ # endpoint: [https://api.example.com](https://api.example.com)
84
+ # key: your_actual_api_key # Substituted from env!
85
+ # deployment:
86
+ # region: us-east-1
87
+ # ssh_key_pass: decrypted_pass # Decrypted!
88
+ ```
89
+ *(Note: An `edit` command might be added in the future for interactive editing)*
90
+
91
+ ## Usage in Python Code:
92
+
93
+ ```python
94
+ import os
95
+ from keylocker import load_yaml_secrets
96
+
97
+ # Set environment variables if needed
98
+ os.environ['API_KEY'] = 'your_actual_api_key_for_python'
99
+
100
+ config_file = 'config.yaml'
101
+ key_file = 'storage.key' # Make sure the key exists
102
+
103
+ try:
104
+ # Load and automatically decrypt/substitute
105
+ secrets = load_yaml_secrets(config_file, key_file)
106
+
107
+ if secrets:
108
+ db_password = secrets.get('database', {}).get('password')
109
+ api_key = secrets.get('api', {}).get('key')
110
+
111
+ print(f"Database Password: {db_password}")
112
+ print(f"API Key: {api_key}")
113
+
114
+ except Exception as e:
115
+ print(f"An error occurred: {e}")
116
+ ```
117
+
118
+ ## Usage in Bash:
119
+
120
+ To extract specific values from the decrypted YAML, you can use utilities like `yq` or standard Unix tools.
121
+
122
+ ```bash
123
+ #!/bin/bash
124
+
125
+ # Make sure the environment variable is set if needed
126
+ export API_KEY="your_bash_api_key"
127
+
128
+ # Get the decrypted YAML
129
+ CONFIG_YAML=$(keylocker view config.yaml)
130
+
131
+ # Check if the command executed successfully
132
+ if [ $? -ne 0 ]; then
133
+ echo "Error executing keylocker view"
134
+ exit 1
135
+ fi
136
+
137
+ # Example extraction using yq (requires yq installation)
138
+ # DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
139
+ # API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
140
+
141
+ # Example extraction using grep/awk (less robust)
142
+ DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
143
+ API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
144
+
145
+
146
+ echo "Extracted DB Password: $DB_PASS"
147
+ echo "Extracted API Key: $API_KEY_FROM_YAML"
148
+
149
+ # Further use of variables...
150
+ # e.g., publish command using extracted credentials
151
+ # some_command --username user --password "${DB_PASS}"
152
+ ```
153
+
154
+ ## Source Code:
155
+ * [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
156
+
@@ -0,0 +1,138 @@
1
+ # Keylocker CLI (YAML Edition)
2
+
3
+ A command-line interface (CLI) tool and Python library for managing secrets directly within YAML configuration files. Allows encrypting individual values using the `!SEC` tag and loading values from environment variables using the `!ENV` tag.
4
+
5
+ ## Installation
6
+
7
+ You can install the package using pip:
8
+
9
+ ```bash
10
+ pip install keylocker
11
+ ```
12
+
13
+ The package is available on PyPI: [https://pypi.org/project/keylocker/](https://pypi.org/project/keylocker/)
14
+
15
+ ## Example YAML file (`config.yaml`):
16
+
17
+ ```yaml
18
+ # config.yaml
19
+ database:
20
+ host: db.example.com
21
+ username: user
22
+ # Encrypted password using 'keylocker encrypt'
23
+ password: !SEC gAAAAABh...[rest of encrypted data]...
24
+ api:
25
+ endpoint: [https://api.example.com](https://api.example.com)
26
+ # Load key from the API_KEY environment variable
27
+ key: !ENV API_KEY
28
+ deployment:
29
+ region: us-east-1
30
+ # Another secret
31
+ ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
32
+ ```
33
+
34
+ ## CLI Usage:
35
+
36
+ 1. **Initialization (create key):**
37
+ ```bash
38
+ keylocker init
39
+ # The storage.key file will be created (if it doesn't exist)
40
+ ```
41
+
42
+ 2. **Encrypt value for YAML insertion:**
43
+ ```bash
44
+ keylocker encrypt "my_secret_value"
45
+ # Output:
46
+ # Add the following line to your YAML file:
47
+ # !SEC gAAAAABh...[encrypted data]...
48
+
49
+ # Copy the !SEC ... line into your YAML file
50
+ ```
51
+
52
+ 3. **View decrypted YAML:**
53
+ ```bash
54
+ # Set the environment variable (if using !ENV)
55
+ export API_KEY="your_actual_api_key"
56
+
57
+ keylocker view config.yaml
58
+ # Outputs the YAML with !SEC values decrypted
59
+ # and !ENV values substituted
60
+ # Example output:
61
+ # database:
62
+ # host: db.example.com
63
+ # username: user
64
+ # password: my_secret_value # Decrypted!
65
+ # api:
66
+ # endpoint: [https://api.example.com](https://api.example.com)
67
+ # key: your_actual_api_key # Substituted from env!
68
+ # deployment:
69
+ # region: us-east-1
70
+ # ssh_key_pass: decrypted_pass # Decrypted!
71
+ ```
72
+ *(Note: An `edit` command might be added in the future for interactive editing)*
73
+
74
+ ## Usage in Python Code:
75
+
76
+ ```python
77
+ import os
78
+ from keylocker import load_yaml_secrets
79
+
80
+ # Set environment variables if needed
81
+ os.environ['API_KEY'] = 'your_actual_api_key_for_python'
82
+
83
+ config_file = 'config.yaml'
84
+ key_file = 'storage.key' # Make sure the key exists
85
+
86
+ try:
87
+ # Load and automatically decrypt/substitute
88
+ secrets = load_yaml_secrets(config_file, key_file)
89
+
90
+ if secrets:
91
+ db_password = secrets.get('database', {}).get('password')
92
+ api_key = secrets.get('api', {}).get('key')
93
+
94
+ print(f"Database Password: {db_password}")
95
+ print(f"API Key: {api_key}")
96
+
97
+ except Exception as e:
98
+ print(f"An error occurred: {e}")
99
+ ```
100
+
101
+ ## Usage in Bash:
102
+
103
+ To extract specific values from the decrypted YAML, you can use utilities like `yq` or standard Unix tools.
104
+
105
+ ```bash
106
+ #!/bin/bash
107
+
108
+ # Make sure the environment variable is set if needed
109
+ export API_KEY="your_bash_api_key"
110
+
111
+ # Get the decrypted YAML
112
+ CONFIG_YAML=$(keylocker view config.yaml)
113
+
114
+ # Check if the command executed successfully
115
+ if [ $? -ne 0 ]; then
116
+ echo "Error executing keylocker view"
117
+ exit 1
118
+ fi
119
+
120
+ # Example extraction using yq (requires yq installation)
121
+ # DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
122
+ # API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
123
+
124
+ # Example extraction using grep/awk (less robust)
125
+ DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
126
+ API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
127
+
128
+
129
+ echo "Extracted DB Password: $DB_PASS"
130
+ echo "Extracted API Key: $API_KEY_FROM_YAML"
131
+
132
+ # Further use of variables...
133
+ # e.g., publish command using extracted credentials
134
+ # some_command --username user --password "${DB_PASS}"
135
+ ```
136
+
137
+ ## Source Code:
138
+ * [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "keylocker"
3
- version = "0.4.2" # Убедитесь, что версия актуальна
4
- description = "Инструмент CLI и библиотека для управления секретами в YAML файлах с шифрованием." # Описание обновлено
3
+ version = "0.4.3" # Убедитесь, что версия актуальна
4
+ description = "Library with the CLI to save the encrypted secrets in the configuration file, but a transparent read and write the new settings in the app."
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
7
7
  authors = [
keylocker-0.4.2/PKG-INFO DELETED
@@ -1,154 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: keylocker
3
- Version: 0.4.2
4
- Summary: Инструмент CLI и библиотека для управления секретами в YAML файлах с шифрованием.
5
- License: MIT
6
- Author: vpuhoff
7
- Author-email: vpuhoff@live.ru
8
- Requires-Python: >=3.10
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
12
- Classifier: Development Status :: 4 - Beta
13
- Classifier: Intended Audience :: Developers
14
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
- Classifier: Topic :: Utilities
16
- Description-Content-Type: text/markdown
17
-
18
- # Keylocker CLI (YAML Edition)
19
-
20
- Инструмент командной строки (CLI) и библиотека Python для управления секретами непосредственно в YAML файлах конфигурации. Позволяет шифровать отдельные значения с помощью тега `!SEC` и загружать значения из переменных окружения с помощью тега `!ENV`.
21
-
22
- ## Пример YAML файла (`config.yaml`):
23
-
24
- ```yaml
25
- # config.yaml
26
- database:
27
- host: db.example.com
28
- username: user
29
- # Зашифрованный пароль с помощью keylocker encrypt
30
- password: !SEC gAAAAABh...[rest of encrypted data]...
31
- api:
32
- endpoint: [https://api.example.com](https://api.example.com)
33
- # Загрузка ключа из переменной окружения API_KEY
34
- key: !ENV API_KEY
35
- deployment:
36
- region: us-east-1
37
- # Еще один секрет
38
- ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
39
- ````
40
-
41
- ## Использование в CLI:
42
-
43
- 1. **Инициализация (создание ключа):**
44
-
45
- ```bash
46
- keylocker init
47
- # Будет создан файл storage.key (если не существует)
48
- ```
49
-
50
- 2. **Шифрование значения для вставки в YAML:**
51
-
52
- ```bash
53
- keylocker encrypt "my_secret_value"
54
- # Вывод:
55
- # Add the following line to your YAML file:
56
- # !SEC gAAAAABh...[encrypted data]...
57
-
58
- # Скопируйте строку !SEC ... в ваш YAML файл
59
- ```
60
-
61
- 3. **Просмотр расшифрованного YAML:**
62
-
63
- ```bash
64
- # Установите переменную окружения (если используется !ENV)
65
- export API_KEY="your_actual_api_key"
66
-
67
- keylocker view config.yaml
68
- # Выведет YAML с расшифрованными значениями !SEC
69
- # и подставленными значениями !ENV
70
- # Пример вывода:
71
- # database:
72
- # host: db.example.com
73
- # username: user
74
- # password: my_secret_value # Расшифровано!
75
- # api:
76
- # endpoint: [https://api.example.com](https://api.example.com)
77
- # key: your_actual_api_key # Подставлено из env!
78
- # deployment:
79
- # region: us-east-1
80
- # ssh_key_pass: decrypted_pass # Расшифровано!
81
- ```
82
-
83
- *(Примечание: Команда `edit` может быть добавлена в будущем для интерактивного редактирования)*
84
-
85
- ## Использование в коде Python:
86
-
87
- ```python
88
- import os
89
- from keylocker import load_yaml_secrets
90
-
91
- # Установите переменные окружения, если нужно
92
- os.environ['API_KEY'] = 'your_actual_api_key_for_python'
93
-
94
- config_file = 'config.yaml'
95
- key_file = 'storage.key' # Убедитесь, что ключ существует
96
-
97
- try:
98
- # Загрузка и автоматическая расшифровка/подстановка
99
- secrets = load_yaml_secrets(config_file, key_file)
100
-
101
- if secrets:
102
- db_password = secrets.get('database', {}).get('password')
103
- api_key = secrets.get('api', {}).get('key')
104
-
105
- print(f"Database Password: {db_password}")
106
- print(f"API Key: {api_key}")
107
-
108
- except Exception as e:
109
- print(f"An error occurred: {e}")
110
-
111
- ```
112
-
113
- ## Использование в Bash:
114
-
115
- Для извлечения конкретных значений из расшифрованного YAML можно использовать утилиты вроде `yq` или стандартные инструменты Unix.
116
-
117
- ```bash
118
- #!/bin/bash
119
-
120
- # Убедитесь, что переменная окружения установлена, если она нужна
121
- export API_KEY="your_bash_api_key"
122
-
123
- # Получаем расшифрованный YAML
124
- CONFIG_YAML=$(keylocker view config.yaml)
125
-
126
- # Проверка, что команда выполнилась успешно
127
- if [ $? -ne 0 ]; then
128
- echo "Ошибка при выполнении keylocker view"
129
- exit 1
130
- fi
131
-
132
- # Пример извлечения с помощью yq (требует установки yq)
133
- # DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
134
- # API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
135
-
136
- # Пример извлечения с помощью grep/sed (менее надежно)
137
- DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
138
- API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
139
-
140
-
141
- echo "Извлеченный пароль БД: $DB_PASS"
142
- echo "Извлеченный API ключ: $API_KEY_FROM_YAML"
143
-
144
- # Дальнейшее использование переменных...
145
- # poetry publish --username user --password "${DB_PASS}" --build
146
- ```
147
-
148
-
149
- ## Source Code:
150
- * [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
151
-
152
- ## Travis CI Deploys:
153
- * [https://travis-ci.com/vpuhoff/keylocker](https://travis-ci.com/vpuhoff/keylocker) [![Build Status](https://travis-ci.com/vpuhoff/keylocker.svg?branch=master)](https://travis-ci.com/vpuhoff/keylocker)
154
-
keylocker-0.4.2/README.md DELETED
@@ -1,136 +0,0 @@
1
- # Keylocker CLI (YAML Edition)
2
-
3
- Инструмент командной строки (CLI) и библиотека Python для управления секретами непосредственно в YAML файлах конфигурации. Позволяет шифровать отдельные значения с помощью тега `!SEC` и загружать значения из переменных окружения с помощью тега `!ENV`.
4
-
5
- ## Пример YAML файла (`config.yaml`):
6
-
7
- ```yaml
8
- # config.yaml
9
- database:
10
- host: db.example.com
11
- username: user
12
- # Зашифрованный пароль с помощью keylocker encrypt
13
- password: !SEC gAAAAABh...[rest of encrypted data]...
14
- api:
15
- endpoint: [https://api.example.com](https://api.example.com)
16
- # Загрузка ключа из переменной окружения API_KEY
17
- key: !ENV API_KEY
18
- deployment:
19
- region: us-east-1
20
- # Еще один секрет
21
- ssh_key_pass: !SEC gAAAAABh...[another encrypted data]...
22
- ````
23
-
24
- ## Использование в CLI:
25
-
26
- 1. **Инициализация (создание ключа):**
27
-
28
- ```bash
29
- keylocker init
30
- # Будет создан файл storage.key (если не существует)
31
- ```
32
-
33
- 2. **Шифрование значения для вставки в YAML:**
34
-
35
- ```bash
36
- keylocker encrypt "my_secret_value"
37
- # Вывод:
38
- # Add the following line to your YAML file:
39
- # !SEC gAAAAABh...[encrypted data]...
40
-
41
- # Скопируйте строку !SEC ... в ваш YAML файл
42
- ```
43
-
44
- 3. **Просмотр расшифрованного YAML:**
45
-
46
- ```bash
47
- # Установите переменную окружения (если используется !ENV)
48
- export API_KEY="your_actual_api_key"
49
-
50
- keylocker view config.yaml
51
- # Выведет YAML с расшифрованными значениями !SEC
52
- # и подставленными значениями !ENV
53
- # Пример вывода:
54
- # database:
55
- # host: db.example.com
56
- # username: user
57
- # password: my_secret_value # Расшифровано!
58
- # api:
59
- # endpoint: [https://api.example.com](https://api.example.com)
60
- # key: your_actual_api_key # Подставлено из env!
61
- # deployment:
62
- # region: us-east-1
63
- # ssh_key_pass: decrypted_pass # Расшифровано!
64
- ```
65
-
66
- *(Примечание: Команда `edit` может быть добавлена в будущем для интерактивного редактирования)*
67
-
68
- ## Использование в коде Python:
69
-
70
- ```python
71
- import os
72
- from keylocker import load_yaml_secrets
73
-
74
- # Установите переменные окружения, если нужно
75
- os.environ['API_KEY'] = 'your_actual_api_key_for_python'
76
-
77
- config_file = 'config.yaml'
78
- key_file = 'storage.key' # Убедитесь, что ключ существует
79
-
80
- try:
81
- # Загрузка и автоматическая расшифровка/подстановка
82
- secrets = load_yaml_secrets(config_file, key_file)
83
-
84
- if secrets:
85
- db_password = secrets.get('database', {}).get('password')
86
- api_key = secrets.get('api', {}).get('key')
87
-
88
- print(f"Database Password: {db_password}")
89
- print(f"API Key: {api_key}")
90
-
91
- except Exception as e:
92
- print(f"An error occurred: {e}")
93
-
94
- ```
95
-
96
- ## Использование в Bash:
97
-
98
- Для извлечения конкретных значений из расшифрованного YAML можно использовать утилиты вроде `yq` или стандартные инструменты Unix.
99
-
100
- ```bash
101
- #!/bin/bash
102
-
103
- # Убедитесь, что переменная окружения установлена, если она нужна
104
- export API_KEY="your_bash_api_key"
105
-
106
- # Получаем расшифрованный YAML
107
- CONFIG_YAML=$(keylocker view config.yaml)
108
-
109
- # Проверка, что команда выполнилась успешно
110
- if [ $? -ne 0 ]; then
111
- echo "Ошибка при выполнении keylocker view"
112
- exit 1
113
- fi
114
-
115
- # Пример извлечения с помощью yq (требует установки yq)
116
- # DB_PASS=$(echo "$CONFIG_YAML" | yq e '.database.password' -)
117
- # API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | yq e '.api.key' -)
118
-
119
- # Пример извлечения с помощью grep/sed (менее надежно)
120
- DB_PASS=$(echo "$CONFIG_YAML" | grep -A 1 'database:' | grep 'password:' | awk '{print $2}')
121
- API_KEY_FROM_YAML=$(echo "$CONFIG_YAML" | grep -A 1 'api:' | grep 'key:' | awk '{print $2}')
122
-
123
-
124
- echo "Извлеченный пароль БД: $DB_PASS"
125
- echo "Извлеченный API ключ: $API_KEY_FROM_YAML"
126
-
127
- # Дальнейшее использование переменных...
128
- # poetry publish --username user --password "${DB_PASS}" --build
129
- ```
130
-
131
-
132
- ## Source Code:
133
- * [https://github.com/vpuhoff/keylocker](https://github.com/vpuhoff/keylocker)
134
-
135
- ## Travis CI Deploys:
136
- * [https://travis-ci.com/vpuhoff/keylocker](https://travis-ci.com/vpuhoff/keylocker) [![Build Status](https://travis-ci.com/vpuhoff/keylocker.svg?branch=master)](https://travis-ci.com/vpuhoff/keylocker)