17 个不稳定版本 (6 个重大更改)
0.7.0 | 2024年8月6日 |
---|---|
0.6.2 | 2024年7月16日 |
0.6.1 | 2024年6月4日 |
0.5.0 | 2024年2月21日 |
0.1.0 | 2020年4月11日 |
#98 在 编码
每月下载量 8,870
用于 5 个crate(直接使用4个)
1.5MB
31K SLoC
cyclonedx-bom
CycloneDX 库提供了软件物料清单(SBOM)文件的 JSON 和 XML 序列化和反序列化。
CycloneDX 是一个全栈式 SBOM/xBOM 标准,旨在用于应用安全环境和供应链组件分析。
该库旨在使开发者能够
- 构建符合 CycloneDX 规范的 SBOM 文档
- 解析和验证 JSON 和 XML SBOM 文档
- 对 BOM 文档进行修改(例如,使用各种算法合并多个 BOM)
支持的 CycloneDX 版本
该库目前支持 CycloneDX 1.3、1.4 和 1.5。
使用方法
读取并验证 SBOM
use cyclonedx_bom::prelude::*;
let bom_json = r#"{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79",
"version": 1
}"#;
let bom = Bom::parse_from_json_v1_5(bom_json.as_bytes()).expect("Failed to parse BOM");
let validation_result = bom.validate();
assert!(validation_result.passed());
创建并输出 SBOM
use cyclonedx_bom::prelude::*;
use cyclonedx_bom::models::{
tool::{Tool, Tools},
};
let bom = Bom {
serial_number: Some(
UrnUuid::new("urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79".to_string())
.expect("Failed to create UrnUuid"),
),
metadata: Some(Metadata {
tools: Some(Tools::List(vec![Tool {
name: Some(NormalizedString::new("my_tool")),
..Tool::default()
}])),
..Metadata::default()
}),
..Bom::default()
};
let mut output = Vec::<u8>::new();
bom.output_as_json_v1_5(&mut output)
.expect("Failed to write BOM");
let output = String::from_utf8(output).expect("Failed to read output as a string");
assert_eq!(
output,
r#"{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"version": 1,
"serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79",
"metadata": {
"tools": [
{
"name": "my_tool"
}
]
}
}"#
);
验证和验证
有关详细信息,请参阅 README。
贡献
有关详细信息,请参阅 CONTRIBUTING。
漏洞赏金
我们正在运行由 漏洞赏金计划 资助的 漏洞弹性计划,该计划由 主权技术基金 提供。非常感谢!
版权与许可
CycloneDX Rust Cargo 的版权为 OWASP 基金会所有。版权所有。
根据 Apache 2.0 许可协议,允许修改和重新分发。有关完整许可协议,请参阅 LICENSE 文件。
依赖项
~6.5–9MB
~150K SLoC