{"id":15032199,"url":"https://github.com/platform-system-interface/sbom","last_synced_at":"2026-01-19T21:33:11.894Z","repository":{"id":61573617,"uuid":"551890344","full_name":"platform-system-interface/sbom","owner":"platform-system-interface","description":"Utilities for firmware SBoMs","archived":false,"fork":false,"pushed_at":"2022-10-18T20:33:50.000Z","size":32,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T02:42:18.128Z","etag":null,"topics":["firmware","go","rust","sbom","swid"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/platform-system-interface.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-15T10:21:33.000Z","updated_at":"2024-10-21T20:33:47.000Z","dependencies_parsed_at":"2022-10-19T12:30:30.496Z","dependency_job_id":null,"html_url":"https://github.com/platform-system-interface/sbom","commit_stats":null,"previous_names":["platform-system-interface/swid"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/platform-system-interface/sbom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform-system-interface%2Fsbom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform-system-interface%2Fsbom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform-system-interface%2Fsbom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform-system-interface%2Fsbom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/platform-system-interface","download_url":"https://codeload.github.com/platform-system-interface/sbom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platform-system-interface%2Fsbom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28585515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firmware","go","rust","sbom","swid"],"created_at":"2024-09-24T20:17:43.739Z","updated_at":"2026-01-19T21:33:11.878Z","avatar_url":"https://github.com/platform-system-interface.png","language":"Rust","readme":"# SWID - Software ID Utilities\n\n## About\n\nThis is a collection of packages/libraries and utilities dealing with [SBoMs](\nhttps://blogs.gnome.org/hughsie/2022/03/10/firmware-software-bill-of-materials/)\nin platform initialization firmware, such as [coreboot](https://coreboot.org).\n\nThere is a [Python implementation](https://github.com/hughsie/python-uswid/) as\nwell, though not suitable for every environment.\nSo here are [Rust](https://www.rust-lang.org/) and [Go](https://go.dev/). :-)\n\nNote that this is work in progress. Contributions are welcome!\n\n## Go\n\n```sh\ngo run ./cmds/goswid path/to/firmware.bin\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample output\u003c/summary\u003e\n\n```\nmagic 53424f4dd6ba2eaca3e67a52aaee3baf at: 2673e0\nuswid:\n  Version: 2\n  Header size: 24\n  Payload size: 1977\nswid.SoftwareIdentity{\n    XMLName:          xml.Name{},\n    CoSWIDExtension:  swid.CoSWIDExtension{},\n    GlobalAttributes: swid.GlobalAttributes{Lang:\"en-US\"},\n    TagID:            swid.TagID{\n        val: uuid.UUID{0xa9, 0x3, 0x2c, 0x9d, 0x2a, 0xaa, 0x5a, 0x25, 0xa0, 0xe6, 0x6d, 0x86, 0x5b, 0x24, 0xe6, 0xd2},\n    },\n    TagVersion:      0,\n    Corpus:          false,\n    Patch:           false,\n    Supplemental:    false,\n    SoftwareName:    \"coreboot\",\n    SoftwareVersion: \"bd34cca50aba130364f362618881693c0478a4a6\",\n    VersionScheme:   \u0026swid.VersionScheme{\n        val: int64(3),\n    },\n    Media:         \"\",\n    SoftwareMetas: \u0026swid.SoftwareMetas{\n        {\n            SoftwareMetaExtension:   swid.SoftwareMetaExtension{},\n            GlobalAttributes:        swid.GlobalAttributes{},\n            ActivationStatus:        \"\",\n            ChannelType:             \"\",\n            ColloquialVersion:       \"58a040842be9ff7b6c6df4519c7da44476d7c95f\",\n            Description:             \"\",\n            Edition:                 \"\",\n            EntitlementDataRequired: (*bool)(nil),\n            EntitlementKey:          \"\",\n            Generator:               (*swid.TagID)(nil),\n            PersistentID:            \"org.coreboot.rocks\",\n            Product:                 \"\",\n            ProductFamily:           \"\",\n            Revision:                \"\",\n            Summary:                 \"coreboot is a project to develop open source boot firmware for various architectures\",\n            UnspscCode:              \"\",\n            UnspscVersion:           \"\",\n        },\n    },\n    Entities: {\n        {\n            EntityExtension:  swid.EntityExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            EntityName:       \"9elements\",\n            RegID:            \"9elements.com\",\n            Roles:            swid.Roles{\n                val: {\n                    int64(1),\n                },\n            },\n            Thumbprint: (*swid.HashEntry)(nil),\n        },\n    },\n    Links: \u0026swid.Links{\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/Apache-2.0.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/BSD-3-Clause.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/CC-BY-4.0.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/CC-BY-SA-3.0.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/GPL-2.0-only.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/GPL-2.0-or-later.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/GPL-3.0-only.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/GPL-3.0-or-later.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/ISC.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/MIT.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"https://spdx.org/licenses/X11.html\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-2),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"swid:9579af2b-39d8-59f1-ac5a-5b1fd4c03bd0\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(10),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"swid:e5a249ad-04bb-5b63-a587-ceb7b0e331c9\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(10),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"swid:23edb84c-5d68-544e-b389-8a67f6c80247\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(10),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"swid:23edb84c-5d68-544e-b389-8a67f6c80247\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(10),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n        {\n            LinkExtension:    swid.LinkExtension{},\n            GlobalAttributes: swid.GlobalAttributes{},\n            Artifact:         \"\",\n            Href:             \"swid:8e0d0fd3-1116-50ad-ba5f-599c8117c42b\",\n            Media:            \"\",\n            Ownership:        (*swid.Ownership)(nil),\n            Rel:              swid.Rel{\n                val: int64(-1),\n            },\n            MediaType: \"\",\n            Use:       (*swid.Use)(nil),\n        },\n    },\n    Payload:  (*swid.Payload)(nil),\n    Evidence: (*swid.Evidence)(nil),\n}\n```\n\u003c/details\u003e\n\n## Rust\n\n```sh\ncargo run path/to/firmware.bin\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample output\u003c/summary\u003e\n\n```\n../sbom/firmware.bin\nSBOM found at 2673e0\nMagic: SBOM ([53, 42, 4f, 4d, d6, ba, 2e, ac, a3, e6, 7a, 52, aa, ee, 3b, af])\n  Version: 2\n  Header size: 24\n  Payload size: 1977\nPayload start/end: [a9, 0f, 65, 65][32, 2e, 33, 37]\n```\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatform-system-interface%2Fsbom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplatform-system-interface%2Fsbom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatform-system-interface%2Fsbom/lists"}