@cdxgen/cdxgen 13.0.1 → 13.2.0
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.
- package/README.md +30 -16
- package/bin/audit.js +6 -0
- package/bin/cdxgen.js +141 -7
- package/bin/evinse.js +3 -1
- package/data/component-tags.json +8 -1
- package/data/crypto-oid.json +88 -12
- package/data/frameworks-list.json +86 -1
- package/data/remediations.json +1167 -0
- package/data/rules/ai-bom.yaml +78 -0
- package/data/rules/asar-archives.yaml +1 -1
- package/data/rules/build-fidelity.yaml +782 -0
- package/data/rules/cargo-rust.yaml +132 -0
- package/data/rules/mcp-servers.yaml +122 -0
- package/data/rules/package-integrity.yaml +13 -13
- package/lib/audit/index.js +48 -4
- package/lib/audit/scoring.js +2 -8
- package/lib/audit/targets.js +6 -1
- package/lib/cli/bomAssembly.js +32 -1
- package/lib/cli/cliOptions.js +94 -7
- package/lib/cli/index.js +268 -49
- package/lib/cli/jsBom.js +91 -5
- package/lib/cli/jvmBom.js +1515 -1314
- package/lib/cli/managedBom.js +249 -28
- package/lib/cli/nativeBom.js +986 -10
- package/lib/core/activity.js +120 -2
- package/lib/core/buildLedger.js +799 -0
- package/lib/core/deferredExit.js +141 -0
- package/lib/core/env.js +108 -2
- package/lib/core/fs.js +60 -0
- package/lib/core/logger.js +12 -99
- package/lib/core/severity.js +16 -0
- package/lib/core/syncFileWriter.js +106 -0
- package/lib/core/userAgent.js +151 -0
- package/lib/ecosystems/cargoCache.js +364 -0
- package/lib/ecosystems/caxa.js +13 -5
- package/lib/ecosystems/cppEvidence.js +40 -2
- package/lib/ecosystems/ecosystems.js +250 -91
- package/lib/ecosystems/golem.js +11 -1
- package/lib/ecosystems/gradleutils.js +498 -17
- package/lib/ecosystems/kosi.js +1256 -0
- package/lib/ecosystems/parsers-crystal.js +179 -0
- package/lib/ecosystems/parsers-dotnet.js +69 -39
- package/lib/ecosystems/parsers-elm.js +816 -0
- package/lib/ecosystems/parsers-gleam.js +1 -1
- package/lib/ecosystems/parsers-js.js +26 -0
- package/lib/ecosystems/parsers-julia.js +268 -0
- package/lib/ecosystems/parsers-jvm.js +9 -0
- package/lib/ecosystems/parsers-lua.js +218 -0
- package/lib/ecosystems/parsers-misc.js +188 -2
- package/lib/ecosystems/parsers-nim.js +221 -0
- package/lib/ecosystems/parsers-opam.js +180 -0
- package/lib/ecosystems/parsers-perl.js +277 -0
- package/lib/ecosystems/parsers-python.js +172 -36
- package/lib/ecosystems/parsers-r.js +148 -0
- package/lib/ecosystems/parsers-rebar.js +411 -0
- package/lib/ecosystems/parsers-rust.js +944 -19
- package/lib/ecosystems/parsers-spack.js +204 -0
- package/lib/ecosystems/parsers-stack.js +264 -0
- package/lib/ecosystems/parsers-terraform.js +194 -0
- package/lib/ecosystems/pypiClassifiers.js +326 -0
- package/lib/ecosystems/pythonutils.js +49 -1
- package/lib/ecosystems/rubyutils.js +13 -0
- package/lib/ecosystems/rusi.js +126 -6
- package/lib/evinser/evinser.js +141 -13
- package/lib/helpers/agenticToolutils.js +925 -0
- package/lib/helpers/remote/dependency-track.js +81 -14
- package/lib/inventory/agentFormulationParser.js +57 -4
- package/lib/inventory/aiCollector.js +504 -10
- package/lib/inventory/aiInventory.js +12 -0
- package/lib/inventory/analyzer.js +488 -30
- package/lib/inventory/astWorker.js +6 -0
- package/lib/inventory/auditCategories.js +17 -0
- package/lib/inventory/cbomutils.js +30 -0
- package/lib/inventory/cdxrs.js +7 -2
- package/lib/inventory/communityAiConfigParser.js +215 -2
- package/lib/inventory/depsUtils.js +72 -0
- package/lib/inventory/dosai.js +508 -22
- package/lib/inventory/envcontext.js +215 -24
- package/lib/inventory/evidenceUtils.js +13 -0
- package/lib/inventory/fetchBatch.js +131 -2
- package/lib/inventory/fetchRate.js +74 -11
- package/lib/inventory/forgeEnricher.js +3 -2
- package/lib/inventory/jvmToolEnv.js +594 -0
- package/lib/inventory/mcpConfigParser.js +166 -2
- package/lib/inventory/mcpDiscovery.js +11 -0
- package/lib/inventory/mcpServerManifest.js +389 -0
- package/lib/inventory/mcpbBundle.js +419 -0
- package/lib/inventory/osinfo.js +1 -0
- package/lib/inventory/plugins.js +3 -0
- package/lib/inventory/protobom.js +54 -88
- package/lib/inventory/protobomLoader.js +4 -0
- package/lib/inventory/rustFormulationParser.js +1 -1
- package/lib/inventory/source.js +10 -4
- package/lib/inventory/stylePackageRefs.js +41 -0
- package/lib/inventory/svelteUtils.js +524 -0
- package/lib/inventory/toolRequirements.js +903 -0
- package/lib/managers/binary.js +24 -0
- package/lib/managers/docker.js +26 -5
- package/lib/parsers/huggingfaceUtils.js +15 -7
- package/lib/parsers/onnx.js +294 -0
- package/lib/parsers/safetensors.js +114 -0
- package/lib/server/server.js +1 -1
- package/lib/stages/postgen/annotationBuilder.js +97 -0
- package/lib/stages/postgen/auditBom.js +76 -79
- package/lib/stages/postgen/introspection/annotate.js +320 -0
- package/lib/stages/postgen/introspection/commandFacts.js +293 -0
- package/lib/stages/postgen/introspection/emit.js +192 -0
- package/lib/stages/postgen/introspection/formulationEvidence.js +427 -0
- package/lib/stages/postgen/introspection/markers.js +250 -0
- package/lib/stages/postgen/introspection/reflect.js +1214 -0
- package/lib/stages/postgen/introspection/report.js +1208 -0
- package/lib/stages/postgen/introspection/score.js +1067 -0
- package/lib/stages/postgen/introspection/shapeCommand.js +304 -0
- package/lib/stages/postgen/parentEdge.js +156 -0
- package/lib/stages/postgen/postgen.js +284 -3
- package/lib/stages/postgen/ruleEngine.js +17 -0
- package/lib/stages/pregen/envAudit.js +42 -2
- package/lib/stages/pregen/pregen.js +1171 -6
- package/lib/third-party/arborist/snapshots/calc-dep-flags.test.cjs +462 -0
- package/lib/validator/bomValidator.js +11 -2
- package/package.json +26 -26
- package/types/lib/audit/index.d.ts.map +1 -1
- package/types/lib/audit/scoring.d.ts +2 -8
- package/types/lib/audit/scoring.d.ts.map +1 -1
- package/types/lib/audit/targets.d.ts.map +1 -1
- package/types/lib/cli/bomAssembly.d.ts.map +1 -1
- package/types/lib/cli/cliOptions.d.ts +2 -1
- package/types/lib/cli/cliOptions.d.ts.map +1 -1
- package/types/lib/cli/index.d.ts +10 -2
- package/types/lib/cli/index.d.ts.map +1 -1
- package/types/lib/cli/jsBom.d.ts +23 -0
- package/types/lib/cli/jsBom.d.ts.map +1 -1
- package/types/lib/cli/jvmBom.d.ts.map +1 -1
- package/types/lib/cli/managedBom.d.ts +33 -0
- package/types/lib/cli/managedBom.d.ts.map +1 -1
- package/types/lib/cli/nativeBom.d.ts +88 -8
- package/types/lib/cli/nativeBom.d.ts.map +1 -1
- package/types/lib/core/activity.d.ts.map +1 -1
- package/types/lib/core/buildLedger.d.ts +272 -0
- package/types/lib/core/buildLedger.d.ts.map +1 -0
- package/types/lib/core/deferredExit.d.ts +84 -0
- package/types/lib/core/deferredExit.d.ts.map +1 -0
- package/types/lib/core/env.d.ts +43 -1
- package/types/lib/core/env.d.ts.map +1 -1
- package/types/lib/core/fs.d.ts +21 -0
- package/types/lib/core/fs.d.ts.map +1 -1
- package/types/lib/core/logger.d.ts +2 -11
- package/types/lib/core/logger.d.ts.map +1 -1
- package/types/lib/core/severity.d.ts +11 -0
- package/types/lib/core/severity.d.ts.map +1 -0
- package/types/lib/core/syncFileWriter.d.ts +33 -0
- package/types/lib/core/syncFileWriter.d.ts.map +1 -0
- package/types/lib/core/userAgent.d.ts +56 -0
- package/types/lib/core/userAgent.d.ts.map +1 -0
- package/types/lib/ecosystems/cargoCache.d.ts +75 -0
- package/types/lib/ecosystems/cargoCache.d.ts.map +1 -0
- package/types/lib/ecosystems/caxa.d.ts.map +1 -1
- package/types/lib/ecosystems/cppEvidence.d.ts +1 -1
- package/types/lib/ecosystems/cppEvidence.d.ts.map +1 -1
- package/types/lib/ecosystems/ecosystems.d.ts +15 -1
- package/types/lib/ecosystems/ecosystems.d.ts.map +1 -1
- package/types/lib/ecosystems/gradleutils.d.ts +53 -0
- package/types/lib/ecosystems/gradleutils.d.ts.map +1 -1
- package/types/lib/ecosystems/kosi.d.ts +73 -0
- package/types/lib/ecosystems/kosi.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-crystal.d.ts +27 -0
- package/types/lib/ecosystems/parsers-crystal.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts +19 -0
- package/types/lib/ecosystems/parsers-dotnet.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-elm.d.ts +79 -0
- package/types/lib/ecosystems/parsers-elm.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-js.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-julia.d.ts +57 -0
- package/types/lib/ecosystems/parsers-julia.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-jvm.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-lua.d.ts +50 -0
- package/types/lib/ecosystems/parsers-lua.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-misc.d.ts +23 -0
- package/types/lib/ecosystems/parsers-misc.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-nim.d.ts +43 -0
- package/types/lib/ecosystems/parsers-nim.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-opam.d.ts +31 -0
- package/types/lib/ecosystems/parsers-opam.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-perl.d.ts +36 -0
- package/types/lib/ecosystems/parsers-perl.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-python.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-r.d.ts +35 -0
- package/types/lib/ecosystems/parsers-r.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-rebar.d.ts +42 -0
- package/types/lib/ecosystems/parsers-rebar.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-rust.d.ts +199 -0
- package/types/lib/ecosystems/parsers-rust.d.ts.map +1 -1
- package/types/lib/ecosystems/parsers-spack.d.ts +33 -0
- package/types/lib/ecosystems/parsers-spack.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-stack.d.ts +35 -0
- package/types/lib/ecosystems/parsers-stack.d.ts.map +1 -0
- package/types/lib/ecosystems/parsers-terraform.d.ts +34 -0
- package/types/lib/ecosystems/parsers-terraform.d.ts.map +1 -0
- package/types/lib/ecosystems/pypiClassifiers.d.ts +80 -0
- package/types/lib/ecosystems/pypiClassifiers.d.ts.map +1 -0
- package/types/lib/ecosystems/pythonutils.d.ts +21 -1
- package/types/lib/ecosystems/pythonutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rubyutils.d.ts.map +1 -1
- package/types/lib/ecosystems/rusi.d.ts.map +1 -1
- package/types/lib/evinser/evinser.d.ts +34 -1
- package/types/lib/evinser/evinser.d.ts.map +1 -1
- package/types/lib/helpers/agenticToolutils.d.ts +87 -0
- package/types/lib/helpers/agenticToolutils.d.ts.map +1 -0
- package/types/lib/helpers/remote/dependency-track.d.ts +45 -4
- package/types/lib/helpers/remote/dependency-track.d.ts.map +1 -1
- package/types/lib/inventory/agentFormulationParser.d.ts.map +1 -1
- package/types/lib/inventory/aiCollector.d.ts.map +1 -1
- package/types/lib/inventory/aiInventory.d.ts.map +1 -1
- package/types/lib/inventory/analyzer.d.ts.map +1 -1
- package/types/lib/inventory/auditCategories.d.ts +12 -0
- package/types/lib/inventory/auditCategories.d.ts.map +1 -1
- package/types/lib/inventory/cbomutils.d.ts.map +1 -1
- package/types/lib/inventory/communityAiConfigParser.d.ts.map +1 -1
- package/types/lib/inventory/depsUtils.d.ts.map +1 -1
- package/types/lib/inventory/dosai.d.ts +43 -0
- package/types/lib/inventory/dosai.d.ts.map +1 -1
- package/types/lib/inventory/envcontext.d.ts.map +1 -1
- package/types/lib/inventory/evidenceUtils.d.ts.map +1 -1
- package/types/lib/inventory/fetchBatch.d.ts +43 -0
- package/types/lib/inventory/fetchBatch.d.ts.map +1 -1
- package/types/lib/inventory/fetchRate.d.ts +9 -6
- package/types/lib/inventory/fetchRate.d.ts.map +1 -1
- package/types/lib/inventory/forgeEnricher.d.ts.map +1 -1
- package/types/lib/inventory/jvmToolEnv.d.ts +190 -0
- package/types/lib/inventory/jvmToolEnv.d.ts.map +1 -0
- package/types/lib/inventory/mcpConfigParser.d.ts.map +1 -1
- package/types/lib/inventory/mcpDiscovery.d.ts.map +1 -1
- package/types/lib/inventory/mcpServerManifest.d.ts +19 -0
- package/types/lib/inventory/mcpServerManifest.d.ts.map +1 -0
- package/types/lib/inventory/mcpbBundle.d.ts +19 -0
- package/types/lib/inventory/mcpbBundle.d.ts.map +1 -0
- package/types/lib/inventory/osinfo.d.ts.map +1 -1
- package/types/lib/inventory/plugins.d.ts.map +1 -1
- package/types/lib/inventory/protobom.d.ts +18 -13
- package/types/lib/inventory/protobom.d.ts.map +1 -1
- package/types/lib/inventory/protobomLoader.d.ts.map +1 -1
- package/types/lib/inventory/source.d.ts.map +1 -1
- package/types/lib/inventory/stylePackageRefs.d.ts +17 -0
- package/types/lib/inventory/stylePackageRefs.d.ts.map +1 -0
- package/types/lib/inventory/svelteUtils.d.ts +124 -0
- package/types/lib/inventory/svelteUtils.d.ts.map +1 -0
- package/types/lib/inventory/toolRequirements.d.ts +216 -0
- package/types/lib/inventory/toolRequirements.d.ts.map +1 -0
- package/types/lib/managers/binary.d.ts.map +1 -1
- package/types/lib/managers/docker.d.ts.map +1 -1
- package/types/lib/parsers/huggingfaceUtils.d.ts +8 -1
- package/types/lib/parsers/huggingfaceUtils.d.ts.map +1 -1
- package/types/lib/parsers/onnx.d.ts +28 -0
- package/types/lib/parsers/onnx.d.ts.map +1 -0
- package/types/lib/parsers/safetensors.d.ts +22 -0
- package/types/lib/parsers/safetensors.d.ts.map +1 -0
- package/types/lib/stages/postgen/annotationBuilder.d.ts +53 -0
- package/types/lib/stages/postgen/annotationBuilder.d.ts.map +1 -0
- package/types/lib/stages/postgen/auditBom.d.ts.map +1 -1
- package/types/lib/stages/postgen/introspection/annotate.d.ts +81 -0
- package/types/lib/stages/postgen/introspection/annotate.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/commandFacts.d.ts +32 -0
- package/types/lib/stages/postgen/introspection/commandFacts.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/emit.d.ts +71 -0
- package/types/lib/stages/postgen/introspection/emit.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/formulationEvidence.d.ts +154 -0
- package/types/lib/stages/postgen/introspection/formulationEvidence.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/markers.d.ts +58 -0
- package/types/lib/stages/postgen/introspection/markers.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/reflect.d.ts +77 -0
- package/types/lib/stages/postgen/introspection/reflect.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/report.d.ts +85 -0
- package/types/lib/stages/postgen/introspection/report.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/score.d.ts +149 -0
- package/types/lib/stages/postgen/introspection/score.d.ts.map +1 -0
- package/types/lib/stages/postgen/introspection/shapeCommand.d.ts +79 -0
- package/types/lib/stages/postgen/introspection/shapeCommand.d.ts.map +1 -0
- package/types/lib/stages/postgen/parentEdge.d.ts +35 -0
- package/types/lib/stages/postgen/parentEdge.d.ts.map +1 -0
- package/types/lib/stages/postgen/postgen.d.ts +35 -2
- package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
- package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
- package/types/lib/stages/pregen/envAudit.d.ts.map +1 -1
- package/types/lib/stages/pregen/pregen.d.ts +131 -0
- package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
- package/types/lib/validator/bomValidator.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -32,15 +32,16 @@ Supported output document formats:
|
|
|
32
32
|
|
|
33
33
|
## Choose your path
|
|
34
34
|
|
|
35
|
-
| Persona | What cdxgen helps you do | First command | Read next
|
|
36
|
-
| --------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
37
|
-
| **Developers** | Generate a CycloneDX BOM from a local repo, git URL, purl, or container image | `cdxgen -o bom.json .` | [CLI Usage][docs-cli], [Supported Project Types][docs-project-types]
|
|
38
|
-
| **AI platform teams** | Generate AI/ML BOMs, catalog prompt/model/MCP surfaces, and run AI-BOM governance | `aibom .` | [AI-BOM Guide](docs/AI_BOM.md), [AI-BOM lesson](docs/LESSON15.md)
|
|
39
|
-
| **Hardware teams** | Generate an HBOM or merged HBOM+OBOM host view for the current host | `hbom -o hbom.json` | [HBOM guide](docs/HBOM.md), [HBOM lesson](docs/LESSON13.md)
|
|
40
|
-
| **AppSec** | Enrich BOMs with evidence, run BOM audit rules, and feed downstream security workflows | `cdxgen -o bom.json --profile appsec --evidence --bom-audit .` | [BOM Audit](docs/BOM_AUDIT.md), [Threat Model](docs/THREAT_MODEL.md)
|
|
41
|
-
| **
|
|
42
|
-
| **
|
|
43
|
-
| **
|
|
35
|
+
| Persona | What cdxgen helps you do | First command | Read next |
|
|
36
|
+
| --------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
37
|
+
| **Developers** | Generate a CycloneDX BOM from a local repo, git URL, purl, or container image | `cdxgen -o bom.json .` | [CLI Usage][docs-cli], [Supported Project Types][docs-project-types] |
|
|
38
|
+
| **AI platform teams** | Generate AI/ML BOMs, catalog prompt/model/MCP surfaces, and run AI-BOM governance | `aibom .` | [AI-BOM Guide](docs/AI_BOM.md), [AI-BOM lesson](docs/LESSON15.md) |
|
|
39
|
+
| **Hardware teams** | Generate an HBOM or merged HBOM+OBOM host view for the current host | `hbom -o hbom.json` | [HBOM guide](docs/HBOM.md), [HBOM lesson](docs/LESSON13.md) |
|
|
40
|
+
| **AppSec** | Enrich BOMs with evidence, run BOM audit rules, and feed downstream security workflows | `cdxgen -o bom.json --profile appsec --evidence --bom-audit .` | [BOM Audit](docs/BOM_AUDIT.md), [Threat Model](docs/THREAT_MODEL.md) |
|
|
41
|
+
| **Build engineers** | Grade how completely the SBOM captured the project, and get ranked fixes when the build environment degraded it | `cdxgen --profile introspect --introspect-fail-below 70 -o bom.json .` | [Build Introspection](docs/INTROSPECTION.md), [Fidelity loop skill](.agents/skills/sbom-fidelity-loop/SKILL.md) |
|
|
42
|
+
| **SOC analysts** | Build OBOM inventories for live hosts and triage runtime posture issues | `obom -o obom.json --deep --bom-audit --bom-audit-categories obom-runtime` | [OBOM lessons](docs/OBOM_LESSONS.md), [Server Usage][docs-server] |
|
|
43
|
+
| **Compliance teams** | Validate BOM quality, check SCVS/CRA posture, and export SPDX deliverables | `cdx-validate -i bom.json --benchmark scvs-l2,cra` | [cdx-validate](docs/CDX_VALIDATE.md), [cdx-convert](docs/CDX_CONVERT.md), [Permissions][docs-permissions] |
|
|
44
|
+
| **Security Teams** | Dynamically trace executions to capture cryptographic activities, CBOM properties, software components, and services | `tracebom --cbom-output cbom.json -- npm test` | [Threat Model](docs/THREAT_MODEL.md) |
|
|
44
45
|
|
|
45
46
|
### Role-based quick starts
|
|
46
47
|
|
|
@@ -120,6 +121,7 @@ Sections include:
|
|
|
120
121
|
- [MCP Inventory](docs/MCP.md)
|
|
121
122
|
- [REPL Guide](docs/REPL.md)
|
|
122
123
|
- [Custom Properties](docs/CUSTOM_PROPERTIES.md)
|
|
124
|
+
- [Claude Code Plugin](claude-plugin/README.md)
|
|
123
125
|
- [Deprecations](docs/DEPRECATIONS.md)
|
|
124
126
|
- [Security Policy](SECURITY.md)
|
|
125
127
|
- [Threat Model](docs/THREAT_MODEL.md)
|
|
@@ -214,7 +216,7 @@ Common asset names:
|
|
|
214
216
|
#### Linux
|
|
215
217
|
|
|
216
218
|
```bash
|
|
217
|
-
VERSION="v13.0
|
|
219
|
+
VERSION="v13.2.0"
|
|
218
220
|
ASSET="cdx-audit-linux-amd64"
|
|
219
221
|
BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
|
|
220
222
|
|
|
@@ -228,7 +230,7 @@ chmod +x "${ASSET}"
|
|
|
228
230
|
#### macOS
|
|
229
231
|
|
|
230
232
|
```bash
|
|
231
|
-
VERSION="v13.0
|
|
233
|
+
VERSION="v13.2.0"
|
|
232
234
|
ASSET="cdx-audit-darwin-arm64"
|
|
233
235
|
BASE_URL="https://github.com/cdxgen/cdxgen/releases/download/${VERSION}"
|
|
234
236
|
|
|
@@ -242,7 +244,7 @@ chmod +x "${ASSET}"
|
|
|
242
244
|
#### Windows (PowerShell)
|
|
243
245
|
|
|
244
246
|
```powershell
|
|
245
|
-
$Version = "v13.0
|
|
247
|
+
$Version = "v13.2.0"
|
|
246
248
|
$Asset = "cdx-audit-windows-amd64.exe"
|
|
247
249
|
$BaseUrl = "https://github.com/cdxgen/cdxgen/releases/download/$Version"
|
|
248
250
|
|
|
@@ -267,7 +269,7 @@ steps:
|
|
|
267
269
|
env:
|
|
268
270
|
GH_TOKEN: ${{ github.token }}
|
|
269
271
|
run: |
|
|
270
|
-
gh release download v13.0
|
|
272
|
+
gh release download v13.2.0 \
|
|
271
273
|
--repo cdxgen/cdxgen \
|
|
272
274
|
--pattern 'cdx-audit-linux-amd64' \
|
|
273
275
|
--pattern 'cdx-audit-linux-amd64.sha256'
|
|
@@ -495,14 +497,13 @@ Use repeated `--component-type` values to include only selected CycloneDX compon
|
|
|
495
497
|
cdxgen -t docker alpine:3.20 --spec-version 1.6 --component-type library --component-type data
|
|
496
498
|
```
|
|
497
499
|
|
|
498
|
-
To generate SBOM for C or Python,
|
|
500
|
+
To generate SBOM for C or Python, cdxgen uses the bundled atom companion. On linux-amd64, linux-arm64 (glibc), linux-amd64-musl, darwin-arm64, and windows-amd64, atom ships as a native binary and needs no JDK. Only the jar-based triples (darwin-amd64, windows-arm64, and linux-arm64-musl) run atom on the JVM.
|
|
499
501
|
|
|
500
502
|
```shell
|
|
501
|
-
# Install java >= 21
|
|
502
503
|
cdxgen -t c -o bom.json
|
|
503
504
|
```
|
|
504
505
|
|
|
505
|
-
NOTE:
|
|
506
|
+
NOTE: On the jar-based triples, atom requires Java >= 23 and is known to freeze with Java 8 or 11, so ensure a suitable version is installed and the JAVA_HOME environment variable is configured correctly. If in doubt, use the cdxgen container image.
|
|
506
507
|
|
|
507
508
|
## Universal SBOM
|
|
508
509
|
|
|
@@ -620,6 +621,17 @@ cdxgen can retain the dependency tree under the `dependencies` attribute for a s
|
|
|
620
621
|
pnpm dlx @cdxgen/cdxgen-plugins-bin
|
|
621
622
|
```
|
|
622
623
|
|
|
624
|
+
## Claude Code plugin
|
|
625
|
+
|
|
626
|
+
The cdxgen toolkit is also packaged as a [Claude Code](https://claude.com/claude-code) plugin, so agents drive the correct command and flags — including the dry-run-first and no-auto-install safety constraints — instead of guessing.
|
|
627
|
+
|
|
628
|
+
```shell
|
|
629
|
+
claude plugin marketplace add cdxgen/cdxgen
|
|
630
|
+
claude plugin install cdxgen@cdxgen-plugins
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
It ships skills covering SBOM generation, container and rootfs scans, OBOM/HBOM, CBOM, AI-BOM and MCP inventory, BOM auditing, signing, validation, conversion, evidence enrichment, runtime tracing, and Dependency-Track publishing. See [claude-plugin/README.md](claude-plugin/README.md).
|
|
634
|
+
|
|
623
635
|
## Rust accelerator (cdxrs)
|
|
624
636
|
|
|
625
637
|
cdxgen ships with an optional Rust accelerator binary, `cdxrs`, which speeds up hot paths such as registry metadata lookups where available. Use the `--rust` and `--no-rust` arguments to toggle it, or set the environment variable `CDXGEN_RS_DISABLE=all` to force the JavaScript path. See the [cdxrs protocol](./docs/CDXRS_PROTOCOL.md) document for implementation details.
|
|
@@ -775,6 +787,8 @@ pnpm dlx @cdxgen/cdxgen cdx-sign -i bom.json -k private.key
|
|
|
775
787
|
|
|
776
788
|
For node.js projects, lock files are parsed initially, so the SBOM would include all dependencies, including dev ones. An AST parser powered by babel-parser is then used to detect packages that are imported and used by non-test code. Such imported packages would automatically set their scope property to `required` in the resulting SBOM. You can turn off this analysis by passing the argument `--no-babel`. Scope property would then be set based on the `dev` attribute in the lock file.
|
|
777
789
|
|
|
790
|
+
Single-file component frameworks are handled natively by this analysis: `.vue` and `.svelte` templates are segmented position-preservingly so script imports recover with correct file and line evidence. For Svelte and SvelteKit, framework usage signals are additionally collected — SvelteKit virtual modules such as `$app/stores` are attributed to `@sveltejs/kit`, `$lib/*` imports resolve through `kit.alias`, `svelte.config.js` adapters and preprocessors, CSS preprocessor packages implied by `<style lang="...">` blocks together with their `@use`/`@import` package references, npm script executables such as `svelte-kit sync` and `svelte-check`, and rune usage (`$state`, `$derived`, ...) which marks `svelte` required even in components that never import it. This works in every installation; when the optional `@appthreat/atom-parsetools` package is present, template expressions also contribute usage occurrences.
|
|
791
|
+
|
|
778
792
|
This attribute can be later used for various purposes. For example, [dep-scan][depscan-github] uses this attribute to prioritize vulnerabilities. Unfortunately, tools such as dependency track, do not include this feature and might over-report the CVEs.
|
|
779
793
|
|
|
780
794
|
With the argument `--required-only`, you can limit the SBOM only to include packages with the scope "required", commonly called production or non-dev dependencies. Combine with `--no-babel` to limit this list to only non-dev dependencies based on the `dev` attribute being false in the lock files.
|
package/bin/audit.js
CHANGED
|
@@ -132,6 +132,11 @@ const args = yargs(hideBin(process.argv))
|
|
|
132
132
|
"Path to a license compliance policy YAML file. Evaluates every component license in the BOM(s) and reports prohibited and warning-level violations as a separate table. Error-level (prohibited) violations cause a non-zero exit.",
|
|
133
133
|
type: "string",
|
|
134
134
|
})
|
|
135
|
+
.option("introspect", {
|
|
136
|
+
description:
|
|
137
|
+
"Include a build-fidelity introspection verdict for each audited BOM. The BOM was not generated by this run, so the verdict rests on BOM structure alone.",
|
|
138
|
+
type: "boolean",
|
|
139
|
+
})
|
|
135
140
|
.check((argv) => {
|
|
136
141
|
if (!argv.bom && !argv.bomDir) {
|
|
137
142
|
throw new Error("Specify --bom or --bom-dir.");
|
|
@@ -204,6 +209,7 @@ function writeOrPrint(output, outputPath) {
|
|
|
204
209
|
categories: splitCsv(args.categories),
|
|
205
210
|
directBomAudit: args.directBomAudit,
|
|
206
211
|
failSeverity: args.failSeverity,
|
|
212
|
+
introspect: args.introspect === true,
|
|
207
213
|
licensePolicy: args.licensePolicy,
|
|
208
214
|
maxTargets: args.maxTargets,
|
|
209
215
|
minSeverity: args.minSeverity,
|
package/bin/cdxgen.js
CHANGED
|
@@ -4,6 +4,7 @@ import crypto from "node:crypto";
|
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import http from "node:http";
|
|
6
6
|
import https from "node:https";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
7
8
|
import {
|
|
8
9
|
basename,
|
|
9
10
|
dirname,
|
|
@@ -18,6 +19,7 @@ import { parse as _load } from "yaml";
|
|
|
18
19
|
import yargs from "yargs";
|
|
19
20
|
import { hideBin } from "yargs/helpers";
|
|
20
21
|
|
|
22
|
+
import { getExactAiInventoryType } from "../lib/cli/bomAssembly.js";
|
|
21
23
|
import {
|
|
22
24
|
applyAdvancedOptions as applyAdvancedOptionsImpl,
|
|
23
25
|
buildOptionsFromArgs,
|
|
@@ -25,6 +27,12 @@ import {
|
|
|
25
27
|
validateSpecVersion,
|
|
26
28
|
} from "../lib/cli/cliOptions.js";
|
|
27
29
|
import { createBom, submitBom } from "../lib/cli/index.js";
|
|
30
|
+
import { closeLedger } from "../lib/core/buildLedger.js";
|
|
31
|
+
import {
|
|
32
|
+
getDeferredFailures,
|
|
33
|
+
INTROSPECTION_FAILURE_EXIT_CODE,
|
|
34
|
+
isDeferredFailOnError,
|
|
35
|
+
} from "../lib/core/deferredExit.js";
|
|
28
36
|
import { TRACE_MODE, thoughtEnd, thoughtLog } from "../lib/core/logger.js";
|
|
29
37
|
import {
|
|
30
38
|
PROJECT_CONFIG_FILENAMES,
|
|
@@ -57,6 +65,7 @@ import {
|
|
|
57
65
|
retrieveCdxgenVersion,
|
|
58
66
|
safeExistsSync,
|
|
59
67
|
safeMkdirSync,
|
|
68
|
+
safeRmSync,
|
|
60
69
|
safeSpawnSync,
|
|
61
70
|
safeWriteSync,
|
|
62
71
|
setActivityContext,
|
|
@@ -115,7 +124,10 @@ import {
|
|
|
115
124
|
} from "../lib/inventory/source.js";
|
|
116
125
|
import { executeOsQuery } from "../lib/managers/binary.js";
|
|
117
126
|
import { getBomWithOras } from "../lib/managers/oci.js";
|
|
118
|
-
import {
|
|
127
|
+
import {
|
|
128
|
+
applyEvidenceBasedFilter,
|
|
129
|
+
postProcess,
|
|
130
|
+
} from "../lib/stages/postgen/postgen.js";
|
|
119
131
|
import { convertCycloneDxToSpdx } from "../lib/stages/postgen/spdxConverter.js";
|
|
120
132
|
import { auditEnvironment } from "../lib/stages/pregen/envAudit.js";
|
|
121
133
|
import { prepareEnv } from "../lib/stages/pregen/pregen.js";
|
|
@@ -486,8 +498,33 @@ const args = _yargs
|
|
|
486
498
|
"deep-learning",
|
|
487
499
|
"ml-deep",
|
|
488
500
|
"ml-tiny",
|
|
501
|
+
"introspect",
|
|
489
502
|
],
|
|
490
503
|
})
|
|
504
|
+
.option("introspect", {
|
|
505
|
+
type: "boolean",
|
|
506
|
+
description:
|
|
507
|
+
"Reflect on how the build environment limited BOM completeness and write an introspection report. Enabled by --profile introspect or CDXGEN_INTROSPECT=true. Pass --no-introspect to keep it off.",
|
|
508
|
+
})
|
|
509
|
+
.option("introspect-report", {
|
|
510
|
+
description:
|
|
511
|
+
"Path for the markdown introspection report. Defaults to <output>.introspection.md; '-' writes the report to stderr.",
|
|
512
|
+
})
|
|
513
|
+
.option("introspect-json", {
|
|
514
|
+
description:
|
|
515
|
+
"Path for the JSON introspection report consumed by remediation loops. Defaults to <output>.introspection.json.",
|
|
516
|
+
})
|
|
517
|
+
.option("introspect-fail-below", {
|
|
518
|
+
type: "number",
|
|
519
|
+
description:
|
|
520
|
+
"CI gate: exit with status 4 after the BOM is written when the overall introspection score is below this 0-100 threshold. Absent means the gate never fails.",
|
|
521
|
+
})
|
|
522
|
+
.option("introspect-annotate", {
|
|
523
|
+
type: "boolean",
|
|
524
|
+
default: true,
|
|
525
|
+
description:
|
|
526
|
+
"Carry the introspection verdict inside the BOM as metadata properties and annotations. Enabled with --introspect; pass --no-introspect-annotate to keep the BOM untouched.",
|
|
527
|
+
})
|
|
491
528
|
.option("lifecycle", {
|
|
492
529
|
description: "Product lifecycle for the generated BOM.",
|
|
493
530
|
hidden: true,
|
|
@@ -602,6 +639,7 @@ const args = _yargs
|
|
|
602
639
|
"suggest-build-tools",
|
|
603
640
|
"ruby-docker-install",
|
|
604
641
|
"resolve-gradle-distribution",
|
|
642
|
+
"jvm-tool-setup",
|
|
605
643
|
],
|
|
606
644
|
})
|
|
607
645
|
.option("min-confidence", {
|
|
@@ -1010,6 +1048,29 @@ const { options, warnings: phase3Warnings } = buildOptionsFromArgs(args, {
|
|
|
1010
1048
|
isDryRun,
|
|
1011
1049
|
isSecureMode,
|
|
1012
1050
|
});
|
|
1051
|
+
// Exit status reserved for the introspection CI gate: the BOM was generated
|
|
1052
|
+
// and written, but its introspection score missed the configured threshold.
|
|
1053
|
+
// Distinct from 1 so CI can tell a generation failure from a not-good-enough
|
|
1054
|
+
// SBOM.
|
|
1055
|
+
const INTROSPECTION_GATE_EXIT_CODE = 4;
|
|
1056
|
+
// The ledger recorder resolves its environment lazily, so the parsed flag is
|
|
1057
|
+
// bridged into the environment it reads: a run started with --introspect
|
|
1058
|
+
// records the same events as one started with CDXGEN_INTROSPECT=true. Without
|
|
1059
|
+
// an explicitly configured sidecar, an automatic temp sidecar captures
|
|
1060
|
+
// worker-thread events the main thread never sees; it is removed once the
|
|
1061
|
+
// reports are written. Dry-run creates no files, so it keeps an in-memory
|
|
1062
|
+
// ledger only.
|
|
1063
|
+
let autoLedgerSidecar;
|
|
1064
|
+
if (options.introspect) {
|
|
1065
|
+
process.env.CDXGEN_INTROSPECT = "true";
|
|
1066
|
+
if (!isDryRun && !readEnvironmentVariable("CDXGEN_INTROSPECT_LEDGER")) {
|
|
1067
|
+
autoLedgerSidecar = join(
|
|
1068
|
+
tmpdir(),
|
|
1069
|
+
`cdxgen-introspect-ledger-${process.pid}.jsonl`,
|
|
1070
|
+
);
|
|
1071
|
+
process.env.CDXGEN_INTROSPECT_LEDGER = autoLedgerSidecar;
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1013
1074
|
const cliActivityProjectType = Array.isArray(options.projectType)
|
|
1014
1075
|
? options.projectType.join(",")
|
|
1015
1076
|
: options.projectType;
|
|
@@ -1544,7 +1605,14 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
|
|
|
1544
1605
|
}
|
|
1545
1606
|
let sourcePath = filePath;
|
|
1546
1607
|
let purlResolution;
|
|
1547
|
-
|
|
1608
|
+
// Direct HuggingFace interpretation of the source path is opt-in: bare
|
|
1609
|
+
// `owner/repo`-shaped values are ordinary relative paths (eg: repotests/
|
|
1610
|
+
// sveltejs-realworld) unless an AI inventory type such as `-t ai` is
|
|
1611
|
+
// explicitly selected. Unambiguous purls and huggingface.co URLs always
|
|
1612
|
+
// resolve.
|
|
1613
|
+
const directHuggingFaceSource = normalizeHuggingFaceReference(sourcePath, {
|
|
1614
|
+
explicitOnly: getExactAiInventoryType(options) !== "ai",
|
|
1615
|
+
});
|
|
1548
1616
|
if (isDryRun && directHuggingFaceSource) {
|
|
1549
1617
|
recordActivity({
|
|
1550
1618
|
kind: "read",
|
|
@@ -1683,8 +1751,14 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
|
|
|
1683
1751
|
prepareEnv(srcDir, options);
|
|
1684
1752
|
prepPhase.succeed("");
|
|
1685
1753
|
} catch (err) {
|
|
1686
|
-
|
|
1687
|
-
|
|
1754
|
+
if (isDeferredFailOnError(err)) {
|
|
1755
|
+
// A deep-mode provisioning failure under --fail-on-error: the scan
|
|
1756
|
+
// continues so the run still produces the verdict that explains it.
|
|
1757
|
+
prepPhase.fail("environment preparation failed");
|
|
1758
|
+
} else {
|
|
1759
|
+
prepPhase.fail(err);
|
|
1760
|
+
throw err;
|
|
1761
|
+
}
|
|
1688
1762
|
}
|
|
1689
1763
|
}
|
|
1690
1764
|
thoughtLog("Getting ready to generate the BOM ⚡️.");
|
|
@@ -1756,7 +1830,7 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
|
|
|
1756
1830
|
{
|
|
1757
1831
|
const postPhase = defaultUi.phase("Post-processing BOM");
|
|
1758
1832
|
try {
|
|
1759
|
-
bomNSData = postProcess(
|
|
1833
|
+
bomNSData = await postProcess(
|
|
1760
1834
|
bomNSData,
|
|
1761
1835
|
{ ...options, executeOsQuery },
|
|
1762
1836
|
srcDir,
|
|
@@ -2008,11 +2082,13 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
|
|
|
2008
2082
|
dbObjMap,
|
|
2009
2083
|
evinseOptions,
|
|
2010
2084
|
);
|
|
2011
|
-
const evinseJson = evinserModule.createEvinseFile(
|
|
2085
|
+
const evinseJson = await evinserModule.createEvinseFile(
|
|
2012
2086
|
sliceArtefacts,
|
|
2013
2087
|
evinseOptions,
|
|
2014
2088
|
);
|
|
2015
|
-
|
|
2089
|
+
// The scope filter is deferred until here so the analyzers get to
|
|
2090
|
+
// prove that an optional dependency is actually used.
|
|
2091
|
+
bomNSData.bomJson = applyEvidenceBasedFilter(evinseJson, options);
|
|
2016
2092
|
if (options.print && evinseJson) {
|
|
2017
2093
|
printOccurrences(evinseJson);
|
|
2018
2094
|
printCallStack(evinseJson);
|
|
@@ -2147,6 +2223,64 @@ const writeCycloneDxOutput = (jsonFile, bomJson, options) => {
|
|
|
2147
2223
|
console.log("Try running the command with -t <type> or -r argument");
|
|
2148
2224
|
}
|
|
2149
2225
|
}
|
|
2226
|
+
// The reflection consumed the ledger while producing its reports, so an
|
|
2227
|
+
// automatic sidecar can be released and removed. An explicitly configured
|
|
2228
|
+
// sidecar belongs to the user and is left alone.
|
|
2229
|
+
if (autoLedgerSidecar) {
|
|
2230
|
+
closeLedger();
|
|
2231
|
+
try {
|
|
2232
|
+
safeRmSync(autoLedgerSidecar, { force: true });
|
|
2233
|
+
} catch {
|
|
2234
|
+
// Best-effort cleanup of our own temp file: a runtime whose permission
|
|
2235
|
+
// model denies the removal must not fail a run whose BOM and reports
|
|
2236
|
+
// are already written.
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
// A --fail-on-error extractor failure on an introspected run was deferred
|
|
2240
|
+
// until the BOM and both reports existed; here it finally claims its
|
|
2241
|
+
// non-zero exit. It outranks the fidelity gate because a failed toolchain is
|
|
2242
|
+
// the more fundamental claim, and the report still carries the gate
|
|
2243
|
+
// decision.
|
|
2244
|
+
const deferredFailures = getDeferredFailures();
|
|
2245
|
+
if (deferredFailures.length) {
|
|
2246
|
+
const reported = new Set();
|
|
2247
|
+
for (const failure of deferredFailures) {
|
|
2248
|
+
const message = `fail-on-error: ${failure.detail} (tool: ${failure.tool}${failure.exitCode !== undefined ? `, exit ${failure.exitCode}` : ""}).`;
|
|
2249
|
+
if (!reported.has(message)) {
|
|
2250
|
+
reported.add(message);
|
|
2251
|
+
console.error(message);
|
|
2252
|
+
}
|
|
2253
|
+
}
|
|
2254
|
+
// Exit 5 is the promise that the outputs exist. A run that failed before
|
|
2255
|
+
// producing any BOM never made that promise and keeps the historical
|
|
2256
|
+
// exit 1, which is what "cdxgen failed to generate a BOM" has always
|
|
2257
|
+
// meant.
|
|
2258
|
+
const wroteBom = Boolean(bomNSData?.bomJson);
|
|
2259
|
+
console.error(
|
|
2260
|
+
wroteBom
|
|
2261
|
+
? `fail-on-error: ${reported.size} extractor failure(s) were deferred so the BOM and the introspection report could be written; exiting ${INTROSPECTION_FAILURE_EXIT_CODE}.`
|
|
2262
|
+
: "fail-on-error: no BOM was produced, so there is no verdict to report; exiting 1.",
|
|
2263
|
+
);
|
|
2264
|
+
if (cleanup) {
|
|
2265
|
+
cleanupSourceDir(srcDir);
|
|
2266
|
+
}
|
|
2267
|
+
process.exit(wroteBom ? INTROSPECTION_FAILURE_EXIT_CODE : 1);
|
|
2268
|
+
}
|
|
2269
|
+
// The introspection CI gate fires only after the BOM and the reports are
|
|
2270
|
+
// written: a below-threshold score reports a not-good-enough SBOM, never a
|
|
2271
|
+
// lost one.
|
|
2272
|
+
if (
|
|
2273
|
+
bomNSData?.introspectionGate &&
|
|
2274
|
+
bomNSData.introspectionGate.passed === false
|
|
2275
|
+
) {
|
|
2276
|
+
console.error(
|
|
2277
|
+
`Build introspection: score ${bomNSData.introspectionGate.score} is below the --introspect-fail-below threshold ${bomNSData.introspectionGate.threshold}.`,
|
|
2278
|
+
);
|
|
2279
|
+
if (cleanup) {
|
|
2280
|
+
cleanupSourceDir(srcDir);
|
|
2281
|
+
}
|
|
2282
|
+
process.exit(INTROSPECTION_GATE_EXIT_CODE);
|
|
2283
|
+
}
|
|
2150
2284
|
thoughtEnd();
|
|
2151
2285
|
// Automatically submit the bom data
|
|
2152
2286
|
// biome-ignore lint/suspicious/noDoubleEquals: yargs passes true for empty values
|
package/bin/evinse.js
CHANGED
|
@@ -45,6 +45,8 @@ const args = yargs(hideBin(process.argv))
|
|
|
45
45
|
choices: [
|
|
46
46
|
"java",
|
|
47
47
|
"jar",
|
|
48
|
+
"kotlin",
|
|
49
|
+
"kt",
|
|
48
50
|
"js",
|
|
49
51
|
"ts",
|
|
50
52
|
"javascript",
|
|
@@ -338,7 +340,7 @@ ensureCycloneDxInput(args.input);
|
|
|
338
340
|
// Analyze the project using atom. Convert package namespaces to purl using the db
|
|
339
341
|
const sliceArtefacts = await analyzeProject(dbObjMap, args);
|
|
340
342
|
// Create the SBOM with Evidence
|
|
341
|
-
const bomJson = createEvinseFile(sliceArtefacts, args);
|
|
343
|
+
const bomJson = await createEvinseFile(sliceArtefacts, args);
|
|
342
344
|
// Validate our final SBOM
|
|
343
345
|
if (!(await validateBom(bomJson))) {
|
|
344
346
|
process.exit(1);
|
package/data/component-tags.json
CHANGED
package/data/crypto-oid.json
CHANGED
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
"description": "Korean SEED algorithm, CBC mode"
|
|
41
41
|
},
|
|
42
42
|
"seedOFB": {
|
|
43
|
-
"oid": "1.2.410.200004.1.
|
|
43
|
+
"oid": "1.2.410.200004.1.6",
|
|
44
44
|
"description": "Korean SEED algorithm, OFB mode"
|
|
45
45
|
},
|
|
46
46
|
"seedCFB": {
|
|
47
|
-
"oid": "1.2.410.200004.1.
|
|
47
|
+
"oid": "1.2.410.200004.1.5",
|
|
48
48
|
"description": "Korean SEED algorithm, CFB mode"
|
|
49
49
|
},
|
|
50
50
|
"seedMAC": {
|
|
@@ -233,11 +233,11 @@
|
|
|
233
233
|
},
|
|
234
234
|
"cryptoProECDH256": {
|
|
235
235
|
"oid": "1.2.643.7.1.1.6.1",
|
|
236
|
-
"description": "
|
|
236
|
+
"description": "TC26 GOST R 34.10-2012 256-bit key agreement"
|
|
237
237
|
},
|
|
238
238
|
"cryptoProECDH512": {
|
|
239
239
|
"oid": "1.2.643.7.1.1.6.2",
|
|
240
|
-
"description": "
|
|
240
|
+
"description": "TC26 GOST R 34.10-2012 512-bit key agreement"
|
|
241
241
|
},
|
|
242
242
|
"dsa": {
|
|
243
243
|
"oid": "1.2.840.10040.4.1",
|
|
@@ -932,8 +932,8 @@
|
|
|
932
932
|
"description": "Teletrust algorithm"
|
|
933
933
|
},
|
|
934
934
|
"rsaSignature": {
|
|
935
|
-
"oid": "1.3.
|
|
936
|
-
"description": "
|
|
935
|
+
"oid": "1.3.14.3.2.11",
|
|
936
|
+
"description": "RSA signature (OIW secsig)"
|
|
937
937
|
},
|
|
938
938
|
"rsaSignatureWithsha1": {
|
|
939
939
|
"oid": "1.3.36.3.3.1.1",
|
|
@@ -1412,8 +1412,8 @@
|
|
|
1412
1412
|
"description": "Novell encryption algorithm"
|
|
1413
1413
|
},
|
|
1414
1414
|
"sha-1": {
|
|
1415
|
-
"oid": "
|
|
1416
|
-
"description": "
|
|
1415
|
+
"oid": "1.3.14.3.2.26",
|
|
1416
|
+
"description": "SHA-1 secure hash standard (OIW)"
|
|
1417
1417
|
},
|
|
1418
1418
|
"rc2BSafe1Cbc": {
|
|
1419
1419
|
"oid": "2.16.840.1.113719.1.2.8.92",
|
|
@@ -1959,10 +1959,6 @@
|
|
|
1959
1959
|
"oid": "1.2.156.10197.1.301.3",
|
|
1960
1960
|
"description": "Chinese Cryptography Standardization Technology Committee (CCSTC)"
|
|
1961
1961
|
},
|
|
1962
|
-
"sm2sign_with_": {
|
|
1963
|
-
"oid": "1.2.156.10197.1.501",
|
|
1964
|
-
"description": "Chinese Cryptography Standardization Technology Committee (CCSTC)"
|
|
1965
|
-
},
|
|
1966
1962
|
"PBKDF2": {
|
|
1967
1963
|
"oid": "1.2.840.113549.1.5.12",
|
|
1968
1964
|
"description": "PBKDF2 key derivation algorithm"
|
|
@@ -1994,5 +1990,85 @@
|
|
|
1994
1990
|
"pbeWithSHA1AndRC2-CBC": {
|
|
1995
1991
|
"oid": "1.2.840.113549.1.5.11",
|
|
1996
1992
|
"description": "Password Based Encryption Algorithm. Uses RC2 in Cipher Block Chaining Mode (RC2-CBC)."
|
|
1993
|
+
},
|
|
1994
|
+
"ml-dsa-44": {
|
|
1995
|
+
"oid": "2.16.840.1.101.3.4.3.17",
|
|
1996
|
+
"description": "ML-DSA-44 post-quantum signature (FIPS 204)"
|
|
1997
|
+
},
|
|
1998
|
+
"ml-dsa-65": {
|
|
1999
|
+
"oid": "2.16.840.1.101.3.4.3.18",
|
|
2000
|
+
"description": "ML-DSA-65 post-quantum signature (FIPS 204)"
|
|
2001
|
+
},
|
|
2002
|
+
"ml-dsa-87": {
|
|
2003
|
+
"oid": "2.16.840.1.101.3.4.3.19",
|
|
2004
|
+
"description": "ML-DSA-87 post-quantum signature (FIPS 204)"
|
|
2005
|
+
},
|
|
2006
|
+
"ml-kem-512": {
|
|
2007
|
+
"oid": "2.16.840.1.101.3.4.4.1",
|
|
2008
|
+
"description": "ML-KEM-512 post-quantum key encapsulation (FIPS 203)"
|
|
2009
|
+
},
|
|
2010
|
+
"ml-kem-768": {
|
|
2011
|
+
"oid": "2.16.840.1.101.3.4.4.2",
|
|
2012
|
+
"description": "ML-KEM-768 post-quantum key encapsulation (FIPS 203)"
|
|
2013
|
+
},
|
|
2014
|
+
"ml-kem-1024": {
|
|
2015
|
+
"oid": "2.16.840.1.101.3.4.4.3",
|
|
2016
|
+
"description": "ML-KEM-1024 post-quantum key encapsulation (FIPS 203)"
|
|
2017
|
+
},
|
|
2018
|
+
"x25519": {
|
|
2019
|
+
"oid": "1.3.101.110",
|
|
2020
|
+
"description": "X25519 Diffie-Hellman key agreement (RFC 7748)"
|
|
2021
|
+
},
|
|
2022
|
+
"slh-dsa-sha2-128s": {
|
|
2023
|
+
"oid": "2.16.840.1.101.3.4.3.20",
|
|
2024
|
+
"description": "SLH-DSA-SHA2-128s hash-based signature (FIPS 205)"
|
|
2025
|
+
},
|
|
2026
|
+
"slh-dsa-sha2-128f": {
|
|
2027
|
+
"oid": "2.16.840.1.101.3.4.3.21",
|
|
2028
|
+
"description": "SLH-DSA-SHA2-128f hash-based signature (FIPS 205)"
|
|
2029
|
+
},
|
|
2030
|
+
"slh-dsa-sha2-192s": {
|
|
2031
|
+
"oid": "2.16.840.1.101.3.4.3.22",
|
|
2032
|
+
"description": "SLH-DSA-SHA2-192s hash-based signature (FIPS 205)"
|
|
2033
|
+
},
|
|
2034
|
+
"slh-dsa-sha2-192f": {
|
|
2035
|
+
"oid": "2.16.840.1.101.3.4.3.23",
|
|
2036
|
+
"description": "SLH-DSA-SHA2-192f hash-based signature (FIPS 205)"
|
|
2037
|
+
},
|
|
2038
|
+
"slh-dsa-sha2-256s": {
|
|
2039
|
+
"oid": "2.16.840.1.101.3.4.3.24",
|
|
2040
|
+
"description": "SLH-DSA-SHA2-256s hash-based signature (FIPS 205)"
|
|
2041
|
+
},
|
|
2042
|
+
"slh-dsa-sha2-256f": {
|
|
2043
|
+
"oid": "2.16.840.1.101.3.4.3.25",
|
|
2044
|
+
"description": "SLH-DSA-SHA2-256f hash-based signature (FIPS 205)"
|
|
2045
|
+
},
|
|
2046
|
+
"slh-dsa-shake-128s": {
|
|
2047
|
+
"oid": "2.16.840.1.101.3.4.3.26",
|
|
2048
|
+
"description": "SLH-DSA-SHAKE-128s hash-based signature (FIPS 205)"
|
|
2049
|
+
},
|
|
2050
|
+
"slh-dsa-shake-128f": {
|
|
2051
|
+
"oid": "2.16.840.1.101.3.4.3.27",
|
|
2052
|
+
"description": "SLH-DSA-SHAKE-128f hash-based signature (FIPS 205)"
|
|
2053
|
+
},
|
|
2054
|
+
"slh-dsa-shake-192s": {
|
|
2055
|
+
"oid": "2.16.840.1.101.3.4.3.28",
|
|
2056
|
+
"description": "SLH-DSA-SHAKE-192s hash-based signature (FIPS 205)"
|
|
2057
|
+
},
|
|
2058
|
+
"slh-dsa-shake-192f": {
|
|
2059
|
+
"oid": "2.16.840.1.101.3.4.3.29",
|
|
2060
|
+
"description": "SLH-DSA-SHAKE-192f hash-based signature (FIPS 205)"
|
|
2061
|
+
},
|
|
2062
|
+
"slh-dsa-shake-256s": {
|
|
2063
|
+
"oid": "2.16.840.1.101.3.4.3.30",
|
|
2064
|
+
"description": "SLH-DSA-SHAKE-256s hash-based signature (FIPS 205)"
|
|
2065
|
+
},
|
|
2066
|
+
"slh-dsa-shake-256f": {
|
|
2067
|
+
"oid": "2.16.840.1.101.3.4.3.31",
|
|
2068
|
+
"description": "SLH-DSA-SHAKE-256f hash-based signature (FIPS 205)"
|
|
2069
|
+
},
|
|
2070
|
+
"sm2sign_with_sm3": {
|
|
2071
|
+
"oid": "1.2.156.10197.1.501",
|
|
2072
|
+
"description": "Chinese Cryptography Standardization Technology Committee (CCSTC)"
|
|
1997
2073
|
}
|
|
1998
2074
|
}
|
|
@@ -76,6 +76,56 @@
|
|
|
76
76
|
"pkg:pypi/langchain",
|
|
77
77
|
"pkg:pypi/llama",
|
|
78
78
|
"pkg:pypi/sqlalchemy",
|
|
79
|
+
"pkg:pypi/starlette",
|
|
80
|
+
"pkg:pypi/quart",
|
|
81
|
+
"pkg:pypi/litestar",
|
|
82
|
+
"pkg:pypi/blacksheep",
|
|
83
|
+
"pkg:pypi/robyn",
|
|
84
|
+
"pkg:pypi/connexion",
|
|
85
|
+
"pkg:pypi/werkzeug",
|
|
86
|
+
"pkg:pypi/asgiref",
|
|
87
|
+
"pkg:pypi/djangorestframework",
|
|
88
|
+
"pkg:pypi/scrapy",
|
|
89
|
+
"pkg:pypi/streamlit",
|
|
90
|
+
"pkg:pypi/gradio",
|
|
91
|
+
"pkg:pypi/dash",
|
|
92
|
+
"pkg:pypi/nicegui",
|
|
93
|
+
"pkg:pypi/reflex",
|
|
94
|
+
"pkg:pypi/pydantic",
|
|
95
|
+
"pkg:pypi/sqlmodel",
|
|
96
|
+
"pkg:pypi/tortoise-orm",
|
|
97
|
+
"pkg:pypi/peewee",
|
|
98
|
+
"pkg:pypi/mongoengine",
|
|
99
|
+
"pkg:pypi/beanie",
|
|
100
|
+
"pkg:pypi/marshmallow",
|
|
101
|
+
"pkg:pypi/strawberry-graphql",
|
|
102
|
+
"pkg:pypi/graphene",
|
|
103
|
+
"pkg:pypi/ariadne",
|
|
104
|
+
"pkg:pypi/grpcio",
|
|
105
|
+
"pkg:pypi/thrift",
|
|
106
|
+
"pkg:pypi/mcp",
|
|
107
|
+
"pkg:pypi/fastmcp",
|
|
108
|
+
"pkg:pypi/openai",
|
|
109
|
+
"pkg:pypi/anthropic",
|
|
110
|
+
"pkg:pypi/litellm",
|
|
111
|
+
"pkg:pypi/langgraph",
|
|
112
|
+
"pkg:pypi/haystack-ai",
|
|
113
|
+
"pkg:pypi/autogen",
|
|
114
|
+
"pkg:pypi/pyautogen",
|
|
115
|
+
"pkg:pypi/crewai",
|
|
116
|
+
"pkg:pypi/semantic-kernel",
|
|
117
|
+
"pkg:pypi/transformers",
|
|
118
|
+
"pkg:pypi/sentence-transformers",
|
|
119
|
+
"pkg:pypi/huggingface-hub",
|
|
120
|
+
"pkg:pypi/celery",
|
|
121
|
+
"pkg:pypi/kombu",
|
|
122
|
+
"pkg:pypi/dramatiq",
|
|
123
|
+
"pkg:pypi/huey",
|
|
124
|
+
"pkg:pypi/jinja2",
|
|
125
|
+
"pkg:pypi/mako",
|
|
126
|
+
"pkg:pypi/chameleon",
|
|
127
|
+
"pkg:pypi/genshi",
|
|
128
|
+
"pkg:pypi/twisted",
|
|
79
129
|
"vibora",
|
|
80
130
|
"koa",
|
|
81
131
|
"-sdk",
|
|
@@ -214,6 +264,41 @@
|
|
|
214
264
|
"pkg:gem/volt",
|
|
215
265
|
"pkg:gem/trailblazer",
|
|
216
266
|
"pkg:gem/ramaze",
|
|
217
|
-
"pkg:gem/scorched"
|
|
267
|
+
"pkg:gem/scorched",
|
|
268
|
+
"Grpc.AspNetCore",
|
|
269
|
+
"Microsoft.AspNetCore.SignalR",
|
|
270
|
+
"Microsoft.Azure.Functions.Worker",
|
|
271
|
+
"Microsoft.NET.Sdk.Functions",
|
|
272
|
+
"Amazon.Lambda.Core",
|
|
273
|
+
"MassTransit",
|
|
274
|
+
"NServiceBus",
|
|
275
|
+
"MediatR",
|
|
276
|
+
"Rebus",
|
|
277
|
+
"HotChocolate.AspNetCore",
|
|
278
|
+
"GraphQL",
|
|
279
|
+
"Microsoft.AspNetCore.OData",
|
|
280
|
+
"ModelContextProtocol",
|
|
281
|
+
"ModelContextProtocol.AspNetCore",
|
|
282
|
+
"Microsoft.SemanticKernel",
|
|
283
|
+
"Microsoft.Extensions.AI",
|
|
284
|
+
"OpenAI",
|
|
285
|
+
"Azure.AI.OpenAI",
|
|
286
|
+
"Anthropic.SDK",
|
|
287
|
+
"AWSSDK.BedrockRuntime",
|
|
288
|
+
"Hangfire.AspNetCore",
|
|
289
|
+
"Quartz",
|
|
290
|
+
"FastEndpoints",
|
|
291
|
+
"Carter",
|
|
292
|
+
"ServiceStack",
|
|
293
|
+
"Nancy",
|
|
294
|
+
"Microsoft.ML",
|
|
295
|
+
"Microsoft.ML.OnnxRuntime",
|
|
296
|
+
"TorchSharp",
|
|
297
|
+
"LLamaSharp",
|
|
298
|
+
"Qdrant.Client",
|
|
299
|
+
"Milvus.Client",
|
|
300
|
+
"Pinecone.NET",
|
|
301
|
+
"Dapr.AspNetCore",
|
|
302
|
+
"Confluent.Kafka"
|
|
218
303
|
]
|
|
219
304
|
}
|