π Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β main.rs β
β (CLI routing via clap) β
β β
β keylens scan --path ./src --format cyclonedx β
β keylens diff --base a --head b --strict β
β β β β
β βΌ βΌ β
β ββββββββββββ βββββββββββββββββ ββββββββββββ β
β βscanner.rsβ βdependencies.rsβ β diff.rs β β
β β β β β β β β
β β ignore β β Cargo.lock β β HashSet β β
β β (walk) β β package-lock β β (delta) β β
β β β β requirements β β β β
β βtree-sitterβ β yarn.lock β β policy β β
β β (AST) β β Pipfile.lock β β (strict) β β
β ββββββ¬ββββββ ββββββββ¬βββββββββ βββββββ¬βββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββ β
β β policy.rs β β
β β severity Β· quantum safety Β· findings β β
β ββββββββββββββββββββββ¬ββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββ β
β β models.rs β β
β β CryptoAsset Β· CycloneDX structs Β· OIDs β β
β ββββββββββββββββββββββ¬ββββββββββββββββββββββ β
β β β
β ββββββββββ΄βββββββββ β
β βΌ βΌ β
β JSON stdout CycloneDX stdout β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Module Responsibilities
| Module |
Purpose |
main.rs |
CLI entry point, argument parsing, output routing |
scanner.rs |
Tree-sitter AST scanning for Python & JS; hardcoded secret detection; insecure PRNG detection |
dependencies.rs |
Lockfile parsing and cross-referencing against known crypto library database |
policy.rs |
Severity classification, quantum-safety assessment, deprecation detection |
diff.rs |
CBOM comparison engine with --strict mode |
models.rs |
Core CryptoAsset type + CycloneDX v1.5 output structures + OID mapping |