layer2

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 20, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AssessmentRequirement

type AssessmentRequirement struct {
	Id string `json:"id" yaml:"id"`

	Text string `json:"text" yaml:"text"`

	Applicability []string `json:"applicability" yaml:"applicability"`

	Recommendation string `json:"recommendation,omitempty" yaml:"recommendation,omitempty"`
}

type Capability

type Capability struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Description string `json:"description" yaml:"description"`
}

type Catalog

type Catalog struct {
	Metadata Metadata `json:"metadata,omitempty" yaml:"metadata,omitempty"`

	ControlFamilies []ControlFamily `json:"control-families,omitempty" yaml:"control-families,omitempty"`

	Threats []Threat `json:"threats,omitempty" yaml:"threats,omitempty"`

	Capabilities []Capability `json:"capabilities,omitempty" yaml:"capabilities,omitempty"`

	ImportedControls []Mapping `json:"imported-controls,omitempty" yaml:"imported-controls,omitempty"`

	ImportedThreats []Mapping `json:"imported-threats,omitempty" yaml:"imported-threats,omitempty"`

	ImportedCapabilities []Mapping `json:"imported-capabilities,omitempty" yaml:"imported-capabilities,omitempty"`
}

func (*Catalog) LoadFile

func (c *Catalog) LoadFile(sourcePath string) error

LoadFile loads data from a single YAML file at the provided path. JSON support is pending development. If run multiple times for the same data type, this method will override previous data.

func (*Catalog) LoadFiles

func (c *Catalog) LoadFiles(sourcePaths []string) error

LoadFiles loads data from any number of YAML files at the provided paths. JSON support is pending development. If run multiple times, this method will append new data to previous data.

func (*Catalog) ToOSCAL added in v0.4.0

func (c *Catalog) ToOSCAL(controlFamilyIDs map[string]string,
	version, controlHREF, catalogUUID string) (oscal.Catalog, error)

ToOSCAL converts a Catalog to OSCAL Catalog format. Parameters:

  • controlFamilyIDs: Maps your control family IDs to OSCAL group IDs. Example: {"AC": "AC", "BR": "BR"} maps "AC" family to "AC" OSCAL group
  • version: The version number for your catalog (e.g., "1.0.0", "devel")
  • controlHREF: URL template for linking to controls. Uses format: controlHREF(version, controlID) Example: "https://baseline.openssf.org/versions/%s#%s"
  • catalogUUID: A unique identifier for the OSCAL catalog (e.g., "123e4567-e89b-12d3-a456-426614174000")
  • namespace: The XML namespace for OSCAL elements (e.g., "http://baseline.openssf.org/ns/oscal")

TODO: Consider using go-oscal's UUID generation for future OSCAL elements: - uuid.NewUUID() for random UUIDs in production - uuid.NewUUIDWithSource() for deterministic UUIDs in testing

type Category

type Category struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Description string `json:"description" yaml:"description"`
}

type Control

type Control struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Objective string `json:"objective" yaml:"objective"`

	AssessmentRequirements []AssessmentRequirement `json:"assessment-requirements" yaml:"assessment-requirements"`

	GuidelineMappings []Mapping `json:"guideline-mappings,omitempty" yaml:"guideline-mappings,omitempty"`

	ThreatMappings []Mapping `json:"threat-mappings,omitempty" yaml:"threat-mappings,omitempty"`
}

type ControlFamily

type ControlFamily struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Description string `json:"description" yaml:"description"`

	Controls []Control `json:"controls" yaml:"controls"`
}

type Mapping

type Mapping struct {
	ReferenceId string `json:"reference-id" yaml:"reference-id"`

	Entries []MappingEntry `json:"entries" yaml:"entries"`

	Remarks string `json:"remarks,omitempty" yaml:"remarks,omitempty"`
}

type MappingEntry

type MappingEntry struct {
	ReferenceId string `json:"reference-id" yaml:"reference-id"`

	Strength int64 `json:"strength" yaml:"strength"`

	Remarks string `json:"remarks,omitempty" yaml:"remarks,omitempty"`
}

type MappingReference

type MappingReference struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Version string `json:"version" yaml:"version"`

	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	Url string `json:"url,omitempty" yaml:"url,omitempty"`
}

type Metadata

type Metadata struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Description string `json:"description" yaml:"description"`

	Version string `json:"version,omitempty" yaml:"version,omitempty"`

	LastModified string `json:"last-modified,omitempty" yaml:"last-modified,omitempty"`

	ApplicabilityCategories []Category `json:"applicability-categories,omitempty" yaml:"applicability-categories,omitempty"`

	MappingReferences []MappingReference `json:"mapping-references,omitempty" yaml:"mapping-references,omitempty"`
}

Resuable types //

type Threat

type Threat struct {
	Id string `json:"id" yaml:"id"`

	Title string `json:"title" yaml:"title"`

	Description string `json:"description" yaml:"description"`

	Capabilities []Mapping `json:"capabilities" yaml:"capabilities"`

	ExternalMappings []Mapping `json:"external-mappings,omitempty" yaml:"external-mappings,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL