This is a collection of python modules for OSCAL content validation, format conversion, and related capabilities without the need for Internet connectivity.
It handles all published OSCAL versions, and can be updated with additional versions as they are published by NIST.
Please submit feedback, bug reports and enhancement requests as GitHub issues. I welcome code contributions for enhancements and bug fixes, and would enjoy collaborating with you on any enhancements that may impact existing code.
The Python OSCAL Class creates and maintains a single external file that contains all of the NIST-published support files for all OSCAL versions and models. This is referred to in documentation as the OSCAL Support Module.
The Python OSCAL Class is able to validate and convert any OSCAL version and module where the NIST-published support files are present in the OSCAL Support Model. No Internet connection required.
As NIST publishes additional modules, they can be added to the OSCAL Support Module. An Internet connect is rquired to update the OSCAL Support Module; however, once updated, it can be copied to any computer for use.
The concept behind the OSCAL Support Module is that it can be generated or updated on an Internet-connected computer and then conveyed into an air gapped environment for use.
The OSCAL Support Module is a SQLite 3 database, implemented without encryption so that tables can be inspected. Each cached file is stored as a blob.
The default configuration is to compress each cached file before storing; however, the compression can be turned off for even greater transparency with the trade-off of increased file size.
This default name and location for the OSCAl Support Module is ./support/support.oscal; however, your project code can override the location and/or the file name.
The Python OSCAL Class is intended to be used as a submodule to your project repository. It currently expects your project repository to have a my Python Common submodule.
Please see the Setup documentation for setup instructions and related details.
The Python OSCAL Class is designed to use the