ism
Vendored ODNI ISM (Information Security Marking) schema package, with SHA-256 integrity verification at compile time.
Part of the ism-data workspace.
The ISM package is the canonical home of the urn:us:gov:ic:ism namespace
and every urn:us:gov:ic:cvenum:ism:* controlled-value enumeration —
classification levels, SCI controls, dissemination controls, SAR
identifiers, declassification exemptions, and so on. Many other ODNI
packages bundle copies of the ISM CVE files as build dependencies; this
crate is the canonical source.
Use
# Cargo.toml
[]
= "20230609.0.0"
# or
= { = "https://github.com/marquetools/ism-data", = "v..." }
// build.rs
let xsd = package_root.join;
println!;
// CVE values (XML form, with codable values + descriptions)
let cve_xml = package_root.join;
// Schematron rules for cross-attribute validation
let sch = package_root.join;
// Resolve a namespace to the XSD that declares it
let xsd = resolve_namespace
.expect;
What's in data/ISM/
data/ISM/
CVE/
ISM/ CVEnumISM*.xml + .json + .csv (CVE values)
CveSchema/ISMCAT/ ISMCAT subset bundled by ODNI as a build dep
Schema/
ISM/ IC-ISM.xsd + CVEGenerated/CVEnumISM*.xsd, .rng, .rnc
IC-ARH.xsd, IC-NTK.xsd (bundled deps from ARH / NTK)
Schematron/
ISM/ ISM_XML.sch + Lib/*.sch + Rules/*.sch
The bundled CVE/CveSchema/ISMCAT/ and Schema/ISM/IC-{ARH,NTK}.xsd are
copies ODNI ships inside ISM-Public-Standalone.zip so relative
xs:import schemaLocation references resolve. They are not the
canonical home of the ISMCAT, ARH, or NTK namespaces — depend on
ism-ismcat, ism-arh, or ism-ntk for those.
Integrity
build.rs re-hashes every file under data/ against the baked
data/_provenance/manifest.txt at the consumer's compile time. A single
modified byte refuses the build.
The MANIFEST_DIGEST const exposes the SHA-256 of the manifest itself —
pin it in your release notes for external attestation.
License
Schemas: U.S. Government public-domain works. Crate scaffolding: MIT-0 OR Unlicense.