From 895a1017e7d0be9d50dc6895d48ca4c18604e23d Mon Sep 17 00:00:00 2001 From: Steve Springett Date: Thu, 13 Jul 2023 15:58:49 -0500 Subject: [PATCH 01/30] Initial commit for staging environment --- packages/README.md | 3 + packages/source-filesystem/CHANGELOG.md | 131 ++ packages/source-filesystem/LICENSE | 21 + packages/source-filesystem/README.md | 121 + packages/source-filesystem/index.js | 216 ++ packages/source-filesystem/package.json | 28 + .../difficulty-levels/index.md | 16 + site/content/bom-maturity-model/index.md | 27 + .../support-levels/index.md | 19 + site/gridsome.config.js | 2 +- site/package.json | 5 +- site/src/assets/styles.css | 27 + site/src/components/TaxonomyTree.vue | 68 + site/src/components/sidebar-tree.json | 2088 +++++++++++++++++ site/src/layouts/Default.vue | 16 +- site/src/main.js | 1 + site/src/pages/bom-maturity-model.vue | 98 - site/src/scripts/generateSideBar.js | 159 ++ site/src/templates/MarkdownPage.vue | 2 +- site/yarn.lock | 446 ++-- 20 files changed, 3223 insertions(+), 271 deletions(-) create mode 100644 packages/README.md create mode 100644 packages/source-filesystem/CHANGELOG.md create mode 100644 packages/source-filesystem/LICENSE create mode 100644 packages/source-filesystem/README.md create mode 100644 packages/source-filesystem/index.js create mode 100644 packages/source-filesystem/package.json create mode 100644 site/content/bom-maturity-model/difficulty-levels/index.md create mode 100644 site/content/bom-maturity-model/index.md create mode 100644 site/content/bom-maturity-model/support-levels/index.md create mode 100644 site/src/assets/styles.css create mode 100644 site/src/components/TaxonomyTree.vue create mode 100644 site/src/components/sidebar-tree.json delete mode 100644 site/src/pages/bom-maturity-model.vue create mode 100644 site/src/scripts/generateSideBar.js diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000..f470da4 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,3 @@ +# Modified OSS Packages + +This directory contains modified open source packages \ No newline at end of file diff --git a/packages/source-filesystem/CHANGELOG.md b/packages/source-filesystem/CHANGELOG.md new file mode 100644 index 0000000..b9c3447 --- /dev/null +++ b/packages/source-filesystem/CHANGELOG.md @@ -0,0 +1,131 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.6.2](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.6.1...@gridsome/source-filesystem@0.6.2) (2019-10-15) + + +### Bug Fixes + +* **filesystem:** don’t slugify path prefix ([#739](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/issues/739)) ([79a72c7](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/79a72c7)) +* **filesystem:** update auto ref nodes in dev mode ([1b3db5b](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/1b3db5b)) + + + + + +## [0.6.1](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.6.0...@gridsome/source-filesystem@0.6.1) (2019-10-07) + + +### Bug Fixes + +* **filesystem:** don’t create refs for filtered nodes ([e458e0a](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/e458e0a)) + + + + + +# [0.6.0](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.5.0...@gridsome/source-filesystem@0.6.0) (2019-09-11) + + +### Bug Fixes + +* **filesystem:** add fallback mime type ([#642](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/issues/642)) ([9a5ca89](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/9a5ca89)) + + +### Features + +* **filesystem:** basic gridsome v0.7 support ([1d35fe7](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/1d35fe7)) + + + + + +# [0.5.0](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.4.1...@gridsome/source-filesystem@0.5.0) (2019-05-20) + + +### Features + +* **filesystem:** pathPrefix option ([88c7e2b](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/88c7e2b)) + + + + + +## [0.4.1](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.4.0...@gridsome/source-filesystem@0.4.1) (2019-05-10) + + +### Bug Fixes + +* **filesystem:** get ref id from node object ([#415](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/issues/415)) ([e523b0a](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/e523b0a)) + + + + + +# [0.4.0](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.3.0...@gridsome/source-filesystem@0.4.0) (2019-05-10) + + +### Features + +* **filesystem:** baseDir option ([#297](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/issues/297)) ([ef0af5a](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/ef0af5a)) +* **filesystem:** update for latest changes in core ([2bb8ca1](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/2bb8ca1)) + + + + + + +# [0.3.0](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/compare/@gridsome/source-filesystem@0.2.0...@gridsome/source-filesystem@0.3.0) (2019-02-19) + + +### Features + +* **filesystem:** fileInfo field in schema ([b844708](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/b844708)) +* **filesystem:** refs option to create references ([d445f1f](https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem/commit/d445f1f)) + + + + + + +# [0.2.0](https://github.com/gridsome/gridsome/compare/@gridsome/source-filesystem@0.1.0...@gridsome/source-filesystem@0.2.0) (2018-11-11) + + +### Features + +* plugin api ([7a7889b](https://github.com/gridsome/gridsome/commit/7a7889b)) +* store api ([15d1c97](https://github.com/gridsome/gridsome/commit/15d1c97)) + + + +# [0.1.0](https://github.com/gridsome/gridsome/compare/@gridsome/source-filesystem@0.0.4...@gridsome/source-filesystem@0.1.0) (2018-10-20) + + +### Features + +* **source-filesystem:** remove type option ([bde6762](https://github.com/gridsome/gridsome/commit/bde6762)) + + + +## [0.0.4](https://github.com/gridsome/gridsome/compare/@gridsome/source-filesystem@0.0.3...@gridsome/source-filesystem@0.0.4) (2018-10-17) + + +### Bug Fixes + +* hot reload filesystem sources in windows ([8e7b76a](https://github.com/gridsome/gridsome/commit/8e7b76a)) + + + +## [0.0.3](https://github.com/gridsome/gridsome/compare/142896c2454016dc989a7872faffec7263fc658c...@gridsome/source-filesystem@0.0.3) (2018-09-26) + + +### Bug Fixes + +* **filesystem:** add missing dep ([5e96dc2](https://github.com/gridsome/gridsome/commit/5e96dc2)) + + + + +## [0.0.2](https://github.com/gridsome/gridsome/compare/142896c2454016dc989a7872faffec7263fc658c...@gridsome/source-filesystem@0.0.3) (2018-09-16) diff --git a/packages/source-filesystem/LICENSE b/packages/source-filesystem/LICENSE new file mode 100644 index 0000000..09608fe --- /dev/null +++ b/packages/source-filesystem/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Gridsome + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/packages/source-filesystem/README.md b/packages/source-filesystem/README.md new file mode 100644 index 0000000..312ad1a --- /dev/null +++ b/packages/source-filesystem/README.md @@ -0,0 +1,121 @@ +# @gridsome/source-filesystem + +> Transform files into content that can be fetched with GraphQL in your components. + +## Install + +- `yarn add @gridsome/source-filesystem` +- `npm install @gridsome/source-filesystem` + +## Usage + +```js +module.exports = { + plugins: [ + { + use: '@gridsome/source-filesystem', + options: { + typeName: 'BlogPost', + path: './content/blog/**/*.md', + } + } + ], + templates: { + BlogPost: '/blog/:year/:month/:day/:slug' + } +} +``` + +A filesystem source will also require a transformer in order to parse the files. The example above is looking for a set of [Markdown](https://en.wikipedia.org/wiki/Markdown) files, so in order to let [Gridsome](https://gridsome.org) understand the content of the files, you must install [@gridsome/transformer-remark](https://www.npmjs.com/package/@gridsome/transformer-remark) as a dev dependency in your project. Gridsome will automatically transform the files for you as long as a transformer that supports your files is found in your `package.json`. + +## Options + +#### path + +- Type: `string` *required* + +Where to look for files. Should be a [glob](https://en.wikipedia.org/wiki/Glob_(programming)) pattern. + +#### typeName + +- Type: `string` +- Default: `'FileNode'` + +The GraphQL type and template name. A `.vue` file in `src/templates` must match the `typeName` to have a template for it. + +#### baseDir + +- Type: `string` + +The base directory for all files. The `baseDir` will not be included when routes are generated from the file paths. The option defaults to the project root directory if omitted. + +The following example will look for all markdown files inside the `/content/blog` directory. A file located at `/content/blog/hello-world.md` will generate a `/hello-world` route. + +```js +module.exports = { + plugins: [ + { + use: '@gridsome/source-filesystem', + options: { + baseDir: './content/blog', + path: '*.md' + } + } + ] +} +``` + +#### pathPrefix + +- Type: `string` + +Prefix paths generated from the file location. The example below looks for markdown files inside `/content/blog/*.md`. And a file named `blog-post.md` in that folder will get a path like `/blog/my-post`. This option is excluded if a `route` is defined. + +```js +module.exports = { + plugins: [ + { + use: '@gridsome/source-filesystem', + options: { + baseDir: './content/blog', + pathPrefix: '/blog', + path: '*.md' + } + } + ] +} +``` + +#### refs + +- Type: `object` + +Define fields that will have a reference to another node. The referenced `typeName` is expected to exist. But a content type can also be created automatically if you set `create: true`. Read more about [references](https://gridsome.org/docs/data-store-api#collectionaddreferencefieldname-typename). + +```js +module.exports = { + plugins: [ + { + use: '@gridsome/source-filesystem', + options: { + refs: { + // Reference to existing authors by id. + author: 'Author', + // Create a Tag content type and its nodes automatically. + tags: { + typeName: 'Tag', + create: true + } + } + } + } + ] +} +``` + +#### index + +- Type: `Array` +- Default: `['index']` + +Define which files to consider as index files. These files will not have their filename appear in its route path and will become the main `index.html` file of the directory. Make sure there is only one possible index file per directory if multiple index names are defined. This option is only used if there is no dynamic `route` defined. diff --git a/packages/source-filesystem/index.js b/packages/source-filesystem/index.js new file mode 100644 index 0000000..68844d4 --- /dev/null +++ b/packages/source-filesystem/index.js @@ -0,0 +1,216 @@ +const path = require('path') +const fs = require('fs-extra') +const slash = require('slash') +const crypto = require('crypto') +const mime = require('mime-types') +const { mapValues, trim, trimEnd } = require('lodash') + +const isDev = process.env.NODE_ENV === 'development' + +class FilesystemSource { + static defaultOptions () { + return { + baseDir: undefined, + path: undefined, + route: undefined, + pathPrefix: undefined, + index: ['index'], + typeName: 'FileNode', + refs: {} + } + } + + constructor (api, options) { + this.api = api + this.options = options + this.context = options.baseDir + ? api.resolve(options.baseDir) + : api.context + this.refsCache = {} + + api.loadSource(async actions => { + this.createCollections(actions) + await this.createNodes(actions) + if (isDev) this.watchFiles(actions) + }) + } + + createCollections (actions) { + const addCollection = actions.addCollection || actions.addContentType + + this.refs = this.normalizeRefs(this.options.refs) + + this.collection = addCollection({ + typeName: this.options.typeName, + route: this.options.route + }) + + mapValues(this.refs, (ref, key) => { + this.collection.addReference(key, ref.typeName) + + if (ref.create) { + addCollection({ + typeName: ref.typeName, + route: ref.route + }) + } + }) + } + + async createNodes (actions) { + const glob = require('globby') + + const files = await glob(this.options.path, { cwd: this.context }) + + await Promise.all(files.map(async file => { + let options = await this.createNodeOptions(file, actions) + // BEGIN MODIFICATION + // Unique items in the taxonomy are identified as URNs. However, the colons in the URN are slugified and the colons + // are replaced with '-'. Colons in the URL are not possible with Vue Router and the minus sign doesn't represent + // the structure of a taxonomy well. Therefore, the following lines replace the '-' with '/' so that the taxonomy + // can be represented in a hierarchy using a directory structure. + if (options.path.indexOf("urn-owasp-scvs") !== -1) { + options.path = options.path.replace(/-/g, '/').replace(/bom\/maturity\/model/g, 'bom-maturity-model') + } + // END MODIFICATION + const node = this.collection.addNode(options) + + this.createNodeRefs(node, actions) + })) + } + + createNodeRefs (node, actions) { + for (const fieldName in this.refs) { + const ref = this.refs[fieldName] + + if (node && node[fieldName] && ref.create) { + const value = node[fieldName] + const typeName = ref.typeName + + if (Array.isArray(value)) { + value.forEach(value => + this.addRefNode(typeName, fieldName, value, actions) + ) + } else { + this.addRefNode(typeName, fieldName, value, actions) + } + } + } + } + + watchFiles (actions) { + const chokidar = require('chokidar') + + const watcher = chokidar.watch(this.options.path, { + cwd: this.context, + ignoreInitial: true + }) + + watcher.on('add', async file => { + const options = await this.createNodeOptions(slash(file), actions) + const node = this.collection.addNode(options) + + this.createNodeRefs(node, actions) + }) + + watcher.on('unlink', file => { + const absPath = path.join(this.context, slash(file)) + + this.collection.removeNode({ + 'internal.origin': absPath + }) + }) + + watcher.on('change', async file => { + const options = await this.createNodeOptions(slash(file), actions) + const node = this.collection.updateNode(options) + + this.createNodeRefs(node, actions) + }) + } + + // helpers + + async createNodeOptions (file, actions) { + const relPath = path.relative(this.context, file) + const origin = path.join(this.context, file) + const content = await fs.readFile(origin, 'utf8') + const { dir, name, ext = '' } = path.parse(file) + const mimeType = mime.lookup(file) || `application/x-${ext.replace('.', '')}` + + return { + id: this.createUid(relPath), + path: this.createPath({ dir, name }, actions), + fileInfo: { + extension: ext, + directory: dir, + path: file, + name + }, + internal: { + mimeType, + content, + origin + } + } + } + + addRefNode (typeName, fieldName, value, actions) { + const getCollection = actions.getCollection || actions.getContentType + const cacheKey = `${typeName}-${fieldName}-${value}` + + if (!this.refsCache[cacheKey] && value) { + this.refsCache[cacheKey] = true + + getCollection(typeName).addNode({ id: value, title: value }) + } + } + + createPath ({ dir, name }, actions) { + const { permalinks = {}} = this.api.config + const pathPrefix = trim(this.options.pathPrefix, '/') + const pathSuffix = permalinks.trailingSlash ? '/' : '' + + const segments = slash(dir).split('/').map(segment => { + return actions.slugify(segment) + }) + + if (!this.options.index.includes(name)) { + segments.push(actions.slugify(name)) + } + + if (pathPrefix) { + segments.unshift(pathPrefix) + } + + const res = trimEnd('/' + segments.filter(Boolean).join('/'), '/') + + return (res + pathSuffix) || '/' + } + + normalizeRefs (refs) { + return mapValues(refs, (ref) => { + if (typeof ref === 'string') { + ref = { typeName: ref, create: false } + } + + if (!ref.typeName) { + ref.typeName = this.options.typeName + } + + if (ref.create) { + ref.create = true + } else { + ref.create = false + } + + return ref + }) + } + + createUid (orgId) { + return crypto.createHash('md5').update(orgId).digest('hex') + } +} + +module.exports = FilesystemSource diff --git a/packages/source-filesystem/package.json b/packages/source-filesystem/package.json new file mode 100644 index 0000000..a4ce747 --- /dev/null +++ b/packages/source-filesystem/package.json @@ -0,0 +1,28 @@ +{ + "version": "0.6.2", + "name": "@gridsome/source-filesystem-scvs", + "description": "Filesystem source for Gridsome", + "homepage": "https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem#readme", + "repository": "https://github.com/gridsome/gridsome/tree/master/packages/source-filesystem", + "main": "index.js", + "keywords": [ + "gridsome", + "gridsome-plugin", + "gridsome-source" + ], + "dependencies": { + "chokidar": "^2.0.4", + "fs-extra": "^7.0.0", + "globby": "^8.0.1", + "lodash": "^4.17.10", + "mime-types": "^2.1.21", + "slash": "^2.0.0" + }, + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">=8" + }, + "gitHead": "de4cc25dd1d3d0e33631d92914a5bf760f09f3fd" +} diff --git a/site/content/bom-maturity-model/difficulty-levels/index.md b/site/content/bom-maturity-model/difficulty-levels/index.md new file mode 100644 index 0000000..64019cd --- /dev/null +++ b/site/content/bom-maturity-model/difficulty-levels/index.md @@ -0,0 +1,16 @@ +--- +description: '' +sidebar: 'taxonomy' +--- + +# BOM Maturity Model + +### Difficulty Levels + + + +| Difficulty | Level | Description | +|------------|-------|-------------------------------------------------------------------------------------------------------------------| +| High | 3 | Difficult to obtain; requiring manual effort, human observation, or access to data held within restricted domains | +| Moderate | 2 | Moderately difficult to obtain through automated observation using domain-specific tools and plugins | +| Low | 1 | Simple to obtain through first-hand automated observation using existing tools | diff --git a/site/content/bom-maturity-model/index.md b/site/content/bom-maturity-model/index.md new file mode 100644 index 0000000..0c37e8f --- /dev/null +++ b/site/content/bom-maturity-model/index.md @@ -0,0 +1,27 @@ +--- +description: '' +sidebar: 'taxonomy' +--- + +# BOM Maturity Model + +


