toru-vault 0.1.3__py3-none-any.whl → 0.2.0__py3-none-any.whl
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.
- toru_vault/__init__.py +1 -0
- toru_vault/__main__.py +29 -6
- toru_vault/in_env.py +173 -0
- toru_vault/in_memory.py +379 -0
- toru_vault/lazy_dict.py +10 -15
- toru_vault/vault.py +101 -424
- {toru_vault-0.1.3.dist-info → toru_vault-0.2.0.dist-info}/METADATA +21 -14
- toru_vault-0.2.0.dist-info/RECORD +13 -0
- {toru_vault-0.1.3.dist-info → toru_vault-0.2.0.dist-info}/WHEEL +1 -1
- toru_vault-0.1.3.dist-info/RECORD +0 -11
- {toru_vault-0.1.3.dist-info → toru_vault-0.2.0.dist-info}/entry_points.txt +0 -0
- {toru_vault-0.1.3.dist-info → toru_vault-0.2.0.dist-info}/licenses/LICENSE +0 -0
- {toru_vault-0.1.3.dist-info → toru_vault-0.2.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: toru-vault
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.2.0
|
4
4
|
Summary: ToruVault: A simple Python package for managing Bitwarden secrets
|
5
5
|
Author: Toru AI
|
6
6
|
Author-email: ToruAI <mpaszynski@toruai.com>
|
@@ -15,6 +15,8 @@ Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
16
16
|
Requires-Dist: bitwarden-sdk
|
17
17
|
Requires-Dist: cryptography>=36.0.0
|
18
|
+
Provides-Extra: keyring
|
19
|
+
Requires-Dist: keyring>=23.0.0; extra == "keyring"
|
18
20
|
Dynamic: author
|
19
21
|
Dynamic: license-file
|
20
22
|
Dynamic: requires-python
|
@@ -26,7 +28,7 @@ Dynamic: requires-python
|
|
26
28
|
A simple Python package for managing Bitwarden secrets with enhanced security.
|
27
29
|
|
28
30
|
|
29
|
-

|
30
32
|

|
31
33
|

|
32
34
|
|
@@ -35,8 +37,8 @@ A simple Python package for managing Bitwarden secrets with enhanced security.
|
|
35
37
|
- Load secrets from Bitwarden Secret Manager into environment variables
|
36
38
|
- Get secrets as a Python dictionary
|
37
39
|
- Filter secrets by project ID
|
38
|
-
-
|
39
|
-
-
|
40
|
+
- JIT decryption of individual secrets
|
41
|
+
- No persistent caching of decrypted values
|
40
42
|
- Secure file permissions for state storage
|
41
43
|
- Machine-specific secret protection
|
42
44
|
- Secure credential storage using OS keyring
|
@@ -49,21 +51,27 @@ A simple Python package for managing Bitwarden secrets with enhanced security.
|
|
49
51
|
# Install UV if you don't have it already
|
50
52
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
51
53
|
|
52
|
-
# Install toru-vault package
|
54
|
+
# Install toru-vault package (basic installation)
|
53
55
|
uv pip install toru-vault
|
54
56
|
|
57
|
+
# Or install with keyring support (recommended for secure storage)
|
58
|
+
uv pip install toru-vault[keyring]
|
59
|
+
|
55
60
|
# Or install in a virtual environment (recommended)
|
56
61
|
uv venv create -p python3.10 .venv
|
57
62
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
58
|
-
uv pip install toru-vault
|
63
|
+
uv pip install toru-vault[keyring]
|
59
64
|
```
|
60
65
|
|
61
|
-
|
62
|
-
This will automatically install all required dependencies:
|
66
|
+
This will install all required dependencies:
|
63
67
|
- bitwarden-sdk - For interfacing with Bitwarden API
|
64
|
-
- keyring - For secure credential storage
|
65
68
|
- cryptography - For encryption/decryption operations
|
66
69
|
|
70
|
+
And when installed with the keyring option:
|
71
|
+
- keyring - For secure credential storage using OS keyring
|
72
|
+
|
73
|
+
> **Note:** Keyring is now optional but recommended. Without keyring, some features like `toru-vault init` won't work, and you'll need to use the `use_keyring=False` parameter with the `get()` function to use in-memory encryption instead of the system keyring.
|
74
|
+
|
67
75
|
### From Source with UV
|
68
76
|
|
69
77
|
```bash
|
@@ -191,11 +199,10 @@ vault.env_load_all(override=True)
|
|
191
199
|
The vault package includes several security enhancements:
|
192
200
|
|
193
201
|
1. **OS Keyring Integration**: Securely stores BWS_TOKEN, ORGANIZATION_ID, and STATE_FILE in your OS keyring
|
194
|
-
2. **Memory Protection**: Secrets are encrypted in memory using Fernet encryption (AES-128)
|
195
|
-
3. **
|
196
|
-
4. **
|
197
|
-
5. **
|
198
|
-
6. **Machine-Specific Encryption**: Uses machine-specific identifiers for encryption keys
|
202
|
+
2. **Memory Protection**: Secrets are individually encrypted in memory using Fernet encryption (AES-128)
|
203
|
+
3. **JIT Decryption**: Secrets are only decrypted when explicitly accessed and never stored in decrypted form
|
204
|
+
4. **Secure File Permissions**: Sets secure permissions on state files
|
205
|
+
5. **Machine-Specific Encryption**: Uses machine-specific identifiers for encryption keys
|
199
206
|
7. **Cache Clearing**: Automatically clears secret cache on program exit
|
200
207
|
8. **Environment Variable Protection**: Doesn't override existing environment variables by default
|
201
208
|
9. **Secure Key Derivation**: Uses PBKDF2 with SHA-256 for key derivation
|
@@ -0,0 +1,13 @@
|
|
1
|
+
toru_vault/__init__.py,sha256=cuJbupbncEeVdqwab-yn1AYh7WidavXkTmKXFbIGzak,199
|
2
|
+
toru_vault/__main__.py,sha256=K7r3qU55avI0n9k2PpOME8LYJTTpAzkkKa2Ytq78Nqo,7245
|
3
|
+
toru_vault/in_env.py,sha256=cr-Md7YODsRgeebPrzMcRsvojmVH4Mb-cmsUWFcj64k,6253
|
4
|
+
toru_vault/in_memory.py,sha256=Xt9F_a3it-SQ9f2lMdvO0e4aCkrcZR6bUujuMKHABS0,13608
|
5
|
+
toru_vault/lazy_dict.py,sha256=VRJAP-3SSk09GZh4le69kmHCoPzNOmP2ewWEEG5po6g,3054
|
6
|
+
toru_vault/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
7
|
+
toru_vault/vault.py,sha256=rkXeNcRMbyg0zof8oaEJWJii-y2zUQ7uahSXvwypMQs,8764
|
8
|
+
toru_vault-0.2.0.dist-info/licenses/LICENSE,sha256=TbuuchABSutbmmaI1M232F22GsaI88_hwEvto5w_Ux4,1063
|
9
|
+
toru_vault-0.2.0.dist-info/METADATA,sha256=4T7rk_eTDzdgQLsYPrEgFR0Qyuz5cMTfCuhIsd71Eq8,8131
|
10
|
+
toru_vault-0.2.0.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
|
11
|
+
toru_vault-0.2.0.dist-info/entry_points.txt,sha256=dfqkbNftpmAv0iKzVgdkjymkCfj3TwzUrQm2PO7Xgxs,56
|
12
|
+
toru_vault-0.2.0.dist-info/top_level.txt,sha256=c9ulQ18kKs3HbkI5oeoLmnFTknjC0rY1BwsNLJKDua8,11
|
13
|
+
toru_vault-0.2.0.dist-info/RECORD,,
|
@@ -1,11 +0,0 @@
|
|
1
|
-
toru_vault/__init__.py,sha256=Co9SSa9gFFTME0YcMzA1vEqJxs045-0kYfdP9GxGasU,177
|
2
|
-
toru_vault/__main__.py,sha256=C7_IR95L9yMpwx_Nj31lQDnA9q9bo56j7lk1s6aoL9I,6729
|
3
|
-
toru_vault/lazy_dict.py,sha256=OZVD-VYQHFRzMw1dOPXpagnddAJNNCZKtcdmTiio4lk,3232
|
4
|
-
toru_vault/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
5
|
-
toru_vault/vault.py,sha256=Mrkhf2AXoEIwMNj4N8psO-sga1E_XtHhKiTm_haS_nE,20551
|
6
|
-
toru_vault-0.1.3.dist-info/licenses/LICENSE,sha256=TbuuchABSutbmmaI1M232F22GsaI88_hwEvto5w_Ux4,1063
|
7
|
-
toru_vault-0.1.3.dist-info/METADATA,sha256=6eeUJQXNFR2XiY-8HgjlrpWrfFE1hkLZROgp7telEBM,7642
|
8
|
-
toru_vault-0.1.3.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
9
|
-
toru_vault-0.1.3.dist-info/entry_points.txt,sha256=dfqkbNftpmAv0iKzVgdkjymkCfj3TwzUrQm2PO7Xgxs,56
|
10
|
-
toru_vault-0.1.3.dist-info/top_level.txt,sha256=c9ulQ18kKs3HbkI5oeoLmnFTknjC0rY1BwsNLJKDua8,11
|
11
|
-
toru_vault-0.1.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|