← All recipes
Moderne licensed

Build a joined cryptography inventory

Recipe IDio.moderne.cryptography.BuildCryptographyInventoryArtifactio.moderne.recipe:rewrite-cryptography

Runs the cipher inventory and the post-quantum TLS readiness inventory together so that every finding lands in one Cryptography inventory data table. Findings that different detectors report at the same source location — a TLS entry point classified both for the protocol versions it allows and for the key-exchange groups it offers — are joined into a single row there, which the per-detector tables cannot express. Those per-detector tables are still emitted unchanged, carrying the same findings unjoined. Changes nothing.

Composite recipeProprietary

Usage

This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.

mod run . --recipe io.moderne.cryptography.BuildCryptographyInventory

If the recipe isn’t available locally, install it with:

mod config recipes jar install io.moderne.recipe:rewrite-cryptography:RELEASE

Definition

This recipe runs the following recipes in order.

Data tables

Structured output this recipe can produce.

  • Cipher inventoryCryptographic algorithm usages detected in source code, including the algorithm, its function, the library and language, the precise source location, and repository provenance.io.moderne.cryptography.agilesec.table.CipherInventoryTable
  • Cryptography inventoryEvery cryptographic finding this module detects, joined into one sparse table so that a consumer does not have to match the per-detector tables on source location. A row carries the columns of whichever detectors reported at its location and leaves the others empty; the `Finding type` column names those detectors. The per-detector tables (`Cipher inventory`, `PQC readiness`, `TLS configuration inventory`, `TLS named groups inventory`) are still emitted unchanged, and carry the same findings unjoined.io.moderne.cryptography.table.CryptographyInventoryTable
  • PQC readinessPer-module post-quantum TLS readiness derived from the resolved Maven and Gradle dependency models and the `JavaVersion` markers of the module's Java sources. Modules built by tools OpenRewrite does not parse (Bazel, Ant) and BouncyCastle shaded into fat jars are invisible here, so an absent row is not evidence of health.io.moderne.cryptography.pqc.table.PqcReadinessTable
  • TLS configuration inventoryTLS protocol version and cipher suite configuration detected in Java sources and in Spring Boot `.properties`/`.yaml` files, classified by whether TLS 1.3 — and therefore JEP 527 / BouncyCastle 1.81 hybrid key exchange — remains reachable. Non-JSSE TLS stacks (Netty, OkHttp, Tomcat and Jetty server configuration, `-D` flags in build files and launch scripts) are out of scope, so an absent row is not evidence that a module has no legacy TLS floor.io.moderne.cryptography.pqc.table.TlsConfigurationInventoryTable
  • TLS named groups inventoryTLS key-exchange group configuration detected in Java sources, configuration files and checked-in JVM-options values, classified by whether an ML-KEM hybrid group is offered. `-D` flags in shell scripts, Dockerfiles and orchestration manifests outside the scanned repository are invisible, so an absent row is not evidence that no group pin exists.io.moderne.cryptography.pqc.table.TlsNamedGroupsInventoryTable
  • Taint flowRecords taint flows from sources to sinks with their taint types.org.openrewrite.analysis.java.taint.table.TaintFlowTable
  • Source files that had resultsSource files that were modified by the recipe run.org.openrewrite.table.SourcesFileResults
  • Source files that had search resultsSearch results that were found during the recipe run.org.openrewrite.table.SearchResults
  • Source files that errored on a recipeThe details of all errors produced by a recipe run.org.openrewrite.table.SourcesFileErrors
  • Recipe performanceStatistics used in analyzing the performance of recipes.org.openrewrite.table.RecipeRunStats