+ +The SCVS BOM Maturity Model provides a formalized structure in which bill of materials can be evaluated for a wide range of capabilities. The model consists of: + +- a formal taxonomy of different types of data possible in a bill of materials, independent of BOM format +- a unique identifier, description, and other metadata about each item in the taxonomy +- the level of complexity or difficulty in supporting different types of data + + +### The model is a benchmark +The model can be used to evaluate: +- Incoming BOMs adhere to organizational policy by supporting the data required by various stakeholders +- BOM generation and consumption tools +- Current and future BOM formats against each other and their alignment to organizational requirements + +### The model is customizable via profiles +In addition to the taxonomy, the BOM Maturity Model also provides support for profiles, which group multiple items in the model together along with weighted importance and other metadata. Organizations may create multiple profiles, each specific to various stakeholder requirements, or may opt for a global profile where a single organization profile contains all of the required items of the model. This will facilitate: + +- The creation of a new breed of tools which evaluate BOMs against various profiles so that end users may know what types of analysis can be performed on them +- The adoption of organizational policy, defined in profiles, for what is acceptable and not acceptable for various use cases \ No newline at end of file diff --git a/site/content/bom-maturity-model/support-levels/index.md b/site/content/bom-maturity-model/support-levels/index.md new file mode 100644 index 0000000..2847cf8 --- /dev/null +++ b/site/content/bom-maturity-model/support-levels/index.md @@ -0,0 +1,19 @@ +--- +description: '' +sidebar: 'taxonomy' +--- + +# BOM Maturity Model + +### Support Levels + + + +| Support | Weight | Description | +|---------------------------------------------------------------------|--------|------------------------------------------------------------------------------------------------------------------------| +| Native support in the core specification | 5 | Specification supports the data field natively | +| Native support through an official extension | 4 | Specification supports the data field through an a offical extension point in the specification | +| Support through a community extension | 3 | The community has developed an extension to support the data field | +| Partial support through non-standardized parameterized workaround | 2 | The specification does not support the data field but has support for storing the field name and value independently | +| Partial support through non-standardized unparameterized workaround | 1 | The specification does not support the data field and the field name and value must be parsed from a single text field | +| Unsupported | 0 | Not supported | diff --git a/site/gridsome.config.js b/site/gridsome.config.js index 264e0a9..0239d98 100644 --- a/site/gridsome.config.js +++ b/site/gridsome.config.js @@ -48,7 +48,7 @@ module.exports = { }, plugins: [ { - use: '@gridsome/source-filesystem', + use: '@gridsome/source-filesystem-scvs', options: { baseDir: './content', path: '**/*.md', diff --git a/site/package.json b/site/package.json index bf5714c..22bd631 100644 --- a/site/package.json +++ b/site/package.json @@ -2,12 +2,15 @@ "name": "scvs.owasp.org", "private": true, "scripts": { + "generate-bmm": "node src/scripts/generateSideBar.js", "build": "gridsome build", "develop": "gridsome develop", "explore": "gridsome explore" }, "dependencies": { - "gridsome": "^0.7.0" + "gridsome": "0.7.23", + "liquor-tree": "0.2.70", + "@gridsome/source-filesystem-scvs": "file:../packages/source-filesystem" }, "devDependencies": { "@gridsome/plugin-google-analytics": "^0.1.2", diff --git a/site/src/assets/styles.css b/site/src/assets/styles.css new file mode 100644 index 0000000..68c428e --- /dev/null +++ b/site/src/assets/styles.css @@ -0,0 +1,27 @@ +.label-difficulty { + padding: .2em .6em .3em; + font-weight: normal; + font-size: 90%; +} +.label-difficulty-low { + background-color: #258E44; + border: 1px solid #73D08F; +} +.label-difficulty-moderate { + background-color: #312691; + border: 1px solid #6E63CC; +} +.label-difficulty-high { + background-color: #E56D01; + border: 1px solid #FE9536; +} +.label-difficulty-left { + border-right: 0; + color: #ffffff; + border-radius: 4px 0 0 4px; +} +.label-difficulty-right { + border-left: 0; + background: none; + border-radius: 0 4px 4px 0; +} diff --git a/site/src/components/TaxonomyTree.vue b/site/src/components/TaxonomyTree.vue new file mode 100644 index 0000000..da246f2 --- /dev/null +++ b/site/src/components/TaxonomyTree.vue @@ -0,0 +1,68 @@ +> + + + + diff --git a/site/src/components/sidebar-tree.json b/site/src/components/sidebar-tree.json new file mode 100644 index 0000000..025b67d --- /dev/null +++ b/site/src/components/sidebar-tree.json @@ -0,0 +1,2088 @@ +[ + { + "text": "Difficulty Levels", + "data": { + "id": "difficulty-levels", + "path": "/bom-maturity-model/difficulty-levels/" + }, + "children": [] + }, + { + "text": "Support Levels", + "data": { + "id": "support-levels", + "path": "/bom-maturity-model/support-levels/" + }, + "children": [] + }, + { + "text": "Taxonomy", + "data": { + "id": "urn:owasp:scvs:bom" + }, + "children": [ + { + "text": "Resource", + "data": { + "id": "urn:owasp:scvs:bom:resource", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/" + }, + "children": [ + { + "text": "Software", + "data": { + "id": "urn:owasp:scvs:bom:resource:software", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/" + }, + "children": [ + { + "text": "Identity", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:identity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/identity/" + }, + "children": [] + }, + { + "text": "Local", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:local", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/local/" + }, + "children": [] + }, + { + "text": "Remote", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:remote", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/remote/" + }, + "children": [] + }, + { + "text": "Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:type", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/type/" + }, + "children": [] + }, + { + "text": "Data", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:data", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/data/" + }, + "children": [ + { + "text": "Dataset", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:data:dataset", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/data/dataset/" + }, + "children": [] + }, + { + "text": "Configuration", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:data:configuration", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/data/configuration/" + }, + "children": [] + }, + { + "text": "Source Code", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:data:sourcecode", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/data/sourcecode/" + }, + "children": [] + } + ] + }, + { + "text": "SBOM", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:sbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/sbom/" + }, + "children": [] + }, + { + "text": "Mime Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:mimetype", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/mimetype/" + }, + "children": [] + }, + { + "text": "Integrity", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:integrity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/integrity/" + }, + "children": [ + { + "text": "Hash", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:integrity:hash", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/integrity/hash/" + }, + "children": [] + } + ] + }, + { + "text": "Release Notes", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/" + }, + "children": [ + { + "text": "Release Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:type", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/type/" + }, + "children": [] + }, + { + "text": "Title", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:title", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/title/" + }, + "children": [] + }, + { + "text": "Featured Image", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:featuredimage", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/featuredimage/" + }, + "children": [] + }, + { + "text": "Social Image", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:socialimage", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/socialimage/" + }, + "children": [] + }, + { + "text": "description", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:description", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/description/" + }, + "children": [] + }, + { + "text": "Timestamp", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:timestamp", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/timestamp/" + }, + "children": [] + }, + { + "text": "Aliases", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:aliases", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/aliases/" + }, + "children": [] + }, + { + "text": "Tags", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:tags", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/tags/" + }, + "children": [] + }, + { + "text": "Resolves", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:resolves", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/resolves/" + }, + "children": [] + }, + { + "text": "Notes", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:notes", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/notes/" + }, + "children": [ + { + "text": "Locale", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:notes:locale", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/notes/locale/" + }, + "children": [] + }, + { + "text": "Text", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:releasenotes:notes:text", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/releasenotes/notes/text/" + }, + "children": [] + } + ] + } + ] + }, + { + "text": "Evidence", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/" + }, + "children": [ + { + "text": "Identity", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/" + }, + "children": [ + { + "text": "Field", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:field", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/field/" + }, + "children": [] + }, + { + "text": "Confidence", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:confidence", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/confidence/" + }, + "children": [] + }, + { + "text": "Method", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:method", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/method/" + }, + "children": [ + { + "text": "Technique", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:method:technique", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/method/technique/" + }, + "children": [] + }, + { + "text": "Confidence", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:method:confidence", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/method/confidence/" + }, + "children": [] + }, + { + "text": "Value", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:method:value", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/method/value/" + }, + "children": [] + } + ] + }, + { + "text": "Tools", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:identity:tools", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/identity/tools/" + }, + "children": [] + } + ] + }, + { + "text": "Occurrences", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:occurrences", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/occurrences/" + }, + "children": [] + }, + { + "text": "Callstack", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:callstack", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/callstack/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:licenses", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/licenses/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:evidence:copyrights", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/evidence/copyrights/" + }, + "children": [] + } + ] + }, + { + "text": "Machine Learning", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/" + }, + "children": [ + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/" + }, + "children": [ + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:approach", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/approach/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:task", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/task/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:architectureFamily", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/architectureFamily/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:modelArchitecture", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/modelArchitecture/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:datasets", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/datasets/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:inputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/inputs/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:modelParameters:outputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/modelParameters/outputs/" + }, + "children": [] + } + ] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:quantitativeAnalysis", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/quantitativeAnalysis/" + }, + "children": [ + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:quantitativeAnalysis:performanceMetrics", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/quantitativeAnalysis/performanceMetrics/" + }, + "children": [] + } + ] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/" + }, + "children": [ + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:users", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/users/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:useCases", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/useCases/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:technicalLimitations", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/technicalLimitations/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:performanceTradeoffs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/performanceTradeoffs/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:ethicalConsiderations", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/ethicalConsiderations/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:machinelearning:considerations:fairnessAssessments", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/machinelearning/considerations/fairnessAssessments/" + }, + "children": [] + } + ] + } + ] + }, + { + "text": "Cryptography", + "data": { + "id": "urn:owasp:scvs:bom:resource:software:cryptography", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/software/cryptography/" + }, + "children": [] + } + ] + }, + { + "text": "Hardware", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/" + }, + "children": [ + { + "text": "Identity", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:identity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/identity/" + }, + "children": [] + }, + { + "text": "Planning Bill of Material", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:plbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/plbom/" + }, + "children": [] + }, + { + "text": "Procurement Bill of Material", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:prbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/prbom/" + }, + "children": [] + }, + { + "text": "Engineering Bill of Material (eBOM)", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:ebom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/ebom/" + }, + "children": [] + }, + { + "text": "Manufacturing Bill of Material (mBOM)", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:mbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/mbom/" + }, + "children": [] + }, + { + "text": "Service Bill of Material (sBOM)", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:sbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/sbom/" + }, + "children": [] + }, + { + "text": "Quantity", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:quantity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/quantity/" + }, + "children": [] + }, + { + "text": "Function", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:function", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/function/" + }, + "children": [] + }, + { + "text": "Location", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:location", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/location/" + }, + "children": [] + }, + { + "text": "Device Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:deviceType", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/deviceType/" + }, + "children": [] + }, + { + "text": "Serial Number", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:serialNumber", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/serialNumber/" + }, + "children": [] + }, + { + "text": "SKU", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:sku", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/sku/" + }, + "children": [] + }, + { + "text": "Lot Number", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:lotNumber", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/lotNumber/" + }, + "children": [] + }, + { + "text": "Production Timestamp", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:prodTimestamp", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/prodTimestamp/" + }, + "children": [] + }, + { + "text": "MAC Address", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:macAddress", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/macAddress/" + }, + "children": [] + }, + { + "text": "Cerfications", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:certifications", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/certifications/" + }, + "children": [ + { + "text": "Country Code", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:certifications:countryCode", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/certifications/countryCode/" + }, + "children": [ + { + "text": "Authority", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:certifications:countryCode:authority", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/certifications/countryCode/authority/" + }, + "children": [ + { + "text": "Authority Identifier", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:certifications:countryCode:authority:id", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/certifications/countryCode/authority/id/" + }, + "children": [] + }, + { + "text": "Authority URL", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:certifications:countryCode:authority:url", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/certifications/countryCode/authority/url/" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "text": "GS1", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/" + }, + "children": [ + { + "text": "EPC RFID", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:epcRfid", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/epcRfid/" + }, + "children": [] + }, + { + "text": "GIAI", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:giai", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/giai/" + }, + "children": [] + }, + { + "text": "GLN", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gln", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gln/" + }, + "children": [] + }, + { + "text": "GMN", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gmn", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gmn/" + }, + "children": [] + }, + { + "text": "GTIN-8", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gtin-8", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gtin-8/" + }, + "children": [] + }, + { + "text": "GTIN-12", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gtin-12", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gtin-12/" + }, + "children": [] + }, + { + "text": "GTIN-13", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gtin-13", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gtin-13/" + }, + "children": [] + }, + { + "text": "GTIN-14", + "data": { + "id": "urn:owasp:scvs:bom:resource:hardware:gs1:gtin-14", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/hardware/gs1/gtin-14/" + }, + "children": [] + } + ] + } + ] + }, + { + "text": "Service", + "data": { + "id": "urn:owasp:scvs:bom:resource:service", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/" + }, + "children": [ + { + "text": "Identity", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:identity", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/identity/" + }, + "children": [] + }, + { + "text": "Provider", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:provider", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/provider/" + }, + "children": [] + }, + { + "text": "name", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:name", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/name/" + }, + "children": [] + }, + { + "text": "Version", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:version", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/version/" + }, + "children": [] + }, + { + "text": "description", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:description", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/description/" + }, + "children": [] + }, + { + "text": "Authentication", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:authn", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/authn/" + }, + "children": [ + { + "text": "Protocols", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:authn:protocols", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/authn/protocols/" + }, + "children": [] + }, + { + "text": "Factors", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:authn:factors", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/authn/factors/" + }, + "children": [] + } + ] + }, + { + "text": "Data", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:data", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/data/" + }, + "children": [ + { + "text": "Classification", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:data:classifications", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/data/classifications/" + }, + "children": [] + }, + { + "text": "Flow", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:data:flow", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/data/flow/" + }, + "children": [] + }, + { + "text": "From", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:data:from", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/data/from/" + }, + "children": [] + }, + { + "text": "To", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:data:to", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/data/to/" + }, + "children": [] + } + ] + }, + { + "text": "Configuration", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:configuration", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/configuration/" + }, + "children": [] + }, + { + "text": "SBOM", + "data": { + "id": "urn:owasp:scvs:bom:resource:service:sbom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/service/sbom/" + }, + "children": [] + } + ] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/" + }, + "children": [ + { + "text": "Common Platform Enumeration (CPE)", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:cpe", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/cpe/" + }, + "children": [] + }, + { + "text": "Package URL", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:purl", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/purl/" + }, + "children": [] + }, + { + "text": "SWID", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/" + }, + "children": [ + { + "text": "name", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:name", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/name/" + }, + "children": [] + }, + { + "text": "Version", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:version", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/version/" + }, + "children": [] + }, + { + "text": "Tag ID", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:tagId", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/tagId/" + }, + "children": [] + }, + { + "text": "Tag Version", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:tagVersion", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/tagVersion/" + }, + "children": [] + }, + { + "text": "Patch", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:patch", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/patch/" + }, + "children": [] + }, + { + "text": "Software Creator Name", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:softwareCreatorName", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/softwareCreatorName/" + }, + "children": [] + }, + { + "text": "Software Creator Reg ID", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:softwareCreatorRegId", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/softwareCreatorRegId/" + }, + "children": [] + }, + { + "text": "Tag Creator Name", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:tagCreatorName", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/tagCreatorName/" + }, + "children": [] + }, + { + "text": "Tag Creator Reg ID", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:swid:tagCreatorRegId", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/swid/tagCreatorRegId/" + }, + "children": [] + } + ] + }, + { + "text": "Internal Product ID's", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:internalproductids", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/internalproductids/" + }, + "children": [] + }, + { + "text": "Serial Number", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:serialnumber", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/serialnumber/" + }, + "children": [] + }, + { + "text": "SKU", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:sku", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/sku/" + }, + "children": [] + }, + { + "text": "GS1 - GIAI", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:giai", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/giai/" + }, + "children": [] + }, + { + "text": "GS1 - GLM", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:glm", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/glm/" + }, + "children": [] + }, + { + "text": "GS1 - GTIN-*", + "data": { + "id": "urn:owasp:scvs:bom:resource:identifiers:gtin", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/identifiers/gtin/" + }, + "children": [] + } + ] + }, + { + "text": "License", + "data": { + "id": "urn:owasp:scvs:bom:resource:license", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/" + }, + "children": [ + { + "text": "License Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:type", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/type/" + }, + "children": [] + }, + { + "text": "License Identifier", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:identifier", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/identifier/" + }, + "children": [] + }, + { + "text": "License Name", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:name", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/name/" + }, + "children": [] + }, + { + "text": "License Text", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:text", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/text/" + }, + "children": [] + }, + { + "text": "License Header", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:header", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/header/" + }, + "children": [] + }, + { + "text": "License URL", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:url", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/url/" + }, + "children": [] + }, + { + "text": "Licensing", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/" + }, + "children": [ + { + "text": "Licensor", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:licensor", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/licensor/" + }, + "children": [] + }, + { + "text": "Licensee", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:licensee", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/licensee/" + }, + "children": [] + }, + { + "text": "Purchaser", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:purchaser", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/purchaser/" + }, + "children": [] + }, + { + "text": "Purchase Order", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:purchaseOrder", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/purchaseOrder/" + }, + "children": [] + }, + { + "text": "License Type", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:licenseType", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/licenseType/" + }, + "children": [] + }, + { + "text": "Last Renewal", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:lastRenewal", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/lastRenewal/" + }, + "children": [] + }, + { + "text": "Expiration", + "data": { + "id": "urn:owasp:scvs:bom:resource:license:licensing:expiration", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/license/licensing/expiration/" + }, + "children": [] + } + ] + } + ] + } + ] + }, + { + "text": "Pedigree", + "data": { + "id": "urn:owasp:scvs:bom:pedigree", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/" + }, + "children": [ + { + "text": "Source", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:source", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/source/" + }, + "children": [ + { + "text": "Commits", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:source:commits", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/source/commits/" + }, + "children": [] + }, + { + "text": "Diffs", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:source:diffs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/source/diffs/" + }, + "children": [] + } + ] + }, + { + "text": "Relationships", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:relationships", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/relationships/" + }, + "children": [ + { + "text": "Ancestors", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:relationships:ancestors", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/relationships/ancestors/" + }, + "children": [] + }, + { + "text": "Descendents", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:relationships:descendents", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/relationships/descendents/" + }, + "children": [] + }, + { + "text": "Variants", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:relationships:variants", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/relationships/variants/" + }, + "children": [] + } + ] + }, + { + "text": "Resolves", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:resolves", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/resolves/" + }, + "children": [ + { + "text": "Enhancement", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:resolves:enhancement", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/resolves/enhancement/" + }, + "children": [] + }, + { + "text": "Defect", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:resolves:defect", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/resolves/defect/" + }, + "children": [] + }, + { + "text": "Security", + "data": { + "id": "urn:owasp:scvs:bom:pedigree:resolves:security", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/pedigree/resolves/security/" + }, + "children": [] + } + ] + } + ] + }, + { + "text": "Provenance", + "data": { + "id": "urn:owasp:scvs:bom:provenance", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/" + }, + "children": [ + { + "text": "Repository", + "data": { + "id": "urn:owasp:scvs:bom:provenance:storage", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/storage/" + }, + "children": [ + { + "text": "Package Repository", + "data": { + "id": "urn:owasp:scvs:bom:provenance:storage:repository", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/storage/repository/" + }, + "children": [] + }, + { + "text": "Arbitrary Repository", + "data": { + "id": "urn:owasp:scvs:bom:provenance:storage:arbitrary", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/storage/arbitrary/" + }, + "children": [] + }, + { + "text": "BOM Repository", + "data": { + "id": "urn:owasp:scvs:bom:provenance:storage:bom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/storage/bom/" + }, + "children": [] + } + ] + }, + { + "text": "Version Control System", + "data": { + "id": "urn:owasp:scvs:bom:provenance:vcs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/vcs/" + }, + "children": [] + }, + { + "text": "Ecosystem", + "data": { + "id": "urn:owasp:scvs:bom:provenance:ecosystem", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/ecosystem/" + }, + "children": [] + }, + { + "text": "Supplier", + "data": { + "id": "urn:owasp:scvs:bom:provenance:supplier", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/supplier/" + }, + "children": [ + { + "text": "Organizational Entity", + "data": { + "id": "urn:owasp:scvs:bom:provenance:supplier:org", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/supplier/org/" + }, + "children": [] + }, + { + "text": "Non-Organizational Entity", + "data": { + "id": "urn:owasp:scvs:bom:provenance:supplier:non-org", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/supplier/non-org/" + }, + "children": [] + } + ] + }, + { + "text": "Manufacturer", + "data": { + "id": "urn:owasp:scvs:bom:provenance:manufacturer", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/manufacturer/" + }, + "children": [] + }, + { + "text": "Supplier", + "data": { + "id": "urn:owasp:scvs:bom:provenance:supplier", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/supplier/" + }, + "children": [] + }, + { + "text": "Publisher", + "data": { + "id": "urn:owasp:scvs:bom:provenance:publisher", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/publisher/" + }, + "children": [] + }, + { + "text": "Author", + "data": { + "id": "urn:owasp:scvs:bom:provenance:author", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/author/" + }, + "children": [] + } + ] + }, + { + "text": "Formulation", + "data": { + "id": "urn:owasp:scvs:bom:formulation", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/" + }, + "children": [ + { + "text": "Formula", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/" + }, + "children": [ + { + "text": "Resource", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:resource", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/resource/" + }, + "children": [ + { + "text": "Components", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:resource:components", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/resource/components/" + }, + "children": [] + }, + { + "text": "Services", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:resource:services", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/resource/services/" + }, + "children": [] + } + ] + }, + { + "text": "Workflows", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/" + }, + "children": [ + { + "text": "Tasks", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/" + }, + "children": [ + { + "text": "Task Type", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:taskType", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/taskType/" + }, + "children": [] + }, + { + "text": "Trigger", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:trigger", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/trigger/" + }, + "children": [] + }, + { + "text": "Steps", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:steps", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/steps/" + }, + "children": [] + }, + { + "text": "Inputs", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:inputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/inputs/" + }, + "children": [] + }, + { + "text": "Outputs", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:outputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/outputs/" + }, + "children": [] + }, + { + "text": "Time Started", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:timeStart", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/timeStart/" + }, + "children": [] + }, + { + "text": "Time Ended", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:timeEnd", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/timeEnd/" + }, + "children": [] + }, + { + "text": "Workspaces", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:workspaces", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/workspaces/" + }, + "children": [] + }, + { + "text": "Runtime Topology", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks:runtimeTopology", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/runtimeTopology/" + }, + "children": [] + } + ] + }, + { + "text": "Tasks", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:tasks", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/tasks/" + }, + "children": [] + }, + { + "text": "Task Types", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:taskTypes", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/taskTypes/" + }, + "children": [] + }, + { + "text": "Trigger", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:trigger", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/trigger/" + }, + "children": [] + }, + { + "text": "Steps", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:steps", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/steps/" + }, + "children": [] + }, + { + "text": "Inputs", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:inputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/inputs/" + }, + "children": [] + }, + { + "text": "Outputs", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:outputs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/outputs/" + }, + "children": [] + }, + { + "text": "Time Started", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:timeStart", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/timeStart/" + }, + "children": [] + }, + { + "text": "Time Ended", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:timeEnd", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/timeEnd/" + }, + "children": [] + }, + { + "text": "Workspaces", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:workspaces", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/workspaces/" + }, + "children": [] + }, + { + "text": "Runtime Topology", + "data": { + "id": "urn:owasp:scvs:bom:formulation:formula:workflows:runtimeTopology", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/formulation/formula/workflows/runtimeTopology/" + }, + "children": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [ + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "", + "path": "/bom-maturity-model//" + }, + "children": [] + } + ] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:security:cryptography", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/security/cryptography/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:security:authn", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/security/authn/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:security:authz", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/security/authz/" + }, + "children": [] + }, + { + "text": "Chain of Custody", + "data": { + "id": "urn:owasp:scvs:bom:provenance:ledger:chaining", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/ledger/chaining/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:provenance:ledger:transparencylog", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/provenance/ledger/transparencylog/" + }, + "children": [] + }, + { + "text": "Version Control System", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:vcs", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/vcs/" + }, + "children": [] + }, + { + "text": "Issue Tracker", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:issueTracker", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/issueTracker/" + }, + "children": [] + }, + { + "text": "Website", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:website", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/website/" + }, + "children": [] + }, + { + "text": "Security Advisories", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:advisories", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/advisories/" + }, + "children": [] + }, + { + "text": "Bill of Materials", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:bom", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/bom/" + }, + "children": [] + }, + { + "text": "Mailing List", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:mailingList", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/mailingList/" + }, + "children": [] + }, + { + "text": "Social Media Account", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:social", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/social/" + }, + "children": [] + }, + { + "text": "Chat", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:chat", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/chat/" + }, + "children": [] + }, + { + "text": "Documentation", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:documentation", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/documentation/" + }, + "children": [] + }, + { + "text": "Support", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:support", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/support/" + }, + "children": [] + }, + { + "text": "Distribution", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:distribution", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/distribution/" + }, + "children": [] + }, + { + "text": "Distribution Intake", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:distributionIntake", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/distributionIntake/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:buildMeta", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/buildMeta/" + }, + "children": [] + }, + { + "text": "", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:buildSystem", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/buildSystem/" + }, + "children": [] + }, + { + "text": "Security Contact", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:securityContact", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/securityContact/" + }, + "children": [] + }, + { + "text": "Attestation", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:attestation", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/attestation/" + }, + "children": [] + }, + { + "text": "Threat Model", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:threatModel", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/threatModel/" + }, + "children": [] + }, + { + "text": "Vulnerability Assertion", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:vulnerabilityAssertion", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/vulnerabilityAssertion/" + }, + "children": [] + }, + { + "text": "Exploitability Statement", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:exploitabilityStatement", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/exploitabilityStatement/" + }, + "children": [] + }, + { + "text": "Pentest Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:pentestReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/pentestReport/" + }, + "children": [] + }, + { + "text": "Static Analysis Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:staticAnalysisReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/staticAnalysisReport/" + }, + "children": [] + }, + { + "text": "Dynamic Analysis Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:dynamicAnalysisReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/dynamicAnalysisReport/" + }, + "children": [] + }, + { + "text": "Runtime Analysis Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:runtimeAnalysisReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/runtimeAnalysisReport/" + }, + "children": [] + }, + { + "text": "Component Analysis Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:componentAnalysisReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/componentAnalysisReport/" + }, + "children": [] + }, + { + "text": "Maturity Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:maturityReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/maturityReport/" + }, + "children": [] + }, + { + "text": "Certification Report", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:certificationReport", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/certificationReport/" + }, + "children": [] + }, + { + "text": "Quality Metrics", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:qualityMetrics", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/qualityMetrics/" + }, + "children": [] + }, + { + "text": "Codified Infrastructure", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:codifiedInfrastructure", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/codifiedInfrastructure/" + }, + "children": [] + }, + { + "text": "Risk Assessment", + "data": { + "id": "urn:owasp:scvs:bom:resource:references:riskAssessment", + "path": "/bom-maturity-model/urn/owasp/scvs/bom/resource/references/riskAssessment/" + }, + "children": [] + } +] \ No newline at end of file diff --git a/site/src/layouts/Default.vue b/site/src/layouts/Default.vue index 2275efc..e270082 100644 --- a/site/src/layouts/Default.vue +++ b/site/src/layouts/Default.vue @@ -18,7 +18,10 @@ :class="{ 'open': sidebarOpen }" :style="sidebarStyle" > -
+
+ +
+
@@ -54,6 +57,7 @@ query { - - diff --git a/site/src/scripts/generateSideBar.js b/site/src/scripts/generateSideBar.js new file mode 100644 index 0000000..47a0860 --- /dev/null +++ b/site/src/scripts/generateSideBar.js @@ -0,0 +1,159 @@ +const fs = require('fs'); +const path = require('path'); + +function transformJSON(json, basePath = '') { + const transformedData = [ + { "text": "Difficulty Levels", "data": { "id": "difficulty-levels", "path": "/bom-maturity-model/difficulty-levels/" }, "children": []}, + { "text": "Support Levels", "data": { "id": "support-levels", "path": "/bom-maturity-model/support-levels/" }, "children": []}, + { "text": "Taxonomy", "data": { "id": "urn:owasp:scvs:bom" }, "children": []} + ]; + + // Helper function to create a directory + function createDirectory(dirPath) { + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath); + } + } + + // Helper function to create a markdown file + function createMarkdownFile(filePath, content) { + fs.writeFileSync(filePath, content); + } + + // Helper function to generate the markdown content + function generateMarkdownContent(model) { + let difficultyLabel = "" + if (model.difficulty === 1) + difficultyLabel = '1Low' + else if (model.difficulty === 2) + difficultyLabel = '2Moderate' + else if (model.difficulty === 3) + difficultyLabel = '3High' + + let references = "" + if (model.references && model.references.length > 0) { + for (let i=0; i' + model.references[i].title + '
' + } + } + + return `--- +title: BOM Maturity Model - ${model.name} (${model.identifier}) +description: ${model.summary} +sidebar: 'taxonomy' +--- + +# BOM Maturity Model + +| | | +|---|---| +| **Identifier**: | \`${model.identifier}\` | +| **Domain**: | ${model.domain} | +| **Name**: | ${model.name} | +| **Summary**: | ${model.summary} | +| **Description**: | ${model.description} | +| **Difficulty**: | ${difficultyLabel} | +| **References**: | ${references} | + +`; + } + + // Helper function to recursively create directory structure and markdown files + function createDirectoriesAndMarkdownFiles(node, currentPath) { + const dirPath = path.join(basePath, currentPath); + createDirectory(dirPath); + + if (node.data) { + const filePath = path.join(dirPath, 'README.md'); + const markdownContent = generateMarkdownContent(node.data); + createMarkdownFile(filePath, markdownContent); + } + + if (node.children) { + for (const childNode of node.children) { + //const childPath = path.join(currentPath, childNode.data.id); + const childPath = path.join(currentPath, childNode.data.id.split(/[:]+/).pop()); + createDirectoriesAndMarkdownFiles(childNode, childPath); + } + } + } + + // Helper function to find parent node by identifier + function findParentNode(identifier) { + for (const node of transformedData) { + if (node.data.id === identifier) { + return node; + } else if (node.children.length > 0) { + const parentNode = findParentNodeInChildren(node.children, identifier); + if (parentNode) { + return parentNode; + } + } + } + return null; + } + + // Helper function to find parent node in children array + function findParentNodeInChildren(children, identifier) { + for (const node of children) { + if (node.data.id === identifier) { + return node; + } else if (node.children.length > 0) { + const parentNode = findParentNodeInChildren(node.children, identifier); + if (parentNode) { + return parentNode; + } + } + } + return null; + } + + // Transform each model object from the BOM Maturity Model JSON + json.model.forEach((model) => { + const transformedModel = { + text: model.name, + data: { + id: model.identifier, + //path: `/bom-maturity-model/${model.identifier}/` + //path: `/bom-maturity-model/${model.identifier}/`.replace(/:/g, '-'), + path: `/bom-maturity-model/${model.identifier}/`.replace(/:/g, '/'), + }, + children: [], + }; + + // Find parent node and add the transformed model as its child + const parentNode = findParentNode(model.identifier.substring(0, model.identifier.lastIndexOf(":"))); + if (parentNode) { + parentNode.children.push(transformedModel); + } else { + transformedData.push(transformedModel); + } + + // Create directory and markdown file + const dirPath = path.join(basePath, transformedModel.data.id); + createDirectory(dirPath); + + const filePath = path.join(dirPath, 'index.md'); + const markdownContent = generateMarkdownContent(model); + if (dirPath !== "content/bom-maturity-model") { // to not overwrite bom-maturity-model/index.md + createMarkdownFile(filePath, markdownContent); + } + }); + + // Create the final JSON structure + const transformedJSON = transformedData; + + // Create directory structure and markdown files + //createDirectoriesAndMarkdownFiles({ children: transformedJSON }, 'taxonomy'); + + return transformedJSON; +} + +const jsonString = fs.readFileSync("../BOM_Maturity_Model/bmm-taxonomy.json"); +const originalJSON = JSON.parse(jsonString); + +// Transform the JSON +const transformedJSON = transformJSON(originalJSON, "content/bom-maturity-model"); + +const transformedJSONString = JSON.stringify(transformedJSON, null, 2); +fs.writeFileSync('src/components/sidebar-tree.json', transformedJSONString) diff --git a/site/src/templates/MarkdownPage.vue b/site/src/templates/MarkdownPage.vue index f40af2c..c748ca2 100644 --- a/site/src/templates/MarkdownPage.vue +++ b/site/src/templates/MarkdownPage.vue @@ -1,5 +1,5 @@ > diff --git a/site/src/scripts/generateSideBar.js b/site/src/scripts/generateSideBar.js index c9702d1..8faeb1a 100644 --- a/site/src/scripts/generateSideBar.js +++ b/site/src/scripts/generateSideBar.js @@ -9,7 +9,6 @@ function transformJSON(json, basePath = '') { { "text": "Taxonomy", "data": { "id": "urn:owasp:scvs:bom" }, "children": []}, { "text": "Profiles", "data": { "id": "profiles", "path": "/bom-maturity-model/profiles/" }, "children": [ - { "text": "Profile Generator", "data": { "path": "/bom-maturity-model/profiles/profile-generator/" } }, { "text": "Examples", "data": { "id": "profiles-examples" }, "children": [ { "text": "NTIA Minimum Elements", "data": { "path": "/bom-maturity-model/profiles/examples/ntia-minimum-elements/" }, state: { selectable: true } }, From 0e0d5b828fbfed0c4f98c67cd8fe35a71162ba33 Mon Sep 17 00:00:00 2001 From: Steve Springett Date: Tue, 31 Oct 2023 11:55:12 -0400 Subject: [PATCH 27/30] description updates --- .../bom-maturity-model-1.0.0-beta.1.json | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json b/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json index a794016..7f1ae6f 100644 --- a/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json +++ b/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json @@ -1,5 +1,5 @@ { - "$schema": "https://scvs.owasp.org/bom-maturity-model-1.0.0-beta.1.schema.json", + "$schema": "https://scvs.owasp.org/bom-maturity-model-1.0.0-rc.1.schema.json", "model": [ { "identifier": "urn:owasp:scvs:bom:structure", @@ -129,7 +129,16 @@ "difficulty": 1, "name": "Media Type", "description": "A media type, also known as a MIME type, is an identifier used to communicate an intended data format.", - "references": [] + "references": [ + { + "title": "Registered Media Types", + "url": "https://www.iana.org/assignments/media-types/media-types.xhtml" + }, + { + "title": "RFC 6838: Media Type Specifications and Registration Procedures", + "url": "https://www.rfc-editor.org/rfc/rfc6838" + } + ] }, { "identifier": "urn:owasp:scvs:bom:resource:software:integrity", @@ -1114,7 +1123,7 @@ "kingdom": "Identifiers", "difficulty": 2, "name": "Serial Number", - "description": "", + "description": "A serial number is a unique identifier assigned to an item.", "references": [] }, { @@ -1123,7 +1132,7 @@ "kingdom": "Identifiers", "difficulty": 2, "name": "SKU", - "description": "", + "description": "A stock-keeping unit (SKU) is a unique identifier used by retailers and wholesalers to identify and track inventory.", "references": [] }, { @@ -1258,7 +1267,7 @@ "kingdom": "License", "difficulty": 1, "name": "License", - "description": "", + "description": "Grants permission to use a resource under agreed-upon terms and conditions.", "references": [] }, { @@ -1276,7 +1285,7 @@ "kingdom": "License", "difficulty": 1, "name": "License Identifier", - "description": "", + "description": "An identifier that uniquely identifies a specific license.", "references": [] }, { @@ -1285,7 +1294,7 @@ "kingdom": "License", "difficulty": 1, "name": "License Name", - "description": "", + "description": "The name of the license", "references": [] }, { @@ -1294,7 +1303,7 @@ "kingdom": "License", "difficulty": 2, "name": "License Text", - "description": "", + "description": "The textual content of the license.", "references": [] }, { @@ -1303,7 +1312,7 @@ "kingdom": "License", "difficulty": 2, "name": "License Header", - "description": "", + "description": "An abbreviated snippet of the full license text often found at the top of source code.", "references": [] }, { @@ -1312,7 +1321,7 @@ "kingdom": "License", "difficulty": 2, "name": "License URL", - "description": "", + "description": "The URL to where the full text of the license can be found.", "references": [] }, { @@ -1321,7 +1330,7 @@ "kingdom": "License", "difficulty": "", "name": "Licensing", - "description": "", + "description": "Licensing details describing the licensor/licensee, license type, renewal and expiration dates, and other important metadata.", "references": [] }, { From badee0706c3b7def004fb28108bcc56f8f95407e Mon Sep 17 00:00:00 2001 From: Steve Springett Date: Tue, 31 Oct 2023 11:56:58 -0400 Subject: [PATCH 28/30] bump --- ...del-1.0.0-beta.1.json => bom-maturity-model-1.0.0-rc.1.json} | 0 ....1.schema.json => bom-maturity-model-1.0.0-rc.1.schema.json} | 0 BOM_Maturity_Model/bom-maturity-profile-1.0.0.schema.json | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename BOM_Maturity_Model/{bom-maturity-model-1.0.0-beta.1.json => bom-maturity-model-1.0.0-rc.1.json} (100%) rename BOM_Maturity_Model/{bom-maturity-model-1.0.0-beta.1.schema.json => bom-maturity-model-1.0.0-rc.1.schema.json} (100%) diff --git a/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json b/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json similarity index 100% rename from BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.json rename to BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json diff --git a/BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.schema.json b/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.schema.json similarity index 100% rename from BOM_Maturity_Model/bom-maturity-model-1.0.0-beta.1.schema.json rename to BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.schema.json diff --git a/BOM_Maturity_Model/bom-maturity-profile-1.0.0.schema.json b/BOM_Maturity_Model/bom-maturity-profile-1.0.0.schema.json index 469adcc..4becf16 100644 --- a/BOM_Maturity_Model/bom-maturity-profile-1.0.0.schema.json +++ b/BOM_Maturity_Model/bom-maturity-profile-1.0.0.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://scvs.owasp.org/bom-maturity-model-1.0.0.schema.json", + "$id": "https://scvs.owasp.org/bom-maturity-profile-1.0.0.schema.json", "type": "object", "title": "OWASP SCVS BOM Maturity Model - Profile Schema", "$comment": "OWASP SCVS BOM Maturity Model schemas are published under the terms of the Apache License 2.0.", From 18792c2c06438a7929bc92ea0d2f482f76bc8ee8 Mon Sep 17 00:00:00 2001 From: Steve Springett Date: Tue, 31 Oct 2023 12:07:24 -0400 Subject: [PATCH 29/30] Added missing elements and updated descriptions --- .../bom-maturity-model-1.0.0-rc.1.json | 22 +++++++++++++++++++ .../examples/ntia-minimum-elements/index.md | 2 +- site/src/components/TaxonomyTree.vue | 2 +- site/src/scripts/generateSideBar.js | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json b/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json index 7f1ae6f..e3a4f54 100644 --- a/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json +++ b/BOM_Maturity_Model/bom-maturity-model-1.0.0-rc.1.json @@ -1,12 +1,31 @@ { "$schema": "https://scvs.owasp.org/bom-maturity-model-1.0.0-rc.1.schema.json", "model": [ + { + "identifier": "urn:owasp:scvs:bom:core", + "domain": "Core", + "kingdom": null, + "difficulty": 1, + "name": "Core", + "description": "", + "references": [] + }, + { + "identifier": "urn:owasp:scvs:bom:core:timestamp", + "domain": "Timestamp", + "kingdom": null, + "difficulty": 1, + "name": "Timestamp", + "description": "", + "references": [] + }, { "identifier": "urn:owasp:scvs:bom:structure", "domain": "Structure", "kingdom": null, "difficulty": 1, "name": "Structure", + "description": "", "references": [] }, { @@ -15,6 +34,7 @@ "kingdom": null, "difficulty": 1, "name": "Metadata", + "description": "", "references": [] }, { @@ -23,6 +43,7 @@ "kingdom": null, "difficulty": 1, "name": "Inventory", + "description": "", "references": [] }, { @@ -31,6 +52,7 @@ "kingdom": null, "difficulty": 1, "name": "Resource", + "description": "", "references": [] }, { diff --git a/site/content/bom-maturity-model/profiles/examples/ntia-minimum-elements/index.md b/site/content/bom-maturity-model/profiles/examples/ntia-minimum-elements/index.md index 2d1bffb..28b854d 100644 --- a/site/content/bom-maturity-model/profiles/examples/ntia-minimum-elements/index.md +++ b/site/content/bom-maturity-model/profiles/examples/ntia-minimum-elements/index.md @@ -32,7 +32,7 @@ The following is an example profile that describes the [NTIA Minimum Elements fo "structure": [ "urn:owasp:scvs:bom:structure:metadata" ], "identifiers": [ "urn:owasp:scvs:bom:provenance:role:author", - "timestamp" + "urn:owasp:scvs:bom:core:timestamp" ], "weight": 1.0, "required": true diff --git a/site/src/components/TaxonomyTree.vue b/site/src/components/TaxonomyTree.vue index 81c564f..eb59daf 100644 --- a/site/src/components/TaxonomyTree.vue +++ b/site/src/components/TaxonomyTree.vue @@ -1,7 +1,7 @@