Commit Graph

18 Commits

Author SHA1 Message Date
beubax b374fb49a0 fix: address production readiness review 2026-06-10 16:55:14 +05:30
Manoj Bajaj 10f6e8ae41 fix: Remove type checking hacks 2026-06-04 21:28:22 +05:30
beubax 54ba227341 refactor: move server secret resolution out of vault 2026-05-27 16:42:18 +05:30
beubax 52c8c2aec6 refactor: simplify create_vault dependency and remove unused server store tests 2026-05-27 16:18:51 +05:30
beubax 5a6c12cd75 Merge branch 'main' into feature/server-store-refactor 2026-05-27 16:06:30 +05:30
beubax 6f0f61c372 refactor: replace file-based registry storage with a unified SQL-backed ServerStore implementation 2026-05-27 16:02:24 +05:30
Manoj Bajaj b76903d74b feat: replace flat master-key vault encryption with Argon2id KEK/DEK model
Replaces the flat FernetEncryptionWrapper + EncryptionConfig model with a
proper envelope encryption scheme:

- MasterSecretResolver: unified resolution order (env → file → keyring →
  auto-generate) under a single AUTHSOME_MASTER_KEY env var; no separate
  passphrase vs raw-key distinction — both go through Argon2id
- DekManager: generates a random 256-bit DEK, wraps it with an
  Argon2id-derived KEK (AES-256-GCM), and stores the wrapped record in the
  KV store under __vault_meta__:__dek__ so it works with any KV backend
- AesGcmEncryptionWrapper: drop-in BaseEncryptionWrapper using AES-256-GCM
  per-value encryption via closure; replaces FernetEncryptionWrapper
- Vault: simplified — no longer owns crypto or lifecycle; receives an
  already-encrypted AsyncKeyValue; close() removed (caller manages store)
- EncryptionConfig removed from ServerConfig and models __all__
- Health route updated to report crypto_source from Vault properties
- Tests rewritten with fixtures and SimpleStore (in-memory); no DiskStore

BREAKING CHANGE: existing Fernet-encrypted vaults cannot be read back;
migration requires re-importing credentials.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Entire-Checkpoint: a778dfa71075
2026-05-27 14:01:42 +05:30
Ankit Ranjan 7e3a63480c refactor: remove vault rekey functionality and associated endpoints 2026-05-25 18:03:47 +05:30
Ankit Ranjan 39b3419137 refactor: delegate vault rekey persistence and validation to crypto backends 2026-05-21 15:24:08 +05:30
Ankit Ranjan 83709f4e37 fix: improve whoami robustness by handling connection failures gracefully and isolating keyring tests 2026-05-21 15:11:01 +05:30
Ankit Ranjan e7f418707a feat: implement vault rekey functionality with encryption source validation and add corresponding API and unit tests. 2026-05-21 14:50:04 +05:30
Ankit Ranjan 84f879985b Merge branch 'main' into feat/authsome-rekey 2026-05-21 14:41:37 +05:30
Manoj Bajaj bb5a2a6152 refactor!: Create version 0.4 which adds support for principal, identity, vault key loading precedence and many more fixes 2026-05-20 21:29:50 +05:30
Ankit Ranjan 3c80c7e01e feat: implement master key rotation via rekey command and API endpoint 2026-05-18 16:15:32 +05:30
beubax 112fe8ba8a refactor: migrate LocalAppStore from SQLite to key-value-aio DiskStore 2026-05-12 12:56:05 +05:30
Ankit Ranjan b0835eb299 refactor: decompose monolithic CLI tests into modular, feature-specific test files 2026-05-08 17:41:50 +05:30
beubax 0499c70a4f refactor: consolidate initialization logic into AuthsomeContext and remove legacy init command 2026-04-27 14:32:19 +05:30
Manoj Bajaj bfd75eeae0 feat!: v0.2.0 — Vault + AuthLayer architecture, InputProvider, FlowResult
BREAKING CHANGE: Complete internal restructuring. All public Python API
has moved; CLI commands and flags are unchanged.

Architecture changes:
- Introduce Vault layer (vault/) — generic encrypted KV store; replaces
  store/ + crypto/ monolith. Compact AES-256-GCM format, LocalFile and
  Keyring backends.
- Introduce AuthLayer (auth/) — owns flows, token refresh, login/logout/
  revoke. Receives Vault + ProviderRegistry as deps; no direct crypto.
- Introduce AuthsomeContext (context.py) — thin wiring container
  replacing AuthClient as the CLI entry point.
- Move flows/ → auth/flows/, models/ → auth/models/,
  providers/ → auth/providers/. Delete store/, crypto/, client.py.

New features:
- InputProvider protocol: BridgeInputProvider, InteractiveInputProvider,
  MockInputProvider — replaces ad-hoc secure_input_bridge calls and
  simplifies test setup.
- FlowResult dataclass: flows now return FlowResult(connection,
  client_record) instead of a bare ConnectionRecord. DCR flow populates
  client_record only when it actually registered a new client.
- RequestRouter class removed; routing inlined as _route() module-level
  function in proxy/server.py. AuthProxyAddon takes only auth: AuthLayer.
- ConnectionRecord v2: tokens are plaintext str (Vault handles
  encryption at rest). Sensitive annotation marks fields for redaction.

Docs:
- docs/UBIQUITOUS_LANGUAGE.md: added Architecture Layers section (Vault,
  AuthLayer, AuthsomeContext, Sensitive); deprecated CredentialStore,
  CryptoBackend, EncryptedField.
- docs/manual-testing.md: end-to-end manual testing guide.

Tests reorganized under tests/auth/, tests/vault/, tests/proxy/,
tests/common/. 262 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:15:05 +05:30