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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: toru-vault
3
- Version: 0.1.3
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
- ![Version](https://img.shields.io/badge/version-1.0.0-blue)
31
+ ![Version](https://img.shields.io/badge/version-0.2.0-blue)
30
32
  ![Python](https://img.shields.io/badge/python-3.10%2B-blue)
31
33
  ![License](https://img.shields.io/badge/license-MIT-green)
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
- - Secure in-memory caching with encryption
39
- - Automatic cache expiration (5 minutes)
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. **Lazy Decryption**: Secrets are only decrypted when explicitly accessed
196
- 4. **Cache Expiration**: Cached secrets expire after 5 minutes by default
197
- 5. **Secure File Permissions**: Sets secure permissions on state files
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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,,