Python module to validate a CAP message against the OASIS CAP 1.2 schema and verify the XML signature.
Project description
The CAP Validator
The Python module for ensuring the validity of CAP alerts.
Features
- Schema Validation: Ensure your CAP XML file follows the CAP v1.2 standard.
- Digital Signature Validation: Verify that the CAP XML file comes from a legitimate source and has not been tampered with.
Note: Currently, only certificates issued by a trused certificate authority (CA) are supported. This means signatures with a self-signed certificate will not pass the validation.
Getting Started
1. Installation
pip install capvalidator
2A. Using the API
We can perform a total validation of the CAP XML file:
from capvalidator import validate_xml
# Read the CAP XML file as a byte string
with open(<cap-file-directory>, "rb") as f:
cap = f.read()
# Perform the validation
result = validate_xml(cap)
# Check the result
passed = result.passed
msg = result.msg
if not passed:
# Logic for handling invalid CAP file
# Logic for handling valid CAP file
Or, alternatively, a more refined validation:
from capvalidator import check_schema, check_signature
# Read the CAP XML file as a byte string
with open(<cap-file-directory>, "rb") as f:
cap = f.read()
# Validate the schema
schema_result = check_schema(cap)
# Check the results
passed = schema_result.passed
msg = schema_result.msg
if not passed:
# Logic for handling invalid CAP file
# Validate the signature
signature_result = check_signature(cap)
# Check the results
passed = signature_result.passed
msg = signature_result.msg
if not passed:
# Logic for handling invalid CAP file
# Logic for handling valid CAP file
There is also a date extractor which you may find useful:
from capvalidator import get_dates
# Read the CAP XML file as a byte string
with open(<cap-file-directory>, "rb") as f:
cap = f.read()
dts = get_dates(cap)
sent_date = dts.sent
effective_date = dts.effective
onset_date = dts.onset
expiry_date = dts.expiry
2B. Using the CLI
We can perform a total validation of the CAP XML file:
capvalidator validate <cap-file-directory>
Or, alternatively, more refined validations:
capvalidator validate --type schema <cap-file-directory>
capvalidator validate --type signature <cap-file-directory>
Bugs and Issues
All bugs, enhancements and issues are managed on GitHub.
Contact
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
capvalidator-0.1.0.dev1.tar.gz
(17.2 kB
view hashes)
Built Distribution
Close
Hashes for capvalidator-0.1.0.dev1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cdc822382e20d35be0937696fc8bc8c4bf0c698beb0af7ccfa1e6bd53b7608a |
|
MD5 | 4ccfed93274729e087cb6e6b905317bb |
|
BLAKE2b-256 | 2a9ee1933e8e08b77801f18c749101878d8a8c6e2b1860565a74cf7cf2114165 |