Skip to main content

cryptoscan

ci

Discover the cryptography in a codebase and emit a CycloneDX CBOM with post-quantum risk classification.

You cannot migrate cryptography you cannot see. The June 2026 U.S. Executive Order on advanced cryptographic attacks set binding deadlines (2030 for key establishment, 2031 for signatures), extended them to federal contractors, and directed CISA and NIST to define the minimum elements of a Cryptographic Bill of Materials (CBOM). Yet fewer than 5% of enterprises have a comprehensive cryptographic inventory, and existing discovery tooling tends to miss application-layer crypto, config, and firmware.

cryptoscan is a small, fast first step: point it at a repository and it produces (1) a prioritized, human-readable inventory and (2) a machine-readable CycloneDX 1.6 CBOM, with every asset classified by its resistance to a cryptographically relevant quantum computer and mapped to its NIST PQC replacement.

Quick start

# scan a repo, print a prioritized report
python -m cryptoscan scan ./my-project

# write a CycloneDX 1.6 CBOM
python -m cryptoscan scan ./my-project -o cbom.json

# markdown report (for a PR comment or ticket)
python -m cryptoscan scan ./my-project -f md

# gate a CI pipeline: non-zero exit if quantum-vulnerable crypto is present
python -m cryptoscan scan ./my-project --fail-on-vulnerable

What it finds

Class Examples Verdict
Classical public-key RSA, ECDSA, ECDH, DSA, Ed25519, X25519, DH Quantum-vulnerable — broken by Shor's algorithm
Weakened symmetric AES-128 Review — halved by Grover; prefer AES-256
Already broken MD5, SHA-1, 3DES, RC4, DES Broken — remove regardless of quantum
Post-quantum ML-KEM (Kyber), ML-DSA (Dilithium), SLH-DSA, Falcon, HQC Quantum-safe — migration targets

Detectors cover Python, JavaScript/TypeScript, Java, Go, C/C++/OpenSSL, .NET/C#, and PEM/TLS config. Detection is rule-based and extensible — add a Rule in detectors.py, not code.

Why CycloneDX

CycloneDX has carried cryptographic-asset components since v1.6, and the format is the one named in regulatory CBOM guidance. Emitting standards-compliant output means the result drops straight into existing SBOM/CBOM pipelines and tooling rather than living in a bespoke format.

Architecture

detectors.py   rule set: regex -> normalized algorithm key
knowledge.py   algorithm intelligence: quantum status, NIST level, replacement
scanner.py     walk files, apply rules, collapse + dedupe -> findings
cbom.py        findings -> CycloneDX 1.6 CBOM
report.py      findings -> terminal / markdown
cli.py         `cryptoscan scan <path>`

Honest limitations

This is rule-based static discovery, not a substitute for a validated commercial inventory platform. It finds named crypto in source and config; it does not resolve crypto reached only through deep dependency chains, dynamically selected algorithms, or compiled binaries without source. It reports where cryptography is, not where it is missing. Treat it as the fast 80% pass that scopes the harder work.

Roadmap

  • Dependency-aware detection (parse lockfiles; flag crypto libraries by version)
  • Key/parameter extraction from PEM and X.509 (sizes, signature algorithms)
  • Confidence scoring and false-positive suppression
  • SARIF output for code-scanning UIs
  • A web dashboard over the CBOM (trend the inventory over time — the "continuous" gap)

License

MIT.

Metadata

Release files for cryptoscan-pqc 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cryptoscan-pqc 0.1.1
File Size Uploaded
cryptoscan_pqc-0.1.1.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cryptoscan-pqc 0.1.1
File Interpreter ABI Platform
cryptoscan_pqc-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.3 kB

Release files / cryptoscan_pqc-0.1.1.tar.gz

Download URL cryptoscan_pqc-0.1.1.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
461ed54dcec4ece68d7cdff71082a7acfee62accbe33c46ac94b6093c372eddf
BLAKE2b-256 checksum
How to use checksums
2d6e11d1b0e5ed2bb63dc860a85adcdc2331c670be53837dca742abc76bbe60d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13

Release files / cryptoscan_pqc-0.1.1-py3-none-any.whl

Download URL cryptoscan_pqc-0.1.1-py3-none-any.whl
Size 13.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a01351cfd47cdbcecc6585a4ce3ef3ae7e8ca1998c29438d5d2ebc16ad04577
BLAKE2b-256 checksum
How to use checksums
4ad728565b615141939463be4171739c515b83c5e999a04df0ebef2f6f7d7077
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page