pub struct DocumentMetadata {Show 16 fields
pub format: SbomFormat,
pub format_version: String,
pub spec_version: String,
pub serial_number: Option<String>,
pub doc_version: Option<u32>,
pub created: DateTime<Utc>,
pub creators: Vec<Creator>,
pub name: Option<String>,
pub security_contact: Option<String>,
pub vulnerability_disclosure_url: Option<String>,
pub support_end_date: Option<DateTime<Utc>>,
pub lifecycle_phase: Option<String>,
pub completeness_declaration: CompletenessDeclaration,
pub signature: Option<SignatureInfo>,
pub distribution_classification: Option<String>,
pub citations_count: usize,
}Expand description
Document-level metadata
Fields§
§format: SbomFormatSBOM format type
format_version: StringFormat version (e.g., “1.5” for CycloneDX)
spec_version: StringSpecification version
serial_number: Option<String>Serial number or document namespace
doc_version: Option<u32>Document revision counter (CycloneDX top-level version, bumped on
each BOM revision of the same serialNumber). None for formats
without a revision counter (SPDX) and for documents that omit it.
Additive: skipped in JSON when absent.
created: DateTime<Utc>Creation timestamp
creators: Vec<Creator>Creators/authors
name: Option<String>Document name
security_contact: Option<String>Security contact for vulnerability disclosure (CRA requirement)
vulnerability_disclosure_url: Option<String>URL for vulnerability disclosure policy/portal
support_end_date: Option<DateTime<Utc>>Support/end-of-life date for security updates
lifecycle_phase: Option<String>SBOM lifecycle phase (e.g., “build”, “pre-build”, “operations”)
completeness_declaration: CompletenessDeclarationSelf-declared completeness level (from CycloneDX compositions)
signature: Option<SignatureInfo>Digital signature information (from CycloneDX signature field)
distribution_classification: Option<String>Distribution classification (e.g., TLP: CLEAR, GREEN, AMBER, RED)
citations_count: usizeNumber of data provenance citations (CycloneDX 1.7+)
Implementations§
Source§impl DocumentMetadata
impl DocumentMetadata
Sourcepub fn has_known_timestamp(&self) -> bool
pub fn has_known_timestamp(&self) -> bool
Whether the document carries a real creation timestamp.
Parsers substitute DateTime::UNIX_EPOCH when the source document
has no (or an unparseable) timestamp, so the content hash stays
deterministic. Consumers that compute an AGE or gate on freshness
must use this to distinguish “no timestamp” from a document that
genuinely claims 1970 — otherwise a missing timestamp reads as a
~55-year-old SBOM.
Trait Implementations§
Source§impl Clone for DocumentMetadata
impl Clone for DocumentMetadata
Source§fn clone(&self) -> DocumentMetadata
fn clone(&self) -> DocumentMetadata
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DocumentMetadata
impl Debug for DocumentMetadata
Source§impl Default for DocumentMetadata
impl Default for DocumentMetadata
Source§impl<'de> Deserialize<'de> for DocumentMetadata
impl<'de> Deserialize<'de> for DocumentMetadata
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DocumentMetadata
impl RefUnwindSafe for DocumentMetadata
impl Send for DocumentMetadata
impl Sync for DocumentMetadata
impl Unpin for DocumentMetadata
impl UnsafeUnpin for DocumentMetadata
impl UnwindSafe for DocumentMetadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more