sbom-cyclonedx 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +15 -0
- data/.gitlab-ci.yml +49 -0
- data/.rspec +3 -0
- data/.rubocop.yml +72 -0
- data/.vscode/settings.json +6 -0
- data/CHANGELOG.md +9 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/Gemfile +26 -0
- data/Gemfile.lock +179 -0
- data/LICENSE.txt +21 -0
- data/README.md +39 -0
- data/Rakefile +36 -0
- data/Steepfile +14 -0
- data/bin/console +11 -0
- data/bin/rbs_spec +9 -0
- data/bin/setup +8 -0
- data/bom-1.6.schema.json +7334 -0
- data/lib/email_address_extension.rb +26 -0
- data/lib/sbom/cyclone_dx/enum.rb +2178 -0
- data/lib/sbom/cyclone_dx/field.rb +404 -0
- data/lib/sbom/cyclone_dx/pattern.rb +43 -0
- data/lib/sbom/cyclone_dx/record/advisory.rb +17 -0
- data/lib/sbom/cyclone_dx/record/annotation.rb +46 -0
- data/lib/sbom/cyclone_dx/record/attachment.rb +21 -0
- data/lib/sbom/cyclone_dx/record/base.rb +244 -0
- data/lib/sbom/cyclone_dx/record/cipher_suite.rb +23 -0
- data/lib/sbom/cyclone_dx/record/co2_measure.rb +18 -0
- data/lib/sbom/cyclone_dx/record/command.rb +18 -0
- data/lib/sbom/cyclone_dx/record/commit.rb +25 -0
- data/lib/sbom/cyclone_dx/record/component.rb +126 -0
- data/lib/sbom/cyclone_dx/record/component_data.rb +46 -0
- data/lib/sbom/cyclone_dx/record/component_evidence.rb +68 -0
- data/lib/sbom/cyclone_dx/record/component_identity_evidence.rb +36 -0
- data/lib/sbom/cyclone_dx/record/composition.rb +33 -0
- data/lib/sbom/cyclone_dx/record/condition.rb +20 -0
- data/lib/sbom/cyclone_dx/record/copyright.rb +16 -0
- data/lib/sbom/cyclone_dx/record/crypto_properties.rb +137 -0
- data/lib/sbom/cyclone_dx/record/data_governance.rb +21 -0
- data/lib/sbom/cyclone_dx/record/data_governance_responsible_party.rb +22 -0
- data/lib/sbom/cyclone_dx/record/declarations.rb +193 -0
- data/lib/sbom/cyclone_dx/record/definitions.rb +17 -0
- data/lib/sbom/cyclone_dx/record/dependency.rb +21 -0
- data/lib/sbom/cyclone_dx/record/diff.rb +18 -0
- data/lib/sbom/cyclone_dx/record/energy_consumption.rb +31 -0
- data/lib/sbom/cyclone_dx/record/energy_measure.rb +18 -0
- data/lib/sbom/cyclone_dx/record/energy_provider.rb +31 -0
- data/lib/sbom/cyclone_dx/record/environmental_consideration.rb +20 -0
- data/lib/sbom/cyclone_dx/record/event.rb +31 -0
- data/lib/sbom/cyclone_dx/record/external_reference.rb +25 -0
- data/lib/sbom/cyclone_dx/record/fairness_assessment.rb +22 -0
- data/lib/sbom/cyclone_dx/record/formula.rb +29 -0
- data/lib/sbom/cyclone_dx/record/graphic.rb +19 -0
- data/lib/sbom/cyclone_dx/record/graphics_collection.rb +19 -0
- data/lib/sbom/cyclone_dx/record/hash_data.rb +18 -0
- data/lib/sbom/cyclone_dx/record/identifiable_action.rb +21 -0
- data/lib/sbom/cyclone_dx/record/input.rb +34 -0
- data/lib/sbom/cyclone_dx/record/input_output_ml_parameter.rb +17 -0
- data/lib/sbom/cyclone_dx/record/issue.rb +36 -0
- data/lib/sbom/cyclone_dx/record/license.rb +90 -0
- data/lib/sbom/cyclone_dx/record/license_choice.rb +35 -0
- data/lib/sbom/cyclone_dx/record/metadata.rb +55 -0
- data/lib/sbom/cyclone_dx/record/model_card.rb +89 -0
- data/lib/sbom/cyclone_dx/record/note.rb +20 -0
- data/lib/sbom/cyclone_dx/record/organizational_contact.rb +26 -0
- data/lib/sbom/cyclone_dx/record/organizational_entity.rb +28 -0
- data/lib/sbom/cyclone_dx/record/output.rb +34 -0
- data/lib/sbom/cyclone_dx/record/parameter.rb +20 -0
- data/lib/sbom/cyclone_dx/record/patch.rb +23 -0
- data/lib/sbom/cyclone_dx/record/performance_metric.rb +30 -0
- data/lib/sbom/cyclone_dx/record/postal_address.rb +34 -0
- data/lib/sbom/cyclone_dx/record/property.rb +18 -0
- data/lib/sbom/cyclone_dx/record/rating.rb +27 -0
- data/lib/sbom/cyclone_dx/record/release_notes.rb +44 -0
- data/lib/sbom/cyclone_dx/record/resource_reference_choice.rb +22 -0
- data/lib/sbom/cyclone_dx/record/risk.rb +18 -0
- data/lib/sbom/cyclone_dx/record/root.rb +63 -0
- data/lib/sbom/cyclone_dx/record/secured_by.rb +20 -0
- data/lib/sbom/cyclone_dx/record/service.rb +54 -0
- data/lib/sbom/cyclone_dx/record/service_data.rb +32 -0
- data/lib/sbom/cyclone_dx/record/signature.rb +85 -0
- data/lib/sbom/cyclone_dx/record/standard.rb +72 -0
- data/lib/sbom/cyclone_dx/record/step.rb +24 -0
- data/lib/sbom/cyclone_dx/record/swid.rb +29 -0
- data/lib/sbom/cyclone_dx/record/task.rb +56 -0
- data/lib/sbom/cyclone_dx/record/tools.rb +20 -0
- data/lib/sbom/cyclone_dx/record/trigger.rb +48 -0
- data/lib/sbom/cyclone_dx/record/version.rb +24 -0
- data/lib/sbom/cyclone_dx/record/volume.rb +33 -0
- data/lib/sbom/cyclone_dx/record/vulnerability.rb +119 -0
- data/lib/sbom/cyclone_dx/record/vulnerability_source.rb +20 -0
- data/lib/sbom/cyclone_dx/record/workflow.rb +59 -0
- data/lib/sbom/cyclone_dx/record/workspace.rb +45 -0
- data/lib/sbom/cyclone_dx/record.rb +12 -0
- data/lib/sbom/cyclone_dx/validator/array_validator.rb +66 -0
- data/lib/sbom/cyclone_dx/validator/base_validator.rb +43 -0
- data/lib/sbom/cyclone_dx/validator/boolean_validator.rb +16 -0
- data/lib/sbom/cyclone_dx/validator/date_time_validator.rb +29 -0
- data/lib/sbom/cyclone_dx/validator/email_address_validator.rb +31 -0
- data/lib/sbom/cyclone_dx/validator/float_validator.rb +30 -0
- data/lib/sbom/cyclone_dx/validator/integer_validator.rb +30 -0
- data/lib/sbom/cyclone_dx/validator/record_validator.rb +26 -0
- data/lib/sbom/cyclone_dx/validator/string_validator.rb +33 -0
- data/lib/sbom/cyclone_dx/validator/union_validator.rb +39 -0
- data/lib/sbom/cyclone_dx/validator/uri_validator.rb +32 -0
- data/lib/sbom/cyclone_dx/validator.rb +32 -0
- data/lib/sbom/cyclone_dx/version.rb +7 -0
- data/lib/sbom/cyclone_dx.rb +39 -0
- data/rbs_collection.lock.yaml +288 -0
- data/rbs_collection.yaml +31 -0
- data/sbom-cyclone_dx.gemspec +32 -0
- data/sig/email_address_extension.rbs +14 -0
- data/sig/sbom/cyclone_dx/enum.rbs +93 -0
- data/sig/sbom/cyclone_dx/field.rbs +434 -0
- data/sig/sbom/cyclone_dx/pattern.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/advisory.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/annotation.rbs +63 -0
- data/sig/sbom/cyclone_dx/record/attachment.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/base.rbs +62 -0
- data/sig/sbom/cyclone_dx/record/cipher_suite.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/co2_measure.rbs +14 -0
- data/sig/sbom/cyclone_dx/record/command.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/commit.rbs +34 -0
- data/sig/sbom/cyclone_dx/record/component.rbs +203 -0
- data/sig/sbom/cyclone_dx/record/component_data.rbs +73 -0
- data/sig/sbom/cyclone_dx/record/component_evidence.rbs +115 -0
- data/sig/sbom/cyclone_dx/record/component_identity_evidence.rbs +53 -0
- data/sig/sbom/cyclone_dx/record/composition.rbs +39 -0
- data/sig/sbom/cyclone_dx/record/condition.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/copyright.rbs +14 -0
- data/sig/sbom/cyclone_dx/record/crypto_properties.rbs +268 -0
- data/sig/sbom/cyclone_dx/record/data_governance.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/data_governance_responsible_party.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/declarations.rbs +352 -0
- data/sig/sbom/cyclone_dx/record/definitions.rbs +14 -0
- data/sig/sbom/cyclone_dx/record/dependency.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/diff.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/energy_consumption.rbs +39 -0
- data/sig/sbom/cyclone_dx/record/energy_measure.rbs +14 -0
- data/sig/sbom/cyclone_dx/record/energy_provider.rbs +39 -0
- data/sig/sbom/cyclone_dx/record/environmental_consideration.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/event.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/external_reference.rbs +29 -0
- data/sig/sbom/cyclone_dx/record/fairness_assessment.rbs +29 -0
- data/sig/sbom/cyclone_dx/record/formula.rbs +34 -0
- data/sig/sbom/cyclone_dx/record/graphic.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/graphics_collection.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/hash_data.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/identifiable_action.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/input.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/input_output_ml_parameter.rbs +14 -0
- data/sig/sbom/cyclone_dx/record/issue.rbs +53 -0
- data/sig/sbom/cyclone_dx/record/license.rbs +134 -0
- data/sig/sbom/cyclone_dx/record/license_choice.rbs +39 -0
- data/sig/sbom/cyclone_dx/record/metadata.rbs +82 -0
- data/sig/sbom/cyclone_dx/record/model_card.rbs +143 -0
- data/sig/sbom/cyclone_dx/record/note.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/organizational_contact.rbs +29 -0
- data/sig/sbom/cyclone_dx/record/organizational_entity.rbs +34 -0
- data/sig/sbom/cyclone_dx/record/output.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/parameter.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/patch.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/performance_metric.rbs +43 -0
- data/sig/sbom/cyclone_dx/record/postal_address.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/property.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/rating.rbs +39 -0
- data/sig/sbom/cyclone_dx/record/release_notes.rbs +64 -0
- data/sig/sbom/cyclone_dx/record/resource_reference_choice.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/risk.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/root.rbs +84 -0
- data/sig/sbom/cyclone_dx/record/secured_by.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/service.rbs +99 -0
- data/sig/sbom/cyclone_dx/record/service_data.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/signature.rbs +130 -0
- data/sig/sbom/cyclone_dx/record/standard.rbs +132 -0
- data/sig/sbom/cyclone_dx/record/step.rbs +29 -0
- data/sig/sbom/cyclone_dx/record/swid.rbs +44 -0
- data/sig/sbom/cyclone_dx/record/task.rbs +84 -0
- data/sig/sbom/cyclone_dx/record/tools.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/trigger.rbs +69 -0
- data/sig/sbom/cyclone_dx/record/version.rbs +24 -0
- data/sig/sbom/cyclone_dx/record/volume.rbs +49 -0
- data/sig/sbom/cyclone_dx/record/vulnerability.rbs +209 -0
- data/sig/sbom/cyclone_dx/record/vulnerability_source.rbs +19 -0
- data/sig/sbom/cyclone_dx/record/workflow.rbs +94 -0
- data/sig/sbom/cyclone_dx/record/workspace.rbs +69 -0
- data/sig/sbom/cyclone_dx/record.rbs +161 -0
- data/sig/sbom/cyclone_dx/type.rbs +16 -0
- data/sig/sbom/cyclone_dx/validator/array_validator.rbs +31 -0
- data/sig/sbom/cyclone_dx/validator/base_validator.rbs +21 -0
- data/sig/sbom/cyclone_dx/validator/boolean_validator.rbs +9 -0
- data/sig/sbom/cyclone_dx/validator/date_time_validator.rbs +10 -0
- data/sig/sbom/cyclone_dx/validator/email_address_validator.rbs +10 -0
- data/sig/sbom/cyclone_dx/validator/float_validator.rbs +12 -0
- data/sig/sbom/cyclone_dx/validator/integer_validator.rbs +12 -0
- data/sig/sbom/cyclone_dx/validator/record_validator.rbs +12 -0
- data/sig/sbom/cyclone_dx/validator/string_validator.rbs +14 -0
- data/sig/sbom/cyclone_dx/validator/union_validator.rbs +24 -0
- data/sig/sbom/cyclone_dx/validator/uri_validator.rbs +10 -0
- data/sig/sbom/cyclone_dx/validator.rbs +66 -0
- data/sig/sbom/cyclone_dx.rbs +13 -0
- data/sig/types.rbs +45 -0
- data/spec/email_address_extension_spec.rb +27 -0
- data/spec/factories/factory_helper.rb +78 -0
- data/spec/factories/record/advisory_factory.rb +11 -0
- data/spec/factories/record/annotation_factory.rb +63 -0
- data/spec/factories/record/attachment_factory.rb +9 -0
- data/spec/factories/record/cipher_suite_factory.rb +26 -0
- data/spec/factories/record/co2_measure_factory.rb +9 -0
- data/spec/factories/record/command_factory.rb +10 -0
- data/spec/factories/record/commit_factory.rb +13 -0
- data/spec/factories/record/component_data_factory.rb +28 -0
- data/spec/factories/record/component_evidence_factory.rb +44 -0
- data/spec/factories/record/component_factory.rb +102 -0
- data/spec/factories/record/component_identity_evidence_factory.rb +25 -0
- data/spec/factories/record/composition_factory.rb +20 -0
- data/spec/factories/record/condition_factory.rb +11 -0
- data/spec/factories/record/copyright_factory.rb +9 -0
- data/spec/factories/record/crypto_properties_factory.rb +191 -0
- data/spec/factories/record/data_governance_factory.rb +11 -0
- data/spec/factories/record/data_governance_responsible_party_factory.rb +31 -0
- data/spec/factories/record/declarations_factory.rb +145 -0
- data/spec/factories/record/definitions_factory.rb +9 -0
- data/spec/factories/record/dependency_factory.rb +12 -0
- data/spec/factories/record/diff_factory.rb +24 -0
- data/spec/factories/record/energy_consumption_factory.rb +15 -0
- data/spec/factories/record/energy_measure_factory.rb +9 -0
- data/spec/factories/record/energy_provider_factory.rb +15 -0
- data/spec/factories/record/environmental_consideration_factory.rb +10 -0
- data/spec/factories/record/event_factory.rb +15 -0
- data/spec/factories/record/external_reference_factory.rb +13 -0
- data/spec/factories/record/fairness_assessment_factory.rb +12 -0
- data/spec/factories/record/formula_factory.rb +13 -0
- data/spec/factories/record/graphic_factory.rb +10 -0
- data/spec/factories/record/graphics_collection_factory.rb +10 -0
- data/spec/factories/record/hash_data_factory.rb +10 -0
- data/spec/factories/record/identifiable_action_factory.rb +11 -0
- data/spec/factories/record/input_factory.rb +36 -0
- data/spec/factories/record/input_output_ml_parameter_factory.rb +9 -0
- data/spec/factories/record/issue_factory.rb +22 -0
- data/spec/factories/record/license_choice_factory.rb +23 -0
- data/spec/factories/record/license_factory.rb +99 -0
- data/spec/factories/record/metadata_factory.rb +38 -0
- data/spec/factories/record/model_card_factory.rb +59 -0
- data/spec/factories/record/note_factory.rb +11 -0
- data/spec/factories/record/organizational_contact_factory.rb +12 -0
- data/spec/factories/record/organizational_entity_factory.rb +13 -0
- data/spec/factories/record/output_factory.rb +32 -0
- data/spec/factories/record/parameter_factory.rb +11 -0
- data/spec/factories/record/patch_factory.rb +12 -0
- data/spec/factories/record/performance_metric_factory.rb +20 -0
- data/spec/factories/record/postal_address_factory.rb +14 -0
- data/spec/factories/record/property_factory.rb +11 -0
- data/spec/factories/record/rating_factory.rb +14 -0
- data/spec/factories/record/release_notes_factory.rb +20 -0
- data/spec/factories/record/resource_reference_choice_factory.rb +27 -0
- data/spec/factories/record/risk_factory.rb +10 -0
- data/spec/factories/record/root_factory.rb +23 -0
- data/spec/factories/record/secured_by_factory.rb +10 -0
- data/spec/factories/record/service_data_factory.rb +16 -0
- data/spec/factories/record/service_factory.rb +27 -0
- data/spec/factories/record/signature_factory.rb +50 -0
- data/spec/factories/record/standard_factory.rb +37 -0
- data/spec/factories/record/step_factory.rb +12 -0
- data/spec/factories/record/swid_factory.rb +16 -0
- data/spec/factories/record/task_factory.rb +24 -0
- data/spec/factories/record/tools_factory.rb +10 -0
- data/spec/factories/record/trigger_factory.rb +21 -0
- data/spec/factories/record/version_factory.rb +19 -0
- data/spec/factories/record/volume_factory.rb +16 -0
- data/spec/factories/record/vulnerability_factory.rb +70 -0
- data/spec/factories/record/vulnerability_source_factory.rb +10 -0
- data/spec/factories/record/workflow_factory.rb +26 -0
- data/spec/factories/record/workspace_factory.rb +21 -0
- data/spec/factories/record_factory.rb +159 -0
- data/spec/fixtures/cipher_info.yml +948 -0
- data/spec/fixtures/purl_data.yml +0 -0
- data/spec/sbom/cyclone_dx/enum_spec.rb +30 -0
- data/spec/sbom/cyclone_dx/field_spec.rb +104 -0
- data/spec/sbom/cyclone_dx/pattern_spec.rb +18 -0
- data/spec/sbom/cyclone_dx/record/advisory_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/annotation_spec.rb +31 -0
- data/spec/sbom/cyclone_dx/record/attachment_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/base_spec.rb +363 -0
- data/spec/sbom/cyclone_dx/record/cipher_suite_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/co2_measure_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/command_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/commit_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/component_data_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/component_evidence_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/component_identity_evidence_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/component_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/composition_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/condition_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/copyright_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/crypto_properties_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/data_governance_responsible_party_spec.rb +19 -0
- data/spec/sbom/cyclone_dx/record/data_governance_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/declarations_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/definitions_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/dependency_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/diff_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/energy_consumption_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/energy_measure_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/energy_provider_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/environmental_consideration_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/event_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/external_reference_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/fairness_assessment_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/formula_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/graphic_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/graphics_collection_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/hash_data_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/identifiable_action_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/input_output_ml_parameter_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/input_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/issue_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/license_choice_spec.rb +26 -0
- data/spec/sbom/cyclone_dx/record/license_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/metadata_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/model_card_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/note_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/organizational_contact_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/organizational_entity_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/output_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/parameter_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/patch_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/performance_metric_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/postal_address_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/property_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/rating_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/release_notes_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/resource_reference_choice_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/risk_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/root_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/secured_by_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/service_data_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/service_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/signature_spec.rb +26 -0
- data/spec/sbom/cyclone_dx/record/standard_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/step_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/swid_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/task_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/tools_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/trigger_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/version_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/volume_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/vulnerability_source_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/vulnerability_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/workflow_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record/workspace_spec.rb +14 -0
- data/spec/sbom/cyclone_dx/record_spec.rb +7 -0
- data/spec/sbom/cyclone_dx/validator/array_validator_spec.rb +184 -0
- data/spec/sbom/cyclone_dx/validator/base_validator_spec.rb +71 -0
- data/spec/sbom/cyclone_dx/validator/boolean_validator_spec.rb +26 -0
- data/spec/sbom/cyclone_dx/validator/date_time_validator_spec.rb +28 -0
- data/spec/sbom/cyclone_dx/validator/email_address_validator_spec.rb +23 -0
- data/spec/sbom/cyclone_dx/validator/float_validator_spec.rb +71 -0
- data/spec/sbom/cyclone_dx/validator/integer_validator_spec.rb +71 -0
- data/spec/sbom/cyclone_dx/validator/record_validator_spec.rb +35 -0
- data/spec/sbom/cyclone_dx/validator/string_validator_spec.rb +94 -0
- data/spec/sbom/cyclone_dx/validator/union_validator_spec.rb +65 -0
- data/spec/sbom/cyclone_dx/validator/uri_validator_spec.rb +21 -0
- data/spec/sbom/cyclone_dx/validator_spec.rb +38 -0
- data/spec/sbom/cyclone_dx/version_spec.rb +9 -0
- data/spec/sbom/cyclone_dx_spec.rb +7 -0
- data/spec/spec_helper.rb +39 -0
- metadata +377 -6
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_validator"
|
4
|
+
|
5
|
+
module SBOM
|
6
|
+
module CycloneDX
|
7
|
+
# TODO: Add helpful errors
|
8
|
+
module Validator
|
9
|
+
class RecordValidator < BaseValidator
|
10
|
+
def initialize(type:, required: false)
|
11
|
+
super(type, required: required)
|
12
|
+
|
13
|
+
@record_type = type
|
14
|
+
end
|
15
|
+
|
16
|
+
def validate(value)
|
17
|
+
rv = super
|
18
|
+
return rv unless value.is_a?(@record_type)
|
19
|
+
|
20
|
+
rv += value.valid? ? [] : value.formatted_errors
|
21
|
+
rv.compact
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_validator"
|
4
|
+
require_relative "../pattern"
|
5
|
+
|
6
|
+
module SBOM
|
7
|
+
module CycloneDX
|
8
|
+
# TODO: Add helpful errors
|
9
|
+
module Validator
|
10
|
+
class StringValidator < BaseValidator
|
11
|
+
# TODO: Validate max/min_length >= 0 and max_length >= min_length
|
12
|
+
def initialize(enum: nil, max_length: nil, min_length: nil, pattern: Pattern::DEFAULT, required: true)
|
13
|
+
super(String, required: required)
|
14
|
+
|
15
|
+
@enum = enum
|
16
|
+
@length_range = (min_length..max_length)
|
17
|
+
@pattern = pattern
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate(value)
|
21
|
+
rv = super
|
22
|
+
return rv unless value.is_a?(String)
|
23
|
+
|
24
|
+
rv << "Value is not within enum" if @enum&.exclude?(value)
|
25
|
+
rv << "Value is not within length range" unless @length_range.cover?(value.length)
|
26
|
+
rv << "Value does not match pattern" unless Pattern.match_exactly?(@pattern, value)
|
27
|
+
|
28
|
+
rv
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_validator"
|
4
|
+
require_relative "../validator"
|
5
|
+
|
6
|
+
module SBOM
|
7
|
+
module CycloneDX
|
8
|
+
# TODO: Add helpful errors
|
9
|
+
module Validator
|
10
|
+
class UnionValidator < BaseValidator
|
11
|
+
def initialize(of:, required: false)
|
12
|
+
super(required: required)
|
13
|
+
|
14
|
+
@nested_validators = []
|
15
|
+
|
16
|
+
of.each do |union_item|
|
17
|
+
(klass, validator_params) = union_item.is_a?(Array) ? union_item : [union_item, {}]
|
18
|
+
|
19
|
+
@nested_validators << Validator.for(klass, required: required, **validator_params)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def validate(value)
|
24
|
+
# TODO: Build message based on type and params, e.g.
|
25
|
+
# "Expected one of: [String, Integer], got: Float"
|
26
|
+
# "Expected one of: [String with length <= 2, Integer with maximum 99], got: String with length 3"
|
27
|
+
rv = @nested_validators.map { |validator| validator.validate(value) }
|
28
|
+
return [] if rv.any?(&:empty?)
|
29
|
+
|
30
|
+
rv.flatten
|
31
|
+
end
|
32
|
+
|
33
|
+
def raw_types
|
34
|
+
@nested_validators.flat_map(&:raw_types)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "uri"
|
4
|
+
require_relative "base_validator"
|
5
|
+
|
6
|
+
module SBOM
|
7
|
+
module CycloneDX
|
8
|
+
# TODO: Add helpful errors
|
9
|
+
module Validator
|
10
|
+
class URIValidator < BaseValidator
|
11
|
+
def initialize(required: false)
|
12
|
+
super(::URI::Generic, String, required: required)
|
13
|
+
end
|
14
|
+
|
15
|
+
def validate(value)
|
16
|
+
rv = super
|
17
|
+
return rv unless value.is_a?(::URI::Generic) || value.is_a?(String)
|
18
|
+
|
19
|
+
begin
|
20
|
+
# Steep is, for some reason, looking at OpenURI's ::URI, and not ::URI from stdlib...
|
21
|
+
uri_value = value.is_a?(URI::Generic) ? value : URI.parse(value)
|
22
|
+
return rv if uri_value.scheme.present? && uri_value.host.present?
|
23
|
+
rescue NoMethodError, URI::Error
|
24
|
+
# Do nothing, all errors handled below
|
25
|
+
end
|
26
|
+
|
27
|
+
rv << "Invalid URI"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Dir[File.join(".", "validator", "*.rb")].each { |file| require_relative file }
|
4
|
+
|
5
|
+
module SBOM
|
6
|
+
module CycloneDX
|
7
|
+
module Validator
|
8
|
+
SIMPLE_TYPES = %i[boolean date_time email_address float integer string uri].freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def for(type, **kwargs) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/AbcSize
|
12
|
+
case type
|
13
|
+
when :array then ArrayValidator.new(items: kwargs.fetch(:items), **kwargs)
|
14
|
+
when :boolean then BooleanValidator.new(**kwargs)
|
15
|
+
when :date_time then DateTimeValidator.new(**kwargs)
|
16
|
+
when :email_address then EmailAddressValidator.new(**kwargs)
|
17
|
+
when :float then FloatValidator.new(**kwargs)
|
18
|
+
when :integer then IntegerValidator.new(**kwargs)
|
19
|
+
when :string then StringValidator.new(**kwargs)
|
20
|
+
when :union then UnionValidator.new(of: kwargs.fetch(:of), **kwargs)
|
21
|
+
when :uri then URIValidator.new(**kwargs)
|
22
|
+
when Class
|
23
|
+
raise ArgumentError, "Unsupported type: #{type.name}" unless type < Record::Base
|
24
|
+
|
25
|
+
RecordValidator.new(type: type, **kwargs)
|
26
|
+
else raise ArgumentError, "Unsupported type: #{type}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../email_address_extension"
|
4
|
+
require_relative "cyclone_dx/enum"
|
5
|
+
require_relative "cyclone_dx/field"
|
6
|
+
require_relative "cyclone_dx/pattern"
|
7
|
+
require_relative "cyclone_dx/record"
|
8
|
+
require_relative "cyclone_dx/validator"
|
9
|
+
require_relative "cyclone_dx/version"
|
10
|
+
require "json"
|
11
|
+
|
12
|
+
# Disable DNS lookup and host validation for the EmailAddress gem, so we don't accidentally hit the network.
|
13
|
+
# We also override this in the EmailAddressExtension module, but this is a good safety net.
|
14
|
+
(_ = EmailAddress::Config).configure({ dns_lookup: :off, host_validation: :syntax })
|
15
|
+
|
16
|
+
module SBOM
|
17
|
+
module CycloneDX
|
18
|
+
class Error < StandardError; end
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def create(hash)
|
22
|
+
Record::Root.new(**hash)
|
23
|
+
end
|
24
|
+
|
25
|
+
def load(file)
|
26
|
+
parse(file.read)
|
27
|
+
end
|
28
|
+
|
29
|
+
def parse(string)
|
30
|
+
json_hash = JSON.parse(string, symbolize_names: true)
|
31
|
+
Record::Root.json_create(json_hash)
|
32
|
+
end
|
33
|
+
|
34
|
+
def json_create(hash)
|
35
|
+
Record::Root.json_create(hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
---
|
2
|
+
path: ".gem_rbs_collection"
|
3
|
+
gems:
|
4
|
+
- name: activesupport
|
5
|
+
version: '7.0'
|
6
|
+
source:
|
7
|
+
type: git
|
8
|
+
name: ruby/gem_rbs_collection
|
9
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
10
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
11
|
+
repo_dir: gems
|
12
|
+
- name: ast
|
13
|
+
version: '2.4'
|
14
|
+
source:
|
15
|
+
type: git
|
16
|
+
name: ruby/gem_rbs_collection
|
17
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
18
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
19
|
+
repo_dir: gems
|
20
|
+
- name: base64
|
21
|
+
version: '0'
|
22
|
+
source:
|
23
|
+
type: git
|
24
|
+
name: ruby/rbs
|
25
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
26
|
+
remote: https://github.com/ruby/rbs.git
|
27
|
+
repo_dir: stdlib
|
28
|
+
- name: benchmark
|
29
|
+
version: '0'
|
30
|
+
source:
|
31
|
+
type: git
|
32
|
+
name: ruby/rbs
|
33
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
34
|
+
remote: https://github.com/ruby/rbs.git
|
35
|
+
repo_dir: stdlib
|
36
|
+
- name: bigdecimal
|
37
|
+
version: '0'
|
38
|
+
source:
|
39
|
+
type: git
|
40
|
+
name: ruby/rbs
|
41
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
42
|
+
remote: https://github.com/ruby/rbs.git
|
43
|
+
repo_dir: stdlib
|
44
|
+
- name: concurrent-ruby
|
45
|
+
version: '1.1'
|
46
|
+
source:
|
47
|
+
type: git
|
48
|
+
name: ruby/gem_rbs_collection
|
49
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
50
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
51
|
+
repo_dir: gems
|
52
|
+
- name: connection_pool
|
53
|
+
version: '2.4'
|
54
|
+
source:
|
55
|
+
type: git
|
56
|
+
name: ruby/gem_rbs_collection
|
57
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
58
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
59
|
+
repo_dir: gems
|
60
|
+
- name: date
|
61
|
+
version: '0'
|
62
|
+
source:
|
63
|
+
type: stdlib
|
64
|
+
- name: dbm
|
65
|
+
version: '0'
|
66
|
+
source:
|
67
|
+
type: stdlib
|
68
|
+
- name: diff-lcs
|
69
|
+
version: '1.5'
|
70
|
+
source:
|
71
|
+
type: git
|
72
|
+
name: ruby/gem_rbs_collection
|
73
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
74
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
75
|
+
repo_dir: gems
|
76
|
+
- name: digest
|
77
|
+
version: '0'
|
78
|
+
source:
|
79
|
+
type: stdlib
|
80
|
+
- name: email_address
|
81
|
+
version: '0.2'
|
82
|
+
source:
|
83
|
+
type: git
|
84
|
+
name: ruby/gem_rbs_collection
|
85
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
86
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
87
|
+
repo_dir: gems
|
88
|
+
- name: erb
|
89
|
+
version: '0'
|
90
|
+
source:
|
91
|
+
type: stdlib
|
92
|
+
- name: faker
|
93
|
+
version: '2.23'
|
94
|
+
source:
|
95
|
+
type: git
|
96
|
+
name: ruby/gem_rbs_collection
|
97
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
98
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
99
|
+
repo_dir: gems
|
100
|
+
- name: fileutils
|
101
|
+
version: '0'
|
102
|
+
source:
|
103
|
+
type: stdlib
|
104
|
+
- name: i18n
|
105
|
+
version: '1.10'
|
106
|
+
source:
|
107
|
+
type: git
|
108
|
+
name: ruby/gem_rbs_collection
|
109
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
110
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
111
|
+
repo_dir: gems
|
112
|
+
- name: io-console
|
113
|
+
version: '0'
|
114
|
+
source:
|
115
|
+
type: git
|
116
|
+
name: ruby/rbs
|
117
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
118
|
+
remote: https://github.com/ruby/rbs.git
|
119
|
+
repo_dir: stdlib
|
120
|
+
- name: json
|
121
|
+
version: '0'
|
122
|
+
source:
|
123
|
+
type: git
|
124
|
+
name: ruby/rbs
|
125
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
126
|
+
remote: https://github.com/ruby/rbs.git
|
127
|
+
repo_dir: stdlib
|
128
|
+
- name: logger
|
129
|
+
version: '0'
|
130
|
+
source:
|
131
|
+
type: stdlib
|
132
|
+
- name: minitest
|
133
|
+
version: '0'
|
134
|
+
source:
|
135
|
+
type: stdlib
|
136
|
+
- name: monitor
|
137
|
+
version: '0'
|
138
|
+
source:
|
139
|
+
type: stdlib
|
140
|
+
- name: mutex_m
|
141
|
+
version: '0'
|
142
|
+
source:
|
143
|
+
type: git
|
144
|
+
name: ruby/rbs
|
145
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
146
|
+
remote: https://github.com/ruby/rbs.git
|
147
|
+
repo_dir: stdlib
|
148
|
+
- name: openssl
|
149
|
+
version: '0'
|
150
|
+
source:
|
151
|
+
type: stdlib
|
152
|
+
- name: optparse
|
153
|
+
version: '0'
|
154
|
+
source:
|
155
|
+
type: stdlib
|
156
|
+
- name: parallel
|
157
|
+
version: '1.20'
|
158
|
+
source:
|
159
|
+
type: git
|
160
|
+
name: ruby/gem_rbs_collection
|
161
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
162
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
163
|
+
repo_dir: gems
|
164
|
+
- name: parser
|
165
|
+
version: '3.2'
|
166
|
+
source:
|
167
|
+
type: git
|
168
|
+
name: ruby/gem_rbs_collection
|
169
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
170
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
171
|
+
repo_dir: gems
|
172
|
+
- name: pathname
|
173
|
+
version: '0'
|
174
|
+
source:
|
175
|
+
type: stdlib
|
176
|
+
- name: pstore
|
177
|
+
version: '0'
|
178
|
+
source:
|
179
|
+
type: stdlib
|
180
|
+
- name: psych
|
181
|
+
version: '0'
|
182
|
+
source:
|
183
|
+
type: git
|
184
|
+
name: ruby/rbs
|
185
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
186
|
+
remote: https://github.com/ruby/rbs.git
|
187
|
+
repo_dir: stdlib
|
188
|
+
- name: rainbow
|
189
|
+
version: '3.0'
|
190
|
+
source:
|
191
|
+
type: git
|
192
|
+
name: ruby/gem_rbs_collection
|
193
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
194
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
195
|
+
repo_dir: gems
|
196
|
+
- name: rake
|
197
|
+
version: '13.0'
|
198
|
+
source:
|
199
|
+
type: git
|
200
|
+
name: ruby/gem_rbs_collection
|
201
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
202
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
203
|
+
repo_dir: gems
|
204
|
+
- name: rbs
|
205
|
+
version: 3.7.0
|
206
|
+
source:
|
207
|
+
type: rubygems
|
208
|
+
- name: rdoc
|
209
|
+
version: '0'
|
210
|
+
source:
|
211
|
+
type: git
|
212
|
+
name: ruby/rbs
|
213
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
214
|
+
remote: https://github.com/ruby/rbs.git
|
215
|
+
repo_dir: stdlib
|
216
|
+
- name: regexp_parser
|
217
|
+
version: '2.8'
|
218
|
+
source:
|
219
|
+
type: git
|
220
|
+
name: ruby/gem_rbs_collection
|
221
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
222
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
223
|
+
repo_dir: gems
|
224
|
+
- name: rubocop
|
225
|
+
version: '1.57'
|
226
|
+
source:
|
227
|
+
type: git
|
228
|
+
name: ruby/gem_rbs_collection
|
229
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
230
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
231
|
+
repo_dir: gems
|
232
|
+
- name: rubocop-ast
|
233
|
+
version: '1.30'
|
234
|
+
source:
|
235
|
+
type: git
|
236
|
+
name: ruby/gem_rbs_collection
|
237
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
238
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
239
|
+
repo_dir: gems
|
240
|
+
- name: securerandom
|
241
|
+
version: '0'
|
242
|
+
source:
|
243
|
+
type: stdlib
|
244
|
+
- name: singleton
|
245
|
+
version: '0'
|
246
|
+
source:
|
247
|
+
type: stdlib
|
248
|
+
- name: socket
|
249
|
+
version: '0'
|
250
|
+
source:
|
251
|
+
type: stdlib
|
252
|
+
- name: stringio
|
253
|
+
version: '0'
|
254
|
+
source:
|
255
|
+
type: git
|
256
|
+
name: ruby/rbs
|
257
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
258
|
+
remote: https://github.com/ruby/rbs.git
|
259
|
+
repo_dir: stdlib
|
260
|
+
- name: time
|
261
|
+
version: '0'
|
262
|
+
source:
|
263
|
+
type: stdlib
|
264
|
+
- name: timeout
|
265
|
+
version: '0'
|
266
|
+
source:
|
267
|
+
type: stdlib
|
268
|
+
- name: tsort
|
269
|
+
version: '0'
|
270
|
+
source:
|
271
|
+
type: stdlib
|
272
|
+
- name: tzinfo
|
273
|
+
version: '2.0'
|
274
|
+
source:
|
275
|
+
type: git
|
276
|
+
name: ruby/gem_rbs_collection
|
277
|
+
revision: 56038c8a383c25bae14a891e3c0cc5c2e5a9c976
|
278
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
279
|
+
repo_dir: gems
|
280
|
+
- name: uri
|
281
|
+
version: '0'
|
282
|
+
source:
|
283
|
+
type: git
|
284
|
+
name: ruby/rbs
|
285
|
+
revision: e1636a79d553715cbf40343c6d33b4dd0fe8c2f3
|
286
|
+
remote: https://github.com/ruby/rbs.git
|
287
|
+
repo_dir: stdlib
|
288
|
+
gemfile_lock_path: Gemfile.lock
|
data/rbs_collection.yaml
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Download sources
|
2
|
+
sources:
|
3
|
+
- type: git
|
4
|
+
name: ruby/gem_rbs_collection
|
5
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
6
|
+
revision: main
|
7
|
+
repo_dir: gems
|
8
|
+
- type: git
|
9
|
+
name: ruby/rbs
|
10
|
+
remote: https://github.com/ruby/rbs.git
|
11
|
+
revision: master
|
12
|
+
repo_dir: stdlib
|
13
|
+
|
14
|
+
# You can specify local directories as sources also.
|
15
|
+
# - type: local
|
16
|
+
# path: path/to/your/local/repository
|
17
|
+
|
18
|
+
# A directory to install the downloaded RBSs
|
19
|
+
path: .gem_rbs_collection
|
20
|
+
|
21
|
+
# gems:
|
22
|
+
# # If you want to avoid installing rbs files for gems, you can specify them here.
|
23
|
+
# - name: GEM_NAME
|
24
|
+
# ignore: true
|
25
|
+
gems:
|
26
|
+
- name: email_address
|
27
|
+
ignore: false
|
28
|
+
- name: uri
|
29
|
+
ignore: false
|
30
|
+
- name: json
|
31
|
+
ignore: false
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/sbom/cyclone_dx/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "sbom-cyclonedx"
|
7
|
+
spec.version = SBOM::CycloneDX::VERSION
|
8
|
+
spec.authors = ["Rob Trame"]
|
9
|
+
spec.email = ["rtrame@hackerone.com"]
|
10
|
+
|
11
|
+
spec.summary = "Gem for generating/parsing CycloneDX JSON SBOMs"
|
12
|
+
spec.description = "Gem for generating/parsing CycloneDX JSON SBOMs"
|
13
|
+
spec.homepage = "https://github.com/Hacker0x01/sbom-cyclonedx"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 3.0.0"
|
16
|
+
|
17
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
18
|
+
|
19
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
+
spec.metadata["source_code_uri"] = "https://github.com/Hacker0x01/sbom-cyclonedx"
|
21
|
+
spec.metadata["changelog_uri"] = "https://github.com/Hacker0x01/sbom-cyclonedx/blob/main/CHANGELOG.md"
|
22
|
+
|
23
|
+
spec.files = `git ls-files`.split("\n")
|
24
|
+
spec.bindir = "bin"
|
25
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_dependency "activesupport", ">= 6.1", "< 8"
|
30
|
+
spec.add_dependency "email_address", "~> 0.2", ">= 0.2.4"
|
31
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
32
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
interface _EmailAddress
|
2
|
+
def initialize: (String, ?Hash[Symbol, untyped], ?String) -> void
|
3
|
+
end
|
4
|
+
|
5
|
+
module EmailAddressExtension
|
6
|
+
include _EmailAddress
|
7
|
+
|
8
|
+
def to_json: (*untyped) -> ::String
|
9
|
+
def as_json: (*untyped) -> ::String
|
10
|
+
end
|
11
|
+
|
12
|
+
class EmailAddress::Address
|
13
|
+
prepend EmailAddressExtension
|
14
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module SBOM
|
2
|
+
module CycloneDX
|
3
|
+
module Enum
|
4
|
+
ACCESS_MODE: ::Array[String]
|
5
|
+
|
6
|
+
ACTIVITY: ::Array[String]
|
7
|
+
|
8
|
+
AFFECTED_STATUS: ::Array[String]
|
9
|
+
|
10
|
+
AGGREGATE_TYPE: ::Array[String]
|
11
|
+
|
12
|
+
ALGORITHM_MODE: ::Array[String]
|
13
|
+
|
14
|
+
ASSET_TYPE: ::Array[String]
|
15
|
+
|
16
|
+
CERTIFICATION_LEVEL: ::Array[String]
|
17
|
+
|
18
|
+
COMPONENT_DATA_TYPE: ::Array[String]
|
19
|
+
|
20
|
+
COMPONENT_TYPE: ::Array[String]
|
21
|
+
|
22
|
+
CRYPTO_FUNCTION: ::Array[String]
|
23
|
+
|
24
|
+
DATA_FLOW_DIRECTION: ::Array[String]
|
25
|
+
|
26
|
+
ENERGY_SOURCE: ::Array[String]
|
27
|
+
|
28
|
+
EXECUTION_ENVIRONMENT: ::Array[String]
|
29
|
+
|
30
|
+
EXTERNAL_REFERENCE_TYPE: ::Array[String]
|
31
|
+
|
32
|
+
FIELD: ::Array[String]
|
33
|
+
|
34
|
+
HASH_ALG: ::Array[String]
|
35
|
+
|
36
|
+
IMPACT_ANALYSIS_JUSTIFICATION: ::Array[String]
|
37
|
+
|
38
|
+
IMPACT_ANALYSIS_STATE: ::Array[String]
|
39
|
+
|
40
|
+
IMPLEMENTATION_PLATFORM: ::Array[String]
|
41
|
+
|
42
|
+
ISSUE_TYPE: ::Array[String]
|
43
|
+
|
44
|
+
LEARNING_TYPE: ::Array[String]
|
45
|
+
|
46
|
+
LICENSE_ACKNOWLEDGEMENT: ::Array[String]
|
47
|
+
|
48
|
+
LICENSE_ID: ::Array[String]
|
49
|
+
|
50
|
+
LICENSE_TYPE: ::Array[String]
|
51
|
+
|
52
|
+
OUTPUT_TYPE: ::Array[String]
|
53
|
+
|
54
|
+
PADDING: ::Array[String]
|
55
|
+
|
56
|
+
PATCH_TYPE: ::Array[String]
|
57
|
+
|
58
|
+
PHASE: ::Array[String]
|
59
|
+
|
60
|
+
PRIMITIVE: ::Array[String]
|
61
|
+
|
62
|
+
PROTOCOL_TYPE: ::Array[String]
|
63
|
+
|
64
|
+
RELATED_CRYPTO_MATERIAL_STATE: ::Array[String]
|
65
|
+
|
66
|
+
RELATED_CRYPTO_MATERIAL_TYPE: ::Array[String]
|
67
|
+
|
68
|
+
RESPONSE: ::Array[String]
|
69
|
+
|
70
|
+
SCOPE: ::Array[String]
|
71
|
+
|
72
|
+
SCORE_METHOD: ::Array[String]
|
73
|
+
|
74
|
+
SEVERITY: ::Array[String]
|
75
|
+
|
76
|
+
SIGNATURE_ALGORITHM: ::Array[String]
|
77
|
+
|
78
|
+
SIGNATURE_KEY_TYPE: ::Array[String]
|
79
|
+
|
80
|
+
SIGNATURE_EC_CRV: ::Array[String]
|
81
|
+
|
82
|
+
SIGNATURE_OKP_CRV: ::Array[String]
|
83
|
+
|
84
|
+
TASK_TYPE: ::Array[String]
|
85
|
+
|
86
|
+
TECHNIQUE: ::Array[String]
|
87
|
+
|
88
|
+
TRIGGER_TYPE: ::Array[String]
|
89
|
+
|
90
|
+
VOLUME_MODE: ::Array[String]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|