Commit Graph

172 Commits

Author SHA1 Message Date
salvacybersec
1e3f112d79 merge: plan 01-02 provider registry 2026-04-05 00:14:05 +03:00
salvacybersec
de8bb5560f merge: plan 01-03 storage layer 2026-04-05 00:13:45 +03:00
salvacybersec
62fdb14162 docs(01-02): complete provider registry plan
- SUMMARY.md: schema validation + embed loader + Aho-Corasick registry
- STATE.md: updated progress (20%), decisions, metrics
- ROADMAP.md: phase 01 in-progress (1/5 summaries)
- REQUIREMENTS.md: marked CORE-02, CORE-03, CORE-06, PROV-10 complete
2026-04-05 00:13:03 +03:00
salvacybersec
a9859b3384 feat(01-02): embed loader, registry with Aho-Corasick, and filled test stubs
- loader.go with go:embed definitions/*.yaml for compile-time embedding
- registry.go with List(), Get(), Stats(), AC() methods
- Aho-Corasick automaton built from all provider keywords at NewRegistry()
- pkg/providers/definitions/ with 3 YAML files for embed
- All 5 provider tests pass: load, get, stats, AC, schema validation
2026-04-05 00:10:56 +03:00
salvacybersec
43aeb8985d docs(01-foundation-03): complete storage layer plan — SUMMARY, STATE, ROADMAP, REQUIREMENTS updated
- 01-03-SUMMARY.md: AES-256-GCM + Argon2id + SQLite CRUD layer complete
- STATE.md: progress 20%, decisions logged, session updated
- ROADMAP.md: Phase 1 In Progress (1/5 summaries)
- REQUIREMENTS.md: STOR-01, STOR-02, STOR-03 marked complete
2026-04-05 00:07:24 +03:00
salvacybersec
f62a17ad1c docs(01-01): complete Go module bootstrap plan
- SUMMARY.md: module initialized, 10 deps pinned, test scaffolding created
- STATE.md: advanced to plan 2/5, recorded decisions and session
- ROADMAP.md: Phase 01 progress updated (1/5 summaries)
- REQUIREMENTS.md: marked CORE-01..07, STOR-01..03, CLI-01 complete
2026-04-05 00:06:20 +03:00
salvacybersec
3334633867 feat(01-foundation-03): implement SQLite storage with Finding CRUD and encryption
- schema.sql: CREATE TABLE for findings, scans, settings with indexes
- db.go: Open() with WAL mode, foreign keys, embedded schema migration
- findings.go: SaveFinding encrypts key_value before INSERT, ListFindings decrypts after SELECT
- MaskKey: first8...last4 masking helper
- Fix: NULL scan_id handling for findings without parent scan
2026-04-05 00:05:54 +03:00
salvacybersec
58259cb9d3 feat(01-01): create main.go, test scaffolding, and testdata fixtures
- main.go entry point (7 lines) delegates to cmd.Execute()
- cmd/root.go stub so go build ./... compiles (Plan 05 replaces)
- pkg/providers, pkg/storage, pkg/engine package stubs
- Test stubs with t.Skip() for providers, storage, engine packages
- testdata/samples: openai_key.txt, anthropic_key.txt, multiple_keys.txt, no_keys.txt
- go build ./... and go test ./... -short both exit 0
2026-04-05 00:04:42 +03:00
salvacybersec
239e2c214c feat(01-foundation-03): implement AES-256-GCM encryption and Argon2id key derivation
- Encrypt/Decrypt using AES-256-GCM with random nonce prepended to ciphertext
- ErrCiphertextTooShort sentinel error for malformed ciphertext
- DeriveKey using Argon2id RFC 9106 params (time=1, mem=64MB, threads=4, keyLen=32)
- NewSalt generates cryptographically random 16-byte salt
2026-04-05 00:04:33 +03:00
salvacybersec
4fcdc42c70 feat(01-02): provider YAML schema structs with validation and reference YAML files
- Provider, Pattern, VerifySpec, RegistryStats structs in schema.go
- UnmarshalYAML validates format_version >= 1 and last_verified non-empty
- Three reference YAML files: openai, anthropic, huggingface
2026-04-05 00:04:29 +03:00
salvacybersec
7994220fbe chore(01-01): initialize Go module with Phase 1 dependencies
- go mod init github.com/salvacybersec/keyhunter
- Pin cobra v1.10.2, viper v1.21.0, ants v2.12.0 to exact versions
- Add modernc.org/sqlite v1.48.1 (CGO-free, pure Go)
- Add petar-dambovaliev/aho-corasick, x/crypto, x/time, lipgloss, testify
- tools.go with build tag to pin dependencies not yet imported in production code
2026-04-05 00:04:06 +03:00
salvacybersec
2ef54f7196 test(01-foundation-03): add failing tests for storage layer
- Tests for AES-256-GCM encrypt/decrypt roundtrip
- Tests for Argon2id key derivation determinism
- Tests for SQLite open with schema tables
- Tests for SaveFinding/ListFindings with encryption contract
- Tests verify raw BLOB does not contain plaintext key
2026-04-05 00:04:06 +03:00
salvacybersec
ebaf7d7c2d test(01-02): add failing tests for provider schema validation and registry 2026-04-05 00:03:55 +03:00
salvacybersec
fb8a1f002b fix(01-foundation): address all checker blockers and warnings in phase plans 2026-04-04 23:57:01 +03:00
salvacybersec
684b67cb73 docs(01-foundation): create phase 1 plan — 5 plans across 3 execution waves
Wave 0: module init + test scaffolding (01-01)
Wave 1: provider registry (01-02) + storage layer (01-03) in parallel
Wave 2: scan engine pipeline (01-04, depends on 01-02)
Wave 3: CLI wiring + integration checkpoint (01-05, depends on all)

Covers all 16 Phase 1 requirements: CORE-01 through CORE-07, STOR-01 through STOR-03,
CLI-01 through CLI-05, PROV-10.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 23:44:09 +03:00
salvacybersec
c573b97a68 docs(phase-1): add validation strategy 2026-04-04 23:33:07 +03:00
salvacybersec
fa3916a417 docs(phase-1): research foundation phase
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 23:32:10 +03:00
salvacybersec
ee92aad4cf docs: create roadmap (18 phases) 2026-04-04 19:12:41 +03:00
salvacybersec
6803863833 docs: define v1 requirements 2026-04-04 19:05:33 +03:00
salvacybersec
6c3a84b1ff docs: complete project research 2026-04-04 19:03:12 +03:00
salvacybersec
c8e744cb48 docs: initialize project 2026-04-04 18:54:39 +03:00
salvacybersec
f3773d2895 chore: add project config 2026-04-04 18:53:45 +03:00