@@ -35,6 +35,7 @@ use crate::models::external_reference::ExternalReferences;
3535use crate :: models:: metadata:: Metadata ;
3636use crate :: models:: property:: Properties ;
3737use crate :: models:: service:: { Service , Services } ;
38+ use crate :: models:: signature:: Signature ;
3839use crate :: models:: vulnerability:: Vulnerabilities ;
3940use crate :: validation:: {
4041 FailureReason , Validate , ValidationContext , ValidationError , ValidationPathComponent ,
@@ -85,7 +86,10 @@ pub struct Bom {
8586 pub dependencies : Option < Dependencies > ,
8687 pub compositions : Option < Compositions > ,
8788 pub properties : Option < Properties > ,
89+ /// Added in version 1.4
8890 pub vulnerabilities : Option < Vulnerabilities > ,
91+ /// Added in version 1.4
92+ pub signature : Option < Signature > ,
8993}
9094
9195impl Bom {
@@ -105,10 +109,7 @@ impl Bom {
105109 SpecVersion :: V1_4 => Ok ( crate :: specs:: v1_4:: bom:: Bom :: deserialize ( json) ?. into ( ) ) ,
106110 }
107111 } else {
108- return Err ( BomError :: UnsupportedSpecVersion (
109- "No field 'specVersion' found" . to_string ( ) ,
110- )
111- . into ( ) ) ;
112+ Err ( BomError :: UnsupportedSpecVersion ( "No field 'specVersion' found" . to_string ( ) ) . into ( ) )
112113 }
113114 }
114115
@@ -214,6 +215,7 @@ impl Default for Bom {
214215 compositions : None ,
215216 properties : None ,
216217 vulnerabilities : None ,
218+ signature : None ,
217219 }
218220 }
219221}
@@ -617,6 +619,7 @@ mod test {
617619 compositions : None ,
618620 properties : None ,
619621 vulnerabilities : None ,
622+ signature : None ,
620623 } ;
621624
622625 let actual = bom
@@ -642,6 +645,7 @@ mod test {
642645 compositions : None ,
643646 properties : None ,
644647 vulnerabilities : None ,
648+ signature : None ,
645649 } ;
646650
647651 let actual = bom. validate ( ) . expect ( "Failed to validate bom" ) ;
@@ -698,9 +702,11 @@ mod test {
698702 aggregate: AggregateType :: Complete ,
699703 assemblies: Some ( vec![ BomReference ( "assembly" . to_string( ) ) ] ) ,
700704 dependencies: Some ( vec![ BomReference ( "dependencies" . to_string( ) ) ] ) ,
705+ signature: None ,
701706 } ] ) ) ,
702707 properties : None ,
703708 vulnerabilities : None ,
709+ signature : None ,
704710 } ;
705711
706712 let actual = bom. validate ( ) . expect ( "Failed to validate bom" ) ;
@@ -783,6 +789,7 @@ mod test {
783789 properties: None ,
784790 components: None ,
785791 evidence: None ,
792+ signature: None ,
786793 } ] ) ) ,
787794 services : Some ( Services ( vec ! [ Service {
788795 bom_ref: None ,
@@ -799,6 +806,7 @@ mod test {
799806 external_references: None ,
800807 properties: None ,
801808 services: None ,
809+ signature: None ,
802810 } ] ) ) ,
803811 external_references : Some ( ExternalReferences ( vec ! [ ExternalReference {
804812 external_reference_type: ExternalReferenceType :: UnknownExternalReferenceType (
@@ -816,6 +824,7 @@ mod test {
816824 aggregate: AggregateType :: UnknownAggregateType ( "unknown" . to_string( ) ) ,
817825 assemblies: None ,
818826 dependencies: None ,
827+ signature: None ,
819828 } ] ) ) ,
820829 properties : Some ( Properties ( vec ! [ Property {
821830 name: "name" . to_string( ) ,
@@ -841,6 +850,7 @@ mod test {
841850 vulnerability_targets: None ,
842851 properties: None ,
843852 } ] ) ) ,
853+ signature : None ,
844854 } ;
845855
846856 let actual = bom
@@ -1001,6 +1011,7 @@ mod test {
10011011 compositions : None ,
10021012 properties : None ,
10031013 vulnerabilities : None ,
1014+ signature : None ,
10041015 }
10051016 . validate_with_context ( ValidationContext :: default ( ) )
10061017 . expect ( "Error while validating" ) ;
0 commit comments