From 67857e69c37bb991e4d6b62db175836767c2de63 Mon Sep 17 00:00:00 2001 From: Steve Lasker Date: Wed, 14 Jul 2021 16:37:08 -0700 Subject: [PATCH] OCI Artifact Manifest for reference types Signed-off-by: Steve Lasker --- MAINTAINERS | 2 +- README.md | 73 +--- artifact-authors.md | 2 +- artifact-manifest-spec.md | 76 ++++ artifact-manifest.md | 382 ++++++++++++++++++ ...-monitor-image-nydus-ondemand-loading.json | 30 ++ artifact-manifest/net-monitor-image-sbom.json | 20 + .../net-monitor-image-signature.json | 20 + artifact-manifest/net-monitor-oci-image.json | 20 + considerations.md | 136 +++++++ delete.md | 13 + descriptor.md | 183 +++++++++ manifest-referrers-api.md | 109 +++++ media/artifacts-spec-objects.png | Bin 69446 -> 58266 bytes media/image-spec-objects.png | Bin 38411 -> 18862 bytes media/net-monitor-copy.svg | 1 + media/net-monitor-graph.svg | 1 + media/net-monitor-image.svg | 1 + media/net-monitor-sbom-signature.svg | 1 + media/net-monitor-sbom.svg | 1 + media/net-monitor-with-sigs-copy.svg | 1 + media/notaryv2-signature.svg | 1 + media/repo-listing-attributed-expanded.svg | 1 + media/repo-listing-attributed.svg | 1 + media/repo-listing-flat.svg | 1 + 25 files changed, 1013 insertions(+), 63 deletions(-) create mode 100644 artifact-manifest-spec.md create mode 100644 artifact-manifest.md create mode 100644 artifact-manifest/net-monitor-image-nydus-ondemand-loading.json create mode 100644 artifact-manifest/net-monitor-image-sbom.json create mode 100644 artifact-manifest/net-monitor-image-signature.json create mode 100644 artifact-manifest/net-monitor-oci-image.json create mode 100644 considerations.md create mode 100644 delete.md create mode 100644 descriptor.md create mode 100644 manifest-referrers-api.md create mode 100644 media/net-monitor-copy.svg create mode 100644 media/net-monitor-graph.svg create mode 100644 media/net-monitor-image.svg create mode 100644 media/net-monitor-sbom-signature.svg create mode 100644 media/net-monitor-sbom.svg create mode 100644 media/net-monitor-with-sigs-copy.svg create mode 100644 media/notaryv2-signature.svg create mode 100644 media/repo-listing-attributed-expanded.svg create mode 100644 media/repo-listing-attributed.svg create mode 100644 media/repo-listing-flat.svg diff --git a/MAINTAINERS b/MAINTAINERS index c47ce4c..99ede26 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2,4 +2,4 @@ + Derek McGowan (@dmcgowan) + Mike Brown (@mikebrow) + Stephen Day (@stevvooe) -+ Joey Schorr (@josephschorr) ++ Joey Schorr (@josephschorr) diff --git a/README.md b/README.md index f7fe90e..9bf0eb8 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,17 @@ -# OCI Artifacts +# OCI Artifacts (Experimental) with OCI Artifact Reference Support -## Artifact Guidance Documents +This is an experimental branch of oci artifacts, validating the [oci.artifact.manifest spec][oci-artifact-manifest-spec] support of reference types. Reference types are required to meet the [Notary v2 Requirements][nv2-requirements] for not changing the target digest or tag, and the [Notary v2 Scenarios][nv2-scenarios] for content movement within and across registry implementations. Reference types enable a wider range of scenarios, including secure supply chain artifacts that may be represented as a graph as they move across environments. -1. [Artifact Author Guidance](./artifact-authors.md) +![](media/net-monitor-graph.svg) -## Supporting Documents +## Table of Contents: -- [Term Definitions](./definitions-terms.md) +- [OCI Artifact Manifest Overview][oci-artifact-manifest] +- [OCI Artifact Reference Type Manifest Spec](./artifact-reftype-spec.md) +- [ORAS experimental support for oci.artifact.manifest references][oras-artifacts] to `push`, `discover`, `pull` referenced artifact types. -## Project Introduction and Scope - -Container registries, implementing the [distribution-spec][distribution-spec], provide reliable, highly scalable, secured storage services for container images. Customers either use a cloud provider implementation, vendor implementations, or instance the open source implementation of [distribution][distribution]. They configure security and networking to assure the images in the registry are locked down and accessible by the resources required. Cloud providers and vendors often provide additional values atop their registry implementations from security to productivity features. - -Applications and services typically require additional artifacts to deploy and manage, including [helm](https://helm.sh) for deployment and [Open Policy Agent (OPA)](https://github.com/open-policy-agent/opa/issues/1413) for policy enforcement. - -Utilizing the [manifest][image-manifest] and [index][image-index] definitions, new artifacts, such as the [Singularity project][singularity], can be stored and served using the [distribution-spec][distribution-spec]. - -This repository provides a reference for artifact authors and registry implementors for supporting new artifact types with the existing implementations of distribution. -More particularly this repository has been tasked by the [OCI TOB](https://github.com/opencontainers/tob/blob/master/proposals/artifacts.md) to serve 3 primary goals: - -1. **artifact authors** - [guidance for authoring new artifact types.][artifact-authors] Including a clearing house for well known artifact types. -1. **registry operators and vendors** - guidance for how operators and vendors can support new artifact types, including how they can opt-in or out of well known artifact types. Registry operators that already implement `media-type` filtering will not have to change. The artifact repo will provide context on how new `media-type`s can be used, and how `media-type`s can be associated with a type of artifact. -1. **clearing house for well known artifacts** - artifact authors can submit their artifact definitions, providing registry operators a list by which they can easily support. - -By providing an OCI artifact definition, the community can continue to innovate, focusing on new artifact types without having to build yet another storage solution (YASS). - -## Project Governance and License - -- [Artifact Authors- How To][artifact-authors] -- [The Apache License, Version 2.0](LICENSE) -- [Maintainers](MAINTAINERS) -- [Maintainer guidelines](MAINTAINERS_GUIDE.md) -- [Contributor guidelines](CONTRIBUTING.md) -- [Project governance](GOVERNANCE.md) -- [Release procedures](RELEASES.md) - -## Code of Conduct - -This project incorporates (by reference) the OCI [Code of Conduct][code-of-conduct]. - -## Governance and Releases - -This project incorporates the Governance and Releases processes from the OCI project template: https://github.com/opencontainers/project-template. - -## Project Communications - -This project would continue to use existing channels in use by the [OCI developer community for communication](https://github.com/opencontainers/org#communications) - -### Versioning / Roadmap - -Artifacts will reference specific [distribution][distribution-spec], [index][image-index] and [manifest][image-manifest] versions in its examples, identifying any dependencies required. - -## Frequently Asked Questions (FAQ) - -**Q: Does this change the OCI Charter or Scope Table?** - -A: No. Artifacts are a prescriptive means of storing [index][image-index] and [manifest][image-manifest] within [distribution][distribution-spec] implementations. - -[artifact-authors]: ./artifact-authors.md -[code-of-conduct]: https://github.com/opencontainers/org/blob/master/CODE_OF_CONDUCT.md -[distribution]: https://github.com/docker/distribution -[distribution-spec]: https://github.com/opencontainers/distribution-spec/ -[image-index]: https://github.com/opencontainers/image-spec/blob/master/image-index.md -[image-manifest]: https://github.com/opencontainers/image-spec/blob/master/manifest.md -[singularity]: https://github.com/sylabs/singularity +[oci-artifact-manifest]: ./artifact-manifest.md +[oci-artifact-manifest-spec]: ./artifact-reftype-spec.md +[nv2-requirements]: https://github.com/notaryproject/notaryproject/blob/main/requirements.md +[nv2-scenarios]: https://github.com/notaryproject/notaryproject/blob/main/scenarios.md +[oras-artifacts]: https://github.com/deislabs/oras/blob/prototype-2/docs/artifact-manifest.md \ No newline at end of file diff --git a/artifact-authors.md b/artifact-authors.md index c3b043d..cd7a7c4 100644 --- a/artifact-authors.md +++ b/artifact-authors.md @@ -53,7 +53,7 @@ The manifest `config.mediaType` is the equivalent of a file extension, enabling |Icon|Artifact|`config.mediaType`| |-|-|-| ||[OCI Image][image-spec]|`application/vnd.oci.image.config.v1+json`| -||[Helm Chart](https://helm.sh)|`application/vnd.cncf.helm.chart.config.v1+json`| +||[Helm Chart](https://helm.sh)|`application/vnd.cncf.helm.chart.config.v1+json`| ||[Singularity][singularity], by [Sylabs][sylabs]|`application/vnd.sylabs.sif.config.v1+json`| ## Defining a Unique Artifact Type diff --git a/artifact-manifest-spec.md b/artifact-manifest-spec.md new file mode 100644 index 0000000..f39d70d --- /dev/null +++ b/artifact-manifest-spec.md @@ -0,0 +1,76 @@ +# OCI Artifact Manifest Spec (Phase-1 Reference Types) +The OCI artifact manifest generalizes the use cases of [OCI image manifest][oci-image-manifest-spec] by removing constraints defined on the image-manifest such as a required `config` object and required & ordinal `layers`. It then adds a `subjectManifest` property supporting reference types. The addition of a new manifest does not change, nor impact the `image.manifest`. It provides a means to define a wide range of artifacts, including a chain of related artifacts enabling SBoMs, on-demand loading, signatures and metadata that can be related to an `image.manifest` or `image.index`. By defining a new manifest, registries and clients opt-into new capabilities, without breaking existing registry and client behavior or setting expectations for scenarios to function when the client and/or registry doesn't yet implement the new capabilities. + +To enable a fall 2021 focus on supply chain security, **Phase 1** will narrowly focus on Reference Type support, giving time for further generalization with less time constraints. + +For usage and scenarios, see [artifact-manifest.md](./artifact-manifest.md) + +## Example OCI Artifact Manifests + +The following are Phase 1 examples: + +- [`net-monitor:v1` oci container image](./artifact-manifest/net-monitor-oci-image.json) +- [`net-monitor:v1` notary v2 signature](./artifact-manifest/net-monitor-image-signature.json) +- [`net-monitor:v1` sample sbom](./artifact-manifest/net-monitor-image-sbom.json) +- [`net-monitor:v1` nydus image with on-demand loading](./artifact-manifest/net-monitor-image-nydus-ondemand-loading.json) + +## OCI Artifact Manifest Properties + +For **Phase 1**, an artifact manifest provides an optional collection of blobs and a reference to the manifest of another artifact. + +- **`schemaVersion`** *int* + + This REQUIRED property specifies the artifact manifest schema version. + For this version of the specification, this MUST be `3`. The value of this field WILL change as the manifest schema evolves. Minor version changes to the `oci.artifact.manifest` spec MUST be additive, while major version changes MAY be breaking. Artifact clients MUST implement version checking to allow for future, yet unknown changes. Artifact clients MUST ignore additive properties to minor versions. Artifact clients MAY support major changes, with no guarantee major changes MAY impose breaking changing behaviors. Artifact authors MAY support new and older schemaVersions to provide the best user experience. + +- **`mediaType`** *string* + + This field contains the `mediaType` of this document, differentiating from [image-manifest][oci-image-manifest-spec] and [oci-image-index]. The mediaType for this manifest type MUST be `application/vnd.oci.artifact.manifest.v1+json`, where the version WILL change to reflect newer versions. Artifact authors SHOULD support multiple `mediaType` versions to provide the best user experience for their artifact type. + +- **`artifactType`** *string* + + Phase 1 of the OCI Artifact spec will support reference types to existing [OCI Artifacts][oci-artifacts]. The REQUIRED `artifactType` is unique value, as registered with iana.org. See [registering unique types.][registering-iana]. The `artifactType` is equivalent to OCI Artifacts that used the `manifest.config.mediaType` to differentiate the type of artifact. Artifact authors that implement `oci.artifact.manifest` use `artifactType` to differentiate the type of artifact. example:(`example.sbom` from `cncf.notary`). + +- **`blobs`** *array of objects* + + An OPTIONAL collection of 0 or more blobs. The blobs array is analogous to [oci.image.manifest layers][oci-image-manifest-spec-layers], however unlike [image-manifest][oci-image-manifest-spec], the ordering of blobs is specific to the artifact type. Some artifacts may choose an overlay of files, while other artifact types may store indepdent collections of files. + + - Each item in the array MUST be a [descriptor][descriptor], and MUST NOT refer to another `manifest` providing dependency closure. + - The max number of blobs is not defined, but MAY be limited by [distribution-spec][oci-distribution-spec] implementations. + - An encountered `descriptor.mediaType` that is unknown to the implementation MUST be ignored. + +- **`subjectManifest`** *descriptor* + + An OPTIONAL reference to any existing manifest within the repository. When specified, the artifact is said to be dependent upon the referenced `subjectManifest`. + - The item MUST be a [descriptor][descriptor] representing a manifest. Descriptors to blobs are not supported. The registry MUST return a `400` response code when `subjectManifest` is not found in the same repository, and not a manifest. + +- **`annotations`** *string-string map* + + This OPTIONAL property contains arbitrary metadata for the image manifest. + This OPTIONAL property MUST use the [annotation rules](annotations.md#rules). + + See [Pre-Defined Annotation Keys][annotations] + +## Push Validation + +Following the [distribution-spec push api](https://github.com/opencontainers/distribution-spec/blob/main/spec.md#push), all `blobs` *and* the `subjectManifest` descriptors SHOULD exist when pushed to a distribution instance. + +## Lifecycle Management + +For Phase 1, artifact types will be limited to reference types. A reference type is an artifact that doesn't have a lifecycle unto itself. A container image is said to have an independent lifecycle. A reference type, such as an SBoM or signature have a lifecycle tied to the `subjectManifest`. When the `subjectManifest` is deleted or marked for garbage collection, the defined artifact is subject to deletion as well. A distribution instance SHOULD delete, (refCount -1) the artifact when the `subjectManifest` is deleted. + +### Tagged `referenceTypes` + +As signatures and SBoMs are not considered independent artifact types, they SHOULD NOT have a tag, simplifying the lifecycle management. As the `subjectManifest` is marked for deletion (refCount=0), the `referenctType` is also marked for deletion (refCount -1). However, these artifacts MAY have tags as future versions of the artifact manifest MAY support independent types. + +[oci-artifacts]: https://github.com/opencontainers/artifacts +[oci-config]: https://github.com/opencontainers/image-spec/blob/master/config.md +[oci-image-manifest-spec]: https://github.com/opencontainers/image-spec/blob/master/manifest.md +[oci-image-manifest-spec-layers]: https://github.com/opencontainers/image-spec/blob/master/manifest.md#image-manifest-property-descriptions +[oci-image-index]: https://github.com/opencontainers/image-spec/blob/master/image-index.md +[oci-distribution-spec]: https://github.com/opencontainers/distribution-spec +[media-type]: https://github.com/opencontainers/image-spec/blob/master/media-types.md +[artifact-type]: https://github.com/opencontainers/artifacts/blob/master/artifact-authors.md#defining-a-unique-artifact-type +[registering-iana]: ./artifact-authors.md#registering-unique-types-with-iana +[descriptor]: https://github.com/opencontainers/image-spec/blob/master/descriptor.md +[annotations]: https://github.com/opencontainers/image-spec/blob/master/annotations.md \ No newline at end of file diff --git a/artifact-manifest.md b/artifact-manifest.md new file mode 100644 index 0000000..f1b468c --- /dev/null +++ b/artifact-manifest.md @@ -0,0 +1,382 @@ +# OCI Artifact Manifest + +The OCI artifact manifest generalizes the use cases of [OCI image manifest][oci-image-manifest-spec] by removing constraints defined on the image-manifest such as a required `config` object and required ordinal `layers` collection. The `subjectManifest` property provides a means to define a wide range of artifacts, including a chain of related artifacts enabling SBoMs, on-demand loading, signatures and metadata that can be related to an `image.manifest` or `image.index`. The addition of a new manifest does not change, nor impact the `image.manifest`. By defining a new manifest, registries and clients opt-into new capabilities, without breaking existing registry and client behavior or setting expectations for scenarios to function when the client and/or registry doesn't yet implement the new capabilities. + +# Phased Implementations Through Experimental Releases + +To meet pressing timelines for delivering Secure Supply Chain artifacts in the fall of 2021, the spec will be split into two phases: + +### Phase 1 - Reference Types + +Phase 1 is a time focused release, prioritizing a subset of capabilities needed to support reference types enabling signing and sbom scenarios. + +Reference types require: +- **Manifest reference**: a means to add content to a registry, referencing existing, unchanged, content. +- **Reference Discovery API**, where the consumer finds referenced artifacts by querying what artifacts are related to a subject artifact. + For example, what signatures or SBoMs are related to the `net-monitor:v1` container image. See the [manifest-referrers api](./manifest-referrers-api.md) for details. +- **Lifecycle management**: as content is added to a registry, how is its lifecycle handled? Can a user can find and delete reference types, and how would a registry garbage collect unreferenced content. + As registries implement the [distribution-spec][oci-distribution-spec], content may be stored indefinitely. To assure registries MAY implement garbage collection, a manifest is used to identify the intent of the content. See [Lifecycle Management][lifecycle-management] for details. The spec doesn't dictate how an lifecycle management must be implemented, rather focuses on a set of consistent expectations for users to have when working across different implementations. + +To separate the reference type deliverables for the fall of 2021 from future work, a `application/vnd.oci.artifact.manifest.v1+json` is provided. +For spec details on Phase 1, see [artifact-spec.md](./artifact-spec.md) + +### Phase 2 - Artifact Versioning Support + +Phase 2 will work to enable the full range of scenarios outlined in [WIP generic object spec #37](https://github.com/opencontainers/artifacts/pull/37). + +By splitting out **Phase 1** from **Phase 2**, focus is placed upon a subset of capabilities in a short time, while providing time to review and evolve the larger scenarios. + +The goal is to migrate phase 1 implementations to phase 2 (derivative of PR #37). It is not the intent to have dozens of manifest types. Phase 1 is a point in time release to meet pressing security requirements for supply chain artifacts, while building knowledge to feed into phase 2. + +### Migrating from Phase 1 to Phase 2 + +Registries that implement phase 1 will likely focus on implementing reverse indexes, supporting the referrers api and lifecycle management to assure untagged reference types aren't automatically deleted. While the manifest format will change, the underlying capabilities for reverse indexes and lifecycle management will be maintained. + +All `oci.artifact.*` based content will be named and versioned, enabling distribution instances and distribution clients to determine the content and how it may be processed. + +## Reference Types + +There are a new set of scenarios requiring the ability to reference existing artifacts, including the ability to additively sign content or add a SBoM. The addition of a [`subjectManifest`][subjectManifest] property supports linking artifacts through a reference from one artifact manifest to another artifact manifest. By storing these as separate, but linked artifacts, the existing OCI Image tool chain remains unchanged. Tooling that opts into understanding these reference types (eg. SBoM, Notary v2 signatures and Nydus image with on-demand loading) can find the referenced artifacts without changing the existing image tool chains. + +### Example OCI Artifact Manifests + +- [`net-monitor:v1` oci container image](./artifact-manifest/net-monitor-oci-image.json) +- [`net-monitor:v1` notary v2 signature](./artifact-manifest/net-monitor-image-signature.json) +- [`net-monitor:v1` sample sbom](./artifact-manifest/net-monitor-image-sbom.json) +- [`net-monitor:v1` nydus image with on-demand loading](./artifact-manifest/net-monitor-image-nydus-ondemand-loading.json) + +## Reference Type Requirements + +Reference type persistance & discovery supports the following requirements: + +- Maintain the original artifact digest and collection of associated tags, supporting existing dev through deployment workflows. +- Multiple references per artifact, enabling multiple signatures, SBoMs, images with on-demand loading and other reference types. +- Avoiding the need to tag a reference type to assure its not garbage collected as an untagged manifest. +- Native persistence within an OCI Artifact enabled, distribution spec based registry. +- Copying the graph of references within and across OCI Artifact enabled, distribution spec based registries, enabling an image, its signatures, SBoMs and images with on-demand loading to be copied as a group. + +To support the above requirements, reference types (eg signatures, SBoMs, images with on-demand loading) are stored as individual, untagged [OCI Artifacts][oci-artifacts]. They are maintained as any other artifact in a registry, supporting standard operations such as listing, deleting, garbage collection and any other content addressable operations within a registry. Untagged artifacts are considered not ready for garbage collection if they have a reference to an existing artifact. See [Lifecycle Management][lifecycle-management] for spec details. + +### Example Image + +The `net-monitor:v1` image contains a config and a collection of layers, as defined by the [oci.image.manifest spec][oci-image-manifest-spec]. + +![OCI Image](./media/net-monitor-image.svg) + +The `net-monitor:v1` image is persisted as an `oci.image.manifest`, with a unique digest. + + +- **repository**: `net-monitor` +- **digest**: `sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333` +- **tag**: `:v1` +> **NOTE:** There is no change to the existing image-spec 1.0 format. This example highlights what already exists. + ```json + { + "schemaVersion": 2, + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:e752324f6804d5d0b2c098f84507d095a8fd0031cf06cdb3c7ad1625dcd1b399", + "size": 7097 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:83c5cfdaa5385ea6fc4d31e724fd4dc5d74de847a7bdd968555b8f2c558dac0e", + "size": 25851449 + }, + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:7445693bd43e8246a8c166233392b33143f7f5e396c480f74538e5738fb6bd6e", + "size": 226 + } + ] + } + ``` + +### Notary v2 Signatures and SBoM Persistance + +Following the [oci.artifact.manifest spec][oci-artifact-manifest-spec], reference type artifacts are pushed with an `manifest.artifactType`, and a `subjectManifest` for the artifact referenced. + +A signature, or an SBoM, would be persisted with the content persisted in the `[blobs]` collection, and a `subjectManifest` referencing the `net-monitor:v1` image (by digest). + +![Notary v2 signature](./media/notaryv2-signature.svg) + +**An Artifact Manifest, capturing the Notary v2 signature of the `net-monitor:v1` image:** + +- **repository**: `net-monitor` +- **digest**: `sha256:8ac803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c222` +- **tag**: _-none-_ + ```json + { + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "cncf.notary.v2-rc1", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333", + "size": 16724 + }, + "annotations": { + "org.cncf.notary.v2.signature.subject": "wabbit-networks.io" + } + } + ``` + +The same `net-monitor:v1` image may have an associated SBoM. The SBoM content would be persisted as one or more `[blobs]` with a `subjectManifest` referencing the `net-monitor:v1` image (by digest). + +![Sample SBOM](./media/net-monitor-sbom.svg) + +- **repository**: `net-monitor` +- **digest**: `sha256:7a781a3930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c1a` +- **tag**: _-none-_ + ```json + { + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "example.sbom.v0", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333", + "size": 16724 + }, + "annotations": { + "example.sbom.author": "wabbit-networks.io" + } + } + ``` + +The `net-monitor:v1` SBoM will also be signed, providing yet another leaf node. + +![](media/net-monitor-sbom-signature.svg) + +- **repository**: `net-monitor` +- **digest**: `sha256:ea0cfb27fd41ea0405d3095880c1efa45710f5bcdddb7d7d5a7317ad4825ae14` +- **tag**: _-none-_ + ```json + { + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "cncf.notary.v2-rc1", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "digest": "sha256:7a781a3930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c1a", + "size": 16724 + }, + "annotations": { + "org.cncf.notary.v2.signature.subject": "wabbit-networks.io" + } + } +Once all artifacts are submitted, the registry would represent a graph of the `net-monitor:v1` image, including a signature, an SBoM, and a signature on the SBoM. + +![net-monitor image with an sbom & signatures](media/net-monitor-graph.svg) + +The Notary v2 signature and SBoM reference the `net-monitor:v1` image (as a digest) through the `subjectManifest` property. The `net-monitor:v1` image is represented as an oci-image, and requires no changes to its manifest to support the enhancements. The directionality of the `subjectManifest` reference enables links to existing content, without changing the existing content. + +### Deletion and Ref Counting + +The `subjectManifest` reference is a hard reference. Just as the layers of an OCI Image are deleted (*ref-counted -1*), any artifacts with a `subjectManifest` referring to the target manifest SHOULD be deleted (*ref-counted -1*). See [Lifecycle Management Spec][lifecycle-management] for details. + +## Artifact Manifest Scenarios + +The main scenarios include: + +1. [Content Discovery](#content-discovery) +1. [Content Promotion Within and Across Registries](#content-promotion-within-and-across-registries) +1. [Lifetime management](#lifetime-management), including deletion of artifacts and their linked manifests. + +### Content Discovery + +Registries support a list of content within a repository. A container image, multi-arch container image, Helm Chart, WASM and other OCI Artifact types can be listed based on their `manifest.config.mediaType` + +![flat listing of OCI artifacts](media/repo-listing-flat.svg) + +In the above example, all the artifacts are displayed without relation to each other. The image signature, SBoM, SBoM signature, Helm signature are listed with digests as they have no individual identity. However, the registry has no knowledge these artifacts are references of the image, SBoM or Helm chart. + +![flat listing of OCI artifacts](media/repo-listing-attributed.svg) + +In the above example, the Notary v2 signature, an SBoM and a collection of attributes are displayed as associated with their target artifact. The references can be collapsed as the `oci.artifact.manifest` provides the reference information. + +![expanded listing of OCI artifacts](media/repo-listing-attributed-expanded.svg) + +Using the references, the graph can be expanded providing additional information on each referenced artifact. + +See [`/referrers`][referrers-api] API for more information on listing referenced content. + +## Content Promotion Within and Across Registries + +Artifacts are promoted within and across different registries. They may be promoted from dev, through test, to production. They may continue movement to a public distribution point or deployment to an air-gapped environment. As artifacts are promoted, content related to that artifact must be capable of moving with the artifact. The OCI artifact manifest provides manifest references enabling discovery and promotion. + +### Example of Content Movement Within and Across Registries + +**Example**: Content promoted to environment specific repositories, within the same registry: + +```bash +registry.acme-rockets.io/ + dev\ + net-monitor:v1 + net-monitor:v2 + net-monitor:v3 + net-monitor-chart:v1 + net-monitor-chart:v2 + net-monitor-chart:v3 + staging/ + net-monitor:v2 + net-monitor:v3 + net-monitor-chart:v2 + net-monitor-chart:v3 + prod/ + net-monitor:v2 + net-monitor-chart:v2 +``` + +**Example**: Content promoted across different registries: + +```bash +dev-registry.acme-rockets.io/ + net-monitor:v1 + net-monitor:v2 + net-monitor:v3 + net-monitor-chart:v1 + net-monitor-chart:v2 + net-monitor-chart:v3 +``` + +is promoted to: + +```bash +prod-registry.acme-rockets.io/ + net-monitor:v2 + net-monitor-chart:v2 +``` + +**Example**: Content published for public consumption: + +```bash +products.wabbit-networks.io/ + net-monitor:v1 + charts/net-monitor:v1 +``` + +### Copying an OCI Image + +![net-monitor image copy](media/net-monitor-copy.svg) + +As an example, copying an image from a public registry to a private registry would involve `docker pull`, `docker tag` and `docker push` + +```bash +docker pull net-monitor:v1 +docker tag net-monitor:v1 registry.acme-rockets.io/base-artifacts/net-monitor:v1 +docker push registry.acme-rockets.io/base-artifacts/net-monitor:v1 +``` + +The above commands account for the image manifest and the associated layers. Note the directionality of the manifest `-->` config and layers references. A manifest declares the config and layers that must be accounted for before a manifest may be considered valid within a registry. + +### Copying an OCI Image with References + +![net-monitor image copy, with signatures](./media/net-monitor-with-sigs-copy.svg) + +Notary v2 signatures and a Notary v2 signed SBoM have been added to the `net-monitor:v1` image. Note the directionality of the SBoM and Notary v2 signature references. The Notary v2 signature and SBoM `-->` reference the `net-monitor:v1` image. From a user experience perspective, copying an image from a public registry to a private registry should copy the signatures and SBoM alongside the artifact they've signed. The OCI artifact manifest provides the information needed for a registry to index references from either direction. + +### OCI-Registry CLI + +To copy the above image and the associated signatures, an `oci-reg` cli is used for illustrative purposes. The `oci-reg` cli is an example of tools that _could_ be built by the community, as they would work within and across different OCI conformant registry implementations. + +The following command would copy the `net-monitor:v1` image from docker hub to the acme-rockets registry. The CLI _could_ be run within the source or target cloud eliminating the download/upload network hops. + +```bash +oci-reg copy \ + --source docker.io/wabbitnetworks/net-monitor \ + --target registry.acme-rockets.io/base-artifacts/net-monitor:v1 +``` + +The `oci-reg copy` command would: + +- assure the manifest and layer/blob digests remain the same +- copy any artifacts that are dependent on the source artifact-manifest, persisting them in the target registry. These _could_ include Notary v2 signatures, SBoMs, GPL source or other referenced artifacts. + +Since the artifacts are individually stored in a registry, shallow copies can be made: + +**Example**: Optional parameters to include|exclude reference types: + +```bash +oci-reg copy \ + --source docker.io/wabbitnetworks/net-monitor \ + --target registry.acme-rockets.io/base-artifacts/net-monitor:v1 \ + --copy-references disabled +``` + +As the referenced types are defined by the `manifest.subjectManifest`, copying specific content may be enabled: + +**Example**: Filter the types of enhancements: + +```bash +oci-reg copy \ + --source docker.io/wabbitnetworks/net-monitor \ + --target registry.acme-rockets.io/base-artifacts/net-monitor:v1 \ + --include-references org.cncf.notary.v2 +``` + +### Lifetime Management + +Using the OCI artifact manifest, OCI distribution-spec APIs can provide standard delete operations, including options for deleting referenced artifacts. The registry, nor the `oci-reg` cli would need to know about specific artifact type implementations. + +**Example**: Deleting images, with their Notary v2 and SBoM references: + +```bash +oci-reg delete registry.acme-rockets.io/net-monitor:v1 +``` + +**Example**: Deleting artifact references: + +```bash +oci-reg delete-references registry.acme-rockets.io/net-monitor:v1 +``` + +**Example**: Deleting specific artifact reference types: + +```bash +oci-reg delete-references \ + --referenceType org.cncf.notary.v2 \ + registry.acme-rockets.io/net-monitor:v1 +``` + +**Example**: Deleting a specific artifact reference: + +```bash +oci-reg delete registry.acme-rockets.io/net-monitor@sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7 +``` + +## Further reading + +- [oci.artifact.manifest spec][oci-artifact-manifest-spec] for more info on the manifest +- [Referrers API][referrers-api] for more information on listing references + +[lifecycle-management]: ./artifact-reftype-spec.md#lifecycle-management +[oci-image-manifest-spec]: https://github.com/opencontainers/image-spec/blob/master/manifest.md +[oci-artifacts]: https://github.com/opencontainers/artifacts +[oci-artifact-manifest-spec]: ./artifact-manifest-spec.md +[oci-image-index]: https://github.com/opencontainers/image-spec/blob/master/image-index.md +[oci-distribution-spec]: https://github.com/opencontainers/distribution-spec +[referrers-api]: ./manifest-referrers-api.md +[subjectManifest]: ./artifact-reftype-spec.md#oci-artifact-manifest-properties \ No newline at end of file diff --git a/artifact-manifest/net-monitor-image-nydus-ondemand-loading.json b/artifact-manifest/net-monitor-image-nydus-ondemand-loading.json new file mode 100644 index 0000000..4066e1f --- /dev/null +++ b/artifact-manifest/net-monitor-image-nydus-ondemand-loading.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "cncf.nydus.v1-rc1", + "blobs": [ + { + "mediaType": "application/vnd.cncf.nydus.bootstrap.v1.tar+gzip", + "digest": "sha256:f6bb0822fe567c98959bb87aa316a565eb1ae059c46fa8bba65b573b4489b44d", + "size": 32654 + }, + { + "mediaType": "application/vnd.cncf.nydus.blob.v1", + "digest": "sha256:d35808e58856ef91d07dedf94b93301b6efdfcc831477d3b1bb37e6c3e19cce6", + "size": 25851449 + }, + { + "mediaType": "application/vnd.cncf.nydus.blob.v1", + "digest": "sha256:dbad66bcfe29ef383157a3e122acbd08cd2ebd40f5658afa2ae62c52ffe26e9f", + "size": 226 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333", + "size": 16724 + }, + "annotations": { + "org.cncf.nydus.v1.author": "wabbit-networks.io" + } +} diff --git a/artifact-manifest/net-monitor-image-sbom.json b/artifact-manifest/net-monitor-image-sbom.json new file mode 100644 index 0000000..c811307 --- /dev/null +++ b/artifact-manifest/net-monitor-image-sbom.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "example.sbom.v0", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333", + "size": 16724 + }, + "annotations": { + "example.sbom.author": "wabbit-networks.io" + } +} diff --git a/artifact-manifest/net-monitor-image-signature.json b/artifact-manifest/net-monitor-image-signature.json new file mode 100644 index 0000000..5c0c1c8 --- /dev/null +++ b/artifact-manifest/net-monitor-image-signature.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "artifactType": "cncf.notary.v2-rc1", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:73c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333", + "size": 16724 + }, + "annotations": { + "org.cncf.notary.v2.signature.subject": "wabbit-networks.io" + } +} diff --git a/artifact-manifest/net-monitor-oci-image.json b/artifact-manifest/net-monitor-oci-image.json new file mode 100644 index 0000000..409d859 --- /dev/null +++ b/artifact-manifest/net-monitor-oci-image.json @@ -0,0 +1,20 @@ +{ + "schemaVersion": 2, + "config": { + "mediaType": "application/vnd.oci.image.config.v1+json", + "digest": "sha256:e752324f6804d5d0b2c098f84507d095a8fd0031cf06cdb3c7ad1625dcd1b399", + "size": 7097 + }, + "layers": [ + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:83c5cfdaa5385ea6fc4d31e724fd4dc5d74de847a7bdd968555b8f2c558dac0e", + "size": 25851449 + }, + { + "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip", + "digest": "sha256:7445693bd43e8246a8c166233392b33143f7f5e396c480f74538e5738fb6bd6e", + "size": 226 + } + ] +} \ No newline at end of file diff --git a/considerations.md b/considerations.md new file mode 100644 index 0000000..77c3ef4 --- /dev/null +++ b/considerations.md @@ -0,0 +1,136 @@ +# Extensibility + +Implementations that are reading/processing manifests MUST NOT generate an error if they encounter an unknown property. +Instead they MUST ignore unknown properties. + +# Canonicalization + +* OCI Artifacts are [content-addressable](https://en.wikipedia.org/wiki/Content-addressable_storage). See [descriptors](descriptor.md) for more. +* One benefit of content-addressable storage is easy deduplication. +* Many artifacts might depend on a particular blob, but there will only be one blob in the store. +* With a different serialization, that same semantic blob would have a different hash, and if both versions of the blob are referenced there will be two blobs with the same semantic content. +* To allow efficient storage, implementations serializing content for blobs SHOULD use a canonical serialization. +* This increases the chance that different implementations can push the same semantic content to the store without creating redundant blobs. + +## JSON + +[JSON][] content SHOULD be serialized as [canonical JSON][canonical-json]. + +Implementations: + +* [Go][]: [github.com/docker/go][], which claims to implement [canonical JSON][canonical-json] except for Unicode normalization. + +## EBNF + +For field formats described in this specification, we use a limited subset of [Extended Backus-Naur Form][ebnf], similar to that used by the [XML specification][xmlebnf]. +Grammars present in the OCI specification are regular and can be converted to a single regular expressions. +However, regular expressions are avoided to limit ambiguity between regular expression syntax. +By defining a subset of EBNF used here, the possibility of variation, misunderstanding or ambiguities from linking to a larger specification can be avoided. + +Grammars are made up of rules in the following form: + +``` +symbol ::= expression +``` + +We can say we have the production identified by symbol if the input is matched by the expression. +Whitespace is completely ignored in rule definitions. + +## Expressions + +The simplest expression is the literal, surrounded by quotes: + +``` +literal ::= "matchthis" +``` + +The above expression defines a symbol, "literal", that matches the exact input of "matchthis". +Character classes are delineated by brackets (`[]`), describing either a set, range or multiple range of characters: + +``` +set := [abc] +range := [A-Z] +``` + +The above symbol "set" would match one character of either "a", "b" or "c". +The symbol "range" would match any character, "A" to "Z", inclusive. +Currently, only matching for 7-bit ascii literals and character classes is defined, as that is all that is required by this specification. +Multiple character ranges and explicit characters can be specified in a single character classes, as follows: + +``` +multipleranges := [a-zA-Z=-] +``` + +The above matches the characters in the range `A` to `Z`, `a` to `z` and the individual characters `-` and `=`. + +Expressions can be made up of one or more expressions, such that one must be followed by the other. +This is known as an implicit concatenation operator. +For example, to satisfy the following rule, both `A` and `B` must be matched to satisfy the rule: + +``` +symbol ::= A B +``` + +Each expression must be matched once and only once, `A` followed by `B`. +To support the description of repetition and optional match criteria, the postfix operators `*` and `+` are defined. +`*` indicates that the preceding expression can be matched zero or more times. +`+` indicates that the preceding expression must be matched one or more times. +These appear in the following form: + +``` +zeroormore ::= expression* +oneormore ::= expression+ +``` + +Parentheses are used to group expressions into a larger expression: + +``` +group ::= (A B) +``` + +Like simpler expressions above, operators can be applied to groups, as well. +To allow for alternates, we also define the infix operator `|`. + +``` +oneof ::= A | B +``` + +The above indicates that the expression should match one of the expressions, `A` or `B`. + +## Precedence + +The operator precedence is in the following order: + +- Terminals (literals and character classes) +- Grouping `()` +- Unary operators `+*` +- Concatenation +- Alternates `|` + +The precedence can be better described using grouping to show equivalents. +Concatenation has higher precedence than alernates, such `A B | C D` is equivalent to `(A B) | (C D)`. +Unary operators have higher precedence than alternates and concatenation, such that `A+ | B+` is equivalent to `(A+) | (B+)`. + +## Examples + +The following combines the previous definitions to match a simple, relative path name, describing the individual components: + +``` +path ::= component ("/" component)* +component ::= [a-z]+ +``` + +The production "component" is one or more lowercase letters. +A "path" is then at least one component, possibly followed by zero or more slash-component pairs. +The above can be converted into the following regular expression: + +``` +[a-z]+(?:/[a-z]+)* +``` + +[ebnf]: https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form +[xmlebnf]: https://www.w3.org/TR/REC-xml/#sec-notation +[canonical-json]: http://wiki.laptop.org/go/Canonical_JSON +[github.com/docker/go]: https://github.com/docker/go/ +[Go]: https://golang.org/ +[JSON]: http://json.org/ diff --git a/delete.md b/delete.md new file mode 100644 index 0000000..79a790c --- /dev/null +++ b/delete.md @@ -0,0 +1,13 @@ +To clarify the current high-level differences with the artifact-manifest and the existing image-manifest: + +| Image-spec | Artifacts Spec | +|-|-| +| `config` REQUIRED | `config` optional as it's just another entry in the `blobs` collection with a `config mediaType` | +| `layers` REQUIRED | `blobs`, which renamed `layers` to reflect general usage are OPTIONAL | +| `layers` ORDINAL | `blobs` are defined by the specific artifact spec. Helm isn't ordinal, while other artifact types, like container images MAY make them ordinal | +| `manifest.config.mediaType` used to uniquely identify different artifact types. | `manifest.artifactType` added to lift the workaround for using `manifest.config.mediaType` on a REQUIRED, but not always used property. | +| | `subjectManifest` OPTIONAL, enabling an artifact to extend another artifact (SBOM, Signatures, Nydus, Scan Results, ) +| | `/referrers` api for discovering referenced artifacts, with the ability to filter by `artifactType` | +| | Lifecycle management defined, starting to provide standard expectations for how users can manage their content. It doesn't define GC as an internal detail| + +The artifact manifest approach to reference types is based on a new manifest, enabling registries and clients to opt-into the behavior, with clear and consistent expectations, rather than slipping new content into a registry, or client, that may, or may not know how to lifecycle manage the new content. See [Discussion of a new manifest #41](https://github.com/opencontainers/artifacts/discussions/41) diff --git a/descriptor.md b/descriptor.md new file mode 100644 index 0000000..194d223 --- /dev/null +++ b/descriptor.md @@ -0,0 +1,183 @@ +# OCI Content Descriptors + +* An OCI artifact consists of several different components, arranged in a [Merkle Directed Acyclic Graph (DAG)](https://en.wikipedia.org/wiki/Merkle_tree). +* References between components in the graph are expressed through _Content Descriptors_. +* A Content Descriptor (or simply _Descriptor_) describes the disposition of the targeted content. +* A Content Descriptor includes the type of the content, a content identifier (_digest_), and the byte-size of the raw content. +* Descriptors SHOULD be embedded in other formats to securely reference external content. +* Other formats SHOULD use descriptors to securely reference external content. + +This section defines the `application/vnd.oci.descriptor.v1+json` media type. + +## Properties + +A descriptor consists of a set of properties encapsulated in key-value fields. + +The following fields contain the primary properties that constitute a Descriptor: + +- **`mediaType`** *string* + + This REQUIRED property contains the media type of the referenced content. + Values MUST comply with [RFC 6838][rfc6838], including the [naming requirements in its section 4.2][rfc6838-s4.2]. + + Each artifact author MAY define their own unique `mediaTypes`, or utilize existing `mediaTypes` defined by other artifacts. To assure unique ownership, all `mediaTypes` MUST be registered with iana.org. + +- **`digest`** *string* + + This REQUIRED property is the _digest_ of the targeted content, conforming to the requirements outlined in [Digests](#digests). + Retrieved content SHOULD be verified against this digest when consumed via untrusted sources. + +- **`size`** *int64* + + This REQUIRED property specifies the size, in bytes, of the raw content. + This property exists so that a client will have an expected size for the content before processing. + If the length of the retrieved content does not match the specified length, the content SHOULD NOT be trusted. + +- **`urls`** *array of strings* + + This OPTIONAL property specifies a list of URIs from which this object MAY be downloaded. + Each entry MUST conform to [RFC 3986][rfc3986]. + Entries SHOULD use the `http` and `https` schemes, as defined in [RFC 7230][rfc7230-s2.7]. + +- **`annotations`** *string-string map* + + This OPTIONAL property contains arbitrary metadata for this descriptor. + This OPTIONAL property MUST use the [annotation rules](annotations.md#rules). + +### Reserved + +The following field keys are reserved and MUST NOT be used by other specifications. + +- **`data`** *string* + + This key is RESERVED for future versions of the specification. + +All other fields may be included in other OCI specifications. +Extended _Descriptor_ field additions proposed in other OCI specifications SHOULD first be considered for addition into this specification. + +## Digests + +The _digest_ property of a Descriptor acts as a content identifier, enabling [content addressability](http://en.wikipedia.org/wiki/Content-addressable_storage). +It uniquely identifies content by taking a [collision-resistant hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function) of the bytes. +If the _digest_ can be communicated in a secure manner, one can verify content from an insecure source by recalculating the digest independently, ensuring the content has not been modified. + +The value of the `digest` property is a string consisting of an _algorithm_ portion and an _encoded_ portion. +The _algorithm_ specifies the cryptographic hash function and encoding used for the digest; the _encoded_ portion contains the encoded result of the hash function. + +A digest string MUST match the following [grammar](considerations.md#ebnf): + +``` +digest ::= algorithm ":" encoded +algorithm ::= algorithm-component (algorithm-separator algorithm-component)* +algorithm-component ::= [a-z0-9]+ +algorithm-separator ::= [+._-] +encoded ::= [a-zA-Z0-9=_-]+ +``` + +Note that _algorithm_ MAY impose algorithm-specific restriction on the grammar of the _encoded_ portion. +See also [Registered Algorithms](#registered-algorithms). + +Some example digest strings include the following: + +digest | algorithm | Registered | +--------------------------------------------------------------------------|---------------------|------------| +`sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b` | [SHA-256](#sha-256) | Yes | +`sha512:401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b372742...` | [SHA-512](#sha-512) | Yes | +`multihash+base58:QmRZxt2b1FVZPNqd8hsiykDL3TdBDeTSPX9Kv46HmX4Gx8` | Multihash | No | +`sha256+b64u:LCa0a2j_xo_5m0U8HTBBNBNCLXBkg7-g-YpeiGJm564` | SHA-256 with urlsafe base64 | No | + +Please see [Registered Algorithms](#registered-algorithms) for a list of registered algorithms. + +Implementations SHOULD allow digests with unrecognized algorithms to pass validation if they comply with the above grammar. +While `sha256` will only use hex encoded digests, separators in _algorithm_ and alphanumerics in _encoded_ are included to allow for extensions. +As an example, we can parameterize the encoding and algorithm as `multihash+base58:QmRZxt2b1FVZPNqd8hsiykDL3TdBDeTSPX9Kv46HmX4Gx8`, which would be considered valid but unregistered by this specification. + +### Verification + +Before consuming content targeted by a descriptor from untrusted sources, the byte content SHOULD be verified against the digest string. +Before calculating the digest, the size of the content SHOULD be verified to reduce hash collision space. +Heavy processing before calculating a hash SHOULD be avoided. +Implementations MAY employ [canonicalization](considerations.md#canonicalization) of the underlying content to ensure stable content identifiers. + +### Digest calculations + +A _digest_ is calculated by the following pseudo-code, where `H` is the selected hash algorithm, identified by string ``: +``` +let ID(C) = Descriptor.digest +let C = +let D = ':' + Encode(H(C)) +let verified = ID(C) == D +``` +Above, we define the content identifier as `ID(C)`, extracted from the `Descriptor.digest` field. +Content `C` is a string of bytes. +Function `H` returns the hash of `C` in bytes and is passed to function `Encode` and prefixed with the algorithm to obtain the digest. +The result `verified` is true if `ID(C)` is equal to `D`, confirming that `C` is the content identified by `D`. +After verification, the following is true: + +``` +D == ID(C) == ':' + Encode(H(C)) +``` + +The _digest_ is confirmed as the content identifier by independently calculating the _digest_. + +### Registered algorithms + +While the _algorithm_ component of the digest string allows the use of a variety of cryptographic algorithms, compliant implementations SHOULD use [SHA-256](#sha-256). + +The following algorithm identifiers are currently defined by this specification: + +| algorithm identifier | algorithm | +|----------------------|---------------------| +| `sha256` | [SHA-256](#sha-256) | +| `sha512` | [SHA-512](#sha-512) | + +If a useful algorithm is not included in the above table, it SHOULD be submitted to this specification for registration. + +#### SHA-256 + +[SHA-256][rfc4634-s4.1] is a collision-resistant hash function, chosen for ubiquity, reasonable size and secure characteristics. +Implementations MUST implement SHA-256 digest verification for use in descriptors. + +When the _algorithm identifier_ is `sha256`, the _encoded_ portion MUST match `/[a-f0-9]{64}/`. +Note that `[A-F]` MUST NOT be used here. + +#### SHA-512 + +[SHA-512][rfc4634-s4.2] is a collision-resistant hash function which [may be more perfomant][sha256-vs-sha512] than [SHA-256](#sha-256) on some CPUs. +Implementations MAY implement SHA-512 digest verification for use in descriptors. + +When the _algorithm identifier_ is `sha512`, the _encoded_ portion MUST match `/[a-f0-9]{128}/`. +Note that `[A-F]` MUST NOT be used here. + +## Examples + +The following example describes a manifest with a content identifier of "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270" and a size of 7682 bytes: + +```json,title=Content%20Descriptor&mediatype=application/vnd.oci.descriptor.v1%2Bjson +{ + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "size": 7682, + "digest": "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270" +} +``` + +In the following example, the descriptor indicates that the referenced manifest is retrievable from a particular URL: + +```json,title=Content%20Descriptor&mediatype=application/vnd.oci.descriptor.v1%2Bjson +{ + "mediaType": "application/vnd.oci.artifact.manifest.v1+json", + "size": 7682, + "digest": "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270", + "urls": [ + "https://example.com/example-manifest" + ] +} +``` + +[rfc3986]: https://tools.ietf.org/html/rfc3986 +[rfc4634-s4.1]: https://tools.ietf.org/html/rfc4634#section-4.1 +[rfc4634-s4.2]: https://tools.ietf.org/html/rfc4634#section-4.2 +[rfc6838]: https://tools.ietf.org/html/rfc6838 +[rfc6838-s4.2]: https://tools.ietf.org/html/rfc6838#section-4.2 +[rfc7230-s2.7]: https://tools.ietf.org/html/rfc7230#section-2.7 +[sha256-vs-sha512]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/hsMw7cAwrZE diff --git a/manifest-referrers-api.md b/manifest-referrers-api.md new file mode 100644 index 0000000..51f644d --- /dev/null +++ b/manifest-referrers-api.md @@ -0,0 +1,109 @@ +# Manifest Referrers API + +[OCI artifact-manifest](./artifact-manifest.md) provides the ability to reference artifacts to existing artifacts. Reference artifacts include Notary v2 signatures, SBoMs and many other types. Artifacts that reference other artifacts SHOULD NOT be tagged, as they are considered enhancements to the artifacts they reference. To discover referenced artifacts a manifest referrers API is provided. An artifact client, such as a Notary v2 client would parse the returned manifests, determining which manifest type they will pull and process. + +The `referrers` API returns all artifacts that have a `subjectManifest` to given manifest digest. Referenced artifact requests are scoped to a repository, ensuring access rights for the repository can be used as authorization for the referenced artifacts. + +Artifact references are defined in the [oci.artifact.manifest spec][oci.artifact.manifest-spec] through the [`subjectManifest`][oci.artifact.manifest-spec-manifests] property. + +## Request All Artifact References + +The references api is defined as an extension to the [distribution-spec][oci-distribution-spec] using the `/v2/_ext/oci-artifacts/v1-rc1/` namespace. This spec defines the behavior of the `v1-rc1` version. Clients MUST account for version checking as future major versions MAY NOT be compatible. Future Minor versions MUST be additive. + +The `/referrers` API MUST provide for paging. The default page size SHOULD be set to 10. + +```rest +GET /v2/_ext/oci-artifacts/v1-rc1/{repository}/manifests/{digest}/referrers?n=10 +``` + +**expanded example:** + +```rest +GET /v2/_ext/oci-artifacts/v1-rc1/net-monitor/manifests/sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b/referrers?n=10 +``` + +The `/referrers` API MAY provide for filtering of `artifactTypes`. Artifact clients MUST account for [distribution-spec][oci-distribution-spec] implementations that MAY NOT support filtering. Artifact clients MUST revert to client side filtering to determine which `artifactTypes` they will process. + +### Request Artifacts of a specific media type + +**template:** +```rest +GET /v2/_ext/oci-artifacts/v1-rc1/{repository}/manifests/{digest}/referrers?n=10&artifactType={artifactType} +``` + +**expanded example:** + +```rest +GET /v2/_ext/oci-artifacts/v1-rc1/net-monitor/manifests/sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b/referrers?n=10&artifactType=application/vnd.oci.notary.v2 +``` + +### Artifact Referrers API results + +[distribution-spec][oci-distribution-spec] implementations MAY implement `artifactType` filtering. Some artifacts types including Notary v2 signatures, may return multiple signatures of the same `artifactType`. To avoid an artifact client from having to retrieve each manifest, just to determine if it's the specific artifact needed to continue processing, the `/referrers` API will return a collection of manifests, including the annotations within each manifest. By providing manifests, as opposed to manifest descriptors, a specific artifact client can find the relevant properties they need to determine which artifact to retrieve. For example, Notary v2 MAY use an annotation: `"org.cncf.notary.v2.signature.subject": "wabbit-networks.io"`, which the client could use to determine which signature to pull from the registry. Using annotations, clients can reduce round trips and the data returned to determine which artifacts the specific client may require reducing network traffic and API calls. + +This paged result MUST return the following elements: + +- `digest`: The digest used to retrieve the referenced manifest +- `manifest`: The [pretty](https://linuxhint.com/pretty_json_php/) listing of `oci.artifact.manifest`. By providing the manifest, consumers can choose which elements they require to determine which manifest of the paged result they must fetch. As the manifest is pretty formatted, the contents MAY not match the digest of the original manifest. For to assure the contents are accurate, the client MAY retrieve the manifest using `references.[n].digest` +- `@nextLink`: Used for paged results + +As an example, Notary v2 manifests use annotations to determine which Notary v2 signature they should retrieve: `"org.cncf.notary.v2.signature.subject": "wabbit-networks.io"` + +**example result of artifacts that reference the `net-monitor` image:** +```json +{ + "references": [ + { + "digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b", + "manifest": { + "schemaVersion": 3, + "mediaType": "application/vnd.oci.artifact.manifest.v1-rc1+json", + "artifactType": "cncf.notary.v2-rc1", + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b", + "size": 16724 + }, + "annotations": { + "org.cncf.notary.v2.signature.subject": "wabbit-networks.io" + } + } + }, + { + "digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b", + "manifest": { + "schemaVersion": 1, + "mediaType": "application/vnd.oci.artifact.manifest.v1-rc1+json", + "artifactType": "example.sbom.v0" + }, + "blobs": [ + { + "mediaType": "application/tar", + "digest": "sha256:9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0", + "size": 32654 + } + ], + "subjectManifest": { + "mediaType": "application/vnd.oci.image.manifest.v1+json", + "digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b", + "size": 16724 + }, + "annotations": { + "example.sbom.author": "wabbit-networks.io" + } + } + ], + "@nextLink": "{opaqueUrl}" +} +``` + +[oci.artifact.manifest-spec]: ./artifact-manifest-spec.md +[oci.artifact.manifest-spec-manifests]: ./artifact-manifest-spec.md#oci-artifact-manifest-properties +[oci-distribution-spec]: https://github.com/opencontainers/distribution-spec diff --git a/media/artifacts-spec-objects.png b/media/artifacts-spec-objects.png index b422d406666ed9fb96d1536d1ba310471518967f..8cacfb700cda3b7d08759df5b4a8e1994ca3137d 100644 GIT binary patch literal 58266 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

9ANZKHSS(h20 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 B2Y>(o literal 69446 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 diff --git a/media/image-spec-objects.png b/media/image-spec-objects.png index f9b1648fdcb57322a7df94f851dd3930c53f539f..a233329259739078dba9f0dbf3e8e50b7a6230ef 100644 GIT binary patch literal 18862 zcmce;1z1$y*C-4kprne3ppcRNL z=nwvXodB0yTwI)-oKK%V1-_p>d-kty;6CsafW*VYd-(7n@J&um&dbYt>(;H?w{PR) z;{%t3goOI~`hRdfe*9QUN(#6%G&BV6{EyCW-n{v*N7B;LGBPp%ypfR+K<@eT=RiYR zDs_4qU4SkVgDDp{>M6Sgz#H#VD}Ejuetv!detU5d7b$T!prNdkr!vS-Px}Kv)WE>t zjeaOSY#e7YO zD@#mF{FI!UoK*2SqxSRXY$z0(mzSTHSCF4ySXfwGT-f^cYgyUXj`Fh3%JS~&%AV@# z+S=Osy4t>`@68>ZUH!iXe*KyrLJT8@=7vW`M@HsH$HvD-7iVYZ=H}Ly7B^N`*H%}z zH#hb+H}`gSc2TI4qob4Ka|=f& zSD)a>#4K1&UUh9oDIczB2cj-%s~)9V8b9B06Betld3 z$K_?DcDE!z;kLc3wi5;h+1=|8W;f%3CUS5L9yJOlN3*7ZW1~6N*FgjD`;*6cdgqOCU=q zW-JE5xQ7MCihdYP;otg{Pt*s!f2`N$HVMgWw76~|o(K2a%`I6tv*AM^Fckj1jUxQ2 zS9E8I$$f_SLUA$Vgba%FCW{w#88SQC6}4C2WQ*^MrnZnpl|O5`*pb8 zz|i?*P=X1@viDOc8TDV`$2i9Mhlx+|2)_>Y%f_aQC=*{j-pbW)jjLzNNkuqtObedg z6tv9AC<7pZ&%bg0DFWdxkMD2vQyQW-c;n4)X|BoP{Lcmc7YHMRi~B*>Yz6T)^Zq!c zEaCU3IohiH&4S$+)i?ehYWi2JYfV05fnO#2nCD`P)M0%mRgg!{1B{{n4P?(4uGp)b zc^T-VW=`WbqH%U86@CljjRGu(3LgT&(D^q>{;lP|%v7(1{B(N@4}<4lYVt?e^>wL( z@B=0N5td*34t@p(X|0^f-{`BUxLG_m5fQL@18&~_p8dX3hrU{yMjs`|ix1gO2{)N@ z3Sf<{CUZ4n$mE!U!ERa$MNvHbcJ_k4u5c-FHd+5mqSzEA#v1Ii=QxZvpc&-!F3BWb zBZKO?sS120#O;L*bvCZf($U{v!!7H?mog#(LNVax(j1zJsyt&hhcd(sVBB_D!W=@N zX{jDtS#9kLQ*8L`U0Gos3dbT@IUA{Cj6attjssjw>L?N3*3po`nxTx4U)3JPyKhkK zHN(bI7xN^&+0W_kK-%U^Bp|`7rsr+= ztyxP-o-yg4k+!M44qyD7H1=*eV5B6hda;p%na`Kc{+fOYm`jeC1q}@*Qi=` zkt>w@a7vCb9hBZ>P3~ge8;F>Kul7=&mLR3?4oMeCC@J31%orYyxQK(fm2W?rbt2HX zI8YiQa)3SvAfS3|T0!hd;_v^55XSzHmo#6Bb4=2NYs4ACx}3Km$yA=bq7qJ~7hdq` zesq)MF8_?}r%pmk%RAM!U@Z0sq0w6V z4nd6tSdg7eTvQ5shdjaea?uh*ncsJZP}hu)-mQw^PLZ<;WTgMe&rXfI(N)GKZkO*! zh9*P}CMYhZ;-V?Pe6kL4zt_K{re!W5D5&VqLxcMHVfo1z-lZ<62+Ler7XrsjzC);Z zn6XQlx1dx$CFZFe_ZZRsRB|l2-BXZ5akhm5( zG5mAp0(dF;`G2!a zLe0&@dlT=P4?dc6WiD#nO(OB34Je}rbR<%vmfq#D#|LJEzLkR$ik1XhtE&ZAQE_f3 zzHWfbs=LGkzK6GfzDvjl3t$xu@_s}m?Ft*V9+lgo3)R5eYqy$g%|SfB`G70;pv^=& zhyR$%U?MBK(?kJT-Ag2b0q+0!J|!zwmTXDa^rhlKi?VWj3dP7Y*ojT=R|nstGcvAe z4nEDDLtL;S=5H#?WibS#qhOLp4OhlIOTfP?H?ZQi!Ll%#0F2CT!bghSbe&D z7r-5)v*{XxPk{NGv&}+*(c;;{XF{?N(XyXO<@93rlGnUXYcwGSoFC;4VEd!>_mXZTkj^77vBI{Yf&_IOr%+W6q~duY%@0At)!rcb-vGLDQ;L)CEd`_ z-lt5Z;F9xVioAwQit0?9b+1y-+--dQHupYpRQMUA_=|9V1Hd$SFzr%@ znCQ*%VuUN}qbIckh9%-9h@+=CGP%$92qzwM&E~GdRvu2;INCaH_>*zLeGL<98~oTS zrq$$`nDt{OW)tje>`eQ)Q_Qjaa%YBa-U3E6aSAo;76C-Rc(OTfmC#xXxy~rKr($B2 zX@p^<=u*5kIyzUc9a`l3Hgt+s^ee~!Vr!Lj+PGwB09mKdJQtH`VB6EM$PX6Uy2zfr zZznam@bC~ydmNMGn>2i#9E_&LYdcwFd!Sopnkk&p~5qpfyWbj_|k z^4XU~h*gcFR8KO3{pmooXDQ+2fwEk??w76y`{l<`Nh55drbVLS!56ffMKF}Bb<5n1 zXwSFyFoydbHm_@a?V24sq~lS-x@^UE_?L24BQ4$YGF>yBx_FT)$|Ex=(R+?xSbkPq z##pH~J$o{=MJb`lKO^tryW?hcwRHdUqi{op#+4-c*Wso+{NJ>;J>)MqaqKZ=2@PcR zN`kyF;m!B~h$swj5ZMhlH4qGN-2{sQ^P9mfsPD~aiu&mG4?@)>|4h~Yt8?dn#1q0; zN+_!m!=4Ak>b;nW*cFJ-U9f*>s4~uo-cxUJ}Fh_ z4zE9=e*uR!@4KiP^5WMCHC+WO$2(;w0{>Y)>t-B;cFoFEG)**GTR{slXfh_aPtAy; zWrDU-W&F}VLQ@1D0gp^Zs>4;;)Y)D}^(R|=ojvE>(IWoy zf$@)`+Fgc?3wBB>Uq8H0O+44m&%ZTWE3jAf%{|VS<sJ(w+ELT4eHyiSFbS%7%5HHw4buM+nxzV-!Cs~$Ow;Tkfr!*wqg;cz;n!EW2S| zoVwa}OM1IvrvvOFPQx~H3u@KI zP#mymxE6#}?YzjG)mqRI8NX9AXDR&332r`qZp;&0j&Q<+Y42mpa(ubZ#?hJiIY$l` zt-ies8gdPrlU4HYg`y5qckd_pM(I>3k!b8&A_GG*J#KH0fFJ8kqEk|{MY{3sE2=^! zJ{Pj;Cb4+e3Ut4d7EEd4_M6y9Dx5Si;_ZU2l#KOA+oTS@{UyM+*gNFAcem3?WcCEB z+sQr3l1P2ldm*OTS?Q5Y0`V67bNakVOE?d2k)|b?bT2C+)6~N@ zSXQ!}Z1BOH*^g5N*Z23}f)zt963(8iG3ot@sM``0+f~G6$`1klD8N<$xj&YJ)VM3s z_Vk98SrzXFU&=p&-PW<)z@Y~fg`3|mqe(JU2_)bNaF31ZnP?J{1NqTcL?!LA#c4od zHeahEDY%>(!i9f5pm1@QHK=4TbeXjn^~N2`O^Fbr6KLZf`Pwubi&>FrWH$2a(u})WmXehvD_Qv*O zp4_)?1NoU^eB9g9(Noa+GQ+6IYJ*J$U(8#qgp^mLEWc06X%Ap;7hEUuB_S;16egJ$mG zq4!tA4SD$sjoZ|`LqCuWykRro+`7x1bct4cPl~h|gg%U{wF-G+TBtwJcIc_Mes(*6 zaClytjVR?uU8{r>%HEHlAEtOr5YNF)1!giT3V6fzR1sc7*X&m$p2-OebnmzyY8&rA zYdmpzY1&rKP_d)xCB-}zmUP*AB2qDH`dhNF`F5{SB5Z36!_u}TjfbjV-+v_JUCeU} zeKMq7`$F9`?irfsK0*)cfjJHB#@Y`Q-{~*h zlrP~|fY0BGAAJAq(OnKFTbfS!ORfO{V}VO)8B`&8%!5C2kox^m7d!5--n~lWZaU#D zR}-}|7C;(22NS(dp<&*DIBz>1-s2!;t+cRu<)dC$I(yUbVt+LDVLrW$t6-#i5_7ZT zgY2e=0yVG-HNQ8pqED(N+Y?*fR=PV1AS7v3Q(dI7@gI@Y&J{)4$wX6@DDk>ankKxh z?<82`RW3vnTj6@^NdlDUW=soORq0)$x=$H6V%rUQ!odvD#=e3CZC3g-iQ$qBAaB;W zURARRfky-5Ir;g1Bx20!h3gY-<=m@Ns4EJ@wYTJP-K zb4&BM|1qRIW%YsWt1<0n5(fRx=`pkSLuMUyA&?eo%d;&WlRx&F>i}EvwGAh7%3^9; z%PkL!&VHSeBX45n%f$X+LZ14~2>SH~ws$aS|DBcw1x>=T2$v5LbYA6-Z?B0-{Yf!m zt5m5pk=GE}!H`>WSH>jCf~1Ve*>+F)v#D-I7ZYI)E8Z0&Po{GnWIeFop0;nmg0j=tq2r$k~wc5?fE15LXG1b5;d_9VFH zyTN{uo$Li~ps(5-7l^|x@#$s$9c-J@T|N2%=5Y$4@G9TH0k>h6IezUD8keuVpC_hG z)KmP*V^}XLqvvBsLe&;J&rLp?BgYt-V_hHbaXOH4oRN!Ku$Xh{WHR(er9CMfWztu^ z|89C{`#3bv9NeQlkb<#(0|-nKn2PE;DQ4+K(1D#>s_GwL28Cv6{2vLVxDNVV_wxgW zRCH&j^p5zRST2v!V0qVD6>sDX*H+m`J4mr@T6`Jg)$6t*)^oVUwb^@83i2?Q7%ud? z?cs#E#X4MiZyd}Rzj_?sHHKp8XO2wViFa-SrBQ9%wyxn@=ze9mt%!4``dGB3cQq>d zFhYn)hd8`vJL5!6EaKycEbUg%jwKWyn(^=npM^vU&R#ZS*KmE?d@zCp3+(nvy)+m~ z$$fNZuhZbgOZscD=vorU^D}8d;&&0GaecU#oc`|u{=h2QYVK7x9cE5ao_%rFuT};! zm1i_A{Cl6z*RUjW-yeo_(V&(-w6}}@1RFlnbFDXVf0|n$GQy|(AJOA~Uyb^&D0pr;GGE@ku{_*niejIhWhi-t_An=S|?hR80rFEI7vpV?7oB zuMN5izM}kga(20X6?*C?w3B;TwWkWeH$C*)Lc8z&IHIq4t$KCqs`e(-_nBeYq9}!_ zUhGe8NP%rT&v6*i2Ubb&SaCuz{w3(*h;;aj3S;tWz`JWfE^Y&Q*>wdur@snBaN&TX zu)(A626p78&IsWgl-U6YIiLte0Hwl*76%~WZv1{OhLppEckD}puY@&7!TmTOoCFmw zk~6WDs~@faRxxBsEA%qXmgt-SwEc1(Lzcwq1?}RBJqCM`qV<)`0YkWV_u=Z948YtZ z`XmggJT{;DJR1FY@=7_gv1i};;jEdJ54ucB#4LjoMNhR>U8B(d<@BPCngw-8{9Oio zmB(QDP!wX-`}x#|Wma?{5OF0LDS;(>;Y{N~R(S<@n5?kFdyw!#@K&^EnHXferkS4A zrL&sx!1oRnIEsc69#@!0gSrFfD45(Wyt>S8Z(1<~Qb;f{>rmXoiY7eS>ENvM_V74wBS9z?P`Y?Q2SG+MIi!d|WH}TJkdjU8H{f+&FYG`U)Eq;k87RN2 zkiDjp(MkD>ohyB&tBBQ$@Fu%+wo5(^cpUpsG@2Fe_bPU@e^OrfvFydoZ8}uB!I&?0 zwCBxe&xI)&!Od%DyM&CpGL59E)Y_u@VG?Zg{?>+|1%{uBH=*mjm3Iv&t%8a?Lc#JWpUgyvPodp*#FEO;zSqvE&22VRd%7cjAC|0eU^$F)C3F2a zLBP!lzxSrB@D0GX{$K!lnHUmZ45>teY7Ib;`6JSy94L7Cckh}KgjZGhFNJHAI!KtH zmPO-~CeqQ?{3U=d9yXIG^|txcQ5ileRZ}*ncMYYD{2`9SsR;toVDPc2?e>aGt`ymE zyl1IvaPZ0vD3$mim@B^~Vcuz*6}9k!AD;$wYcP=_sa$6+b_75WJ#m8?6TW%_Fyey~ zpofsr@IfoT%ZMRsFyOQm*djpb4IAjN9J_a;JvqgYjX$U78Ez|TxXb+jc=SmQA0@A7 z-uU?T2GsZXry~Ew9}oKPWc%GCxiH{@zrDc_ULvQ`(IR)szS*#M zuD$t_o#<|$ln79UT)1(NWk4WFOMD#NR}>105Qxui6Q*-+Jx`3AtQps}R?ttPYp)Z} zXmrcZ>46)9RJ2(~i)hJdDb|Vv!LGHw{ns_f?}|iR*(;qT{M{4c=>Ht;^^b z8y1tD2HZFe3wzOPtPRP++zFMV)ao%f=#v|aEH+lr*G`BpW-U@ZfAW0*Xs<|>kr z8?O!#t{{TT?D~S8F!jJ3k}$1y2RHCDGQEqnpHgt65tT<@dh!W+K3se}P01vDq*$Fp zBzuo+gOowhd8E|0IGijz=p%;CL29mfq)ZQyqSImudbhfNTO1gFGZFi}^{>=EifGZA zjlEsb^EQERb#Epzz1&N^1@5V*Vq`@L)C(G~<}tkjO8zC3!LkrVNjq@f+5Xos3UJi? z1vD`WK3b@VTz;NAk|S%AF-T2lH6Q|3jeoHVZD6a)s^F+EOmmeLT<0@-N*q($h}hI6 z-Pa@zp-PwstEy6gXDMZU!V%iEL1IG9Z!_dK|rHd2o;^f8Z z6>vRhlFka(3hBpsT4tL}Bol#q@=|`qd*WozqA}XTxCB6SCQOOPvK&|;HumZ0QZb}1 zbf%7bR+ChDEiT2d(5v%U=v6%@gV=OWq2qa>jLOn!={RqCvkRn7Kv7UeZn5XkaReD7 z5T~o$ovpCjItr&nT?8OBK}AtU#ZcdF5bJ2FETkrI7$`8aoK&*mafNr+yn6rfaJ=o_RBVNDYA@%N$eG41!aN`k}v(}JarHD)LG%n$x2vsv_?A|aAE8&@_3scS=SLrxb zZ~x)g5|uD!DqvLFRuFftR|jUoh4<_)k*qNZQ^*Qy!|lxRz)jHuVAb$(ULm<5ZL_IQ zafsfe#fWZB38@P?DS0wW0i@zEnRM1JeXB(RXQ>L6M}+6?ODf*foC zStUD71$OKr4qQ=JSKjoek_J;1Y=k=J8A$O0NrQS{U}ty$l$>L1zW@l=mVQjFX^?A& z$uu1&*v0Wf4MqoU!q=f+QDExo*uG7x3m|=l>gEBq5U6>oX}h9n%F;0wyq1WV5FvxW z;rV?E5Ff>TmC1wu3|FH^VwZ|nrR4L06P`&=(cv=rhyyia7z9?~lJ~)5!tfAHl~-K7(SYF^FQ4(D*iDp5 z)<^xzOr1$b_B++(+hDQ@A7 zT}7s>e78B3v(~N1Za3`mx%b=M1RJX7g+C&27a>maY$nyt8xeWsj8MLZUFp3DD>(71 zn_YaOX=7K8i0^ew8Uyd#t7CT27_XaQ8yJV?z=hm4jw=e<{T@eCfOX#x=)J3WNc_1f zlG0$TWMal0o_g$L2u!%fe&Jxlm`&KqgIm1`WD-2d&JCy~81bygz3U0|>3g6{o7Sy$ z74(3)61~cr%0|Ubl&J?T16VC*(Up649uoz=78^!DL~9f9Y`0E@jT0)Bu(hl!$p%rd zN>vr%c1GkwG;8H?-&L@NuVM=-VEP8X+CEVyII{g_G5=L~Ti>sh5ZwO=(AY}G54anV zkO2|{^$I{xvq(%*I;^I-=Owv3FXg*6B%Wz_4}KcFD%6kjL-BQ8Y%9O|%C;D24NKWU z5)(3`lSd6i8^>{;^zqu!l6I;^6R~vS+ctjr-$GY)5om!FPot= z-2?jjJojsa&OUYNBUB{$^5DR1U(z{cqb=)Y&ncu18F4P!!HV|EWozIogRX6jx9qkC z-3?^Sn^9!3^Wd2^Yh%vZ0D>8JK{!4x-0N2}&Lcb%xaNNC9bcncnseM?_fc@N@pciZ z))O5~ktJF?zHiOU26T~Y0@u^85`@+2OG+|UNxV)ISn;*6m9nrDc*n&61ZjNFQM99l zeDMdlD4Z;Tw8>+4BBfSD&72RV(KtS9>pL{>GOo1U06`#3qFzF&njgtWfOLe@zqVTN-QBApN zFR6tZFg2>@u_^}GFrh}Uo_;>&9lxm|EvnM|(xkGmk78G&t&Tc6rs)5=`NY~zCAlo;wI_UUtSkN0|7 z>yKzmpVkX>)zM{~LkO?EFZ%H!EYYFNhksG!r)nQN@rYRzPdPm~g6_*}z@eO}d=pySy&6A)dT+zn?y5^~wSCwysmEJ0s zbRI@DmadPx@&EQ)0J!2~oSC5Qt25B*ey%-J&C8YV6$g<1ez@#YDy9O{kBYG8&0EtP z%2wT7H=M0FW_{mEJAg$cbM%G1GIeNH~Xlr^&c!1qg<5L;1QKg62Ipm zAq^D|MoX0N2ZLv7pDN{Wz3W^u`J^FbMRy)5hKvCZz5H}Vm~Ho{B}A%ZG6NINWpA|I zwY7|bP5BtamYgBgqT62@`X%CPoI3=18`{%d%qe-yFD)d3cPp%Y8iLdZG~H5dvHvL1 z0`Btor_Sp~9@Nt1!E1v=Vex0J==owb_eu*D|eqN+u(GKp`Qp=|>OHAOsf5u8Y; zlagG;6&aSfi#-z5*jM~FHRAiS(=dfZfojey=z2NGFZJSuXtU9YKaB0Wq~GtnN=CQ_ z1?lZCg{5~Gt{>i!Q431(WWLTKQoibjE@dwq(h(oi?%qMl7i?Fba-87P_}=qdi+S)i z#B5g$S3UbfJD||t`PRFJYzdRQa5zh!eNjUNeg^j_fx%FHCBpG6Ci3$HyMbVs#bY45 zUC((0o=vG)1^4`7Y01>K1vON}s3$*$CRR-$2}5EKW%MM{8YRFaN;B;&fz;)xD#%&+ zY_FlprQc>^Y6FME8noAoWFt~^0vCaF_OF_RlWOyW2;79^ zC#=f?6+(K{QujZUsFI=As|~2QDmFh}X=forIgcRPS9j*uFOzU);^( z`&fd|V2`B6%CE(o!^NGTlN6*QX{bvkbN>SbIfSc>_c`ZJ_BtE2o4`NIP5nKjB*nKL z5w{`^E?I`wzO2a~=Sm@p_M`~b5u9u#1yhUGRuO;=-&oh8Ty8&-Nr#5pka+czo2X{s zKr^JjtgP+@&x5%{A2J3ZjuR#t{d2S9k~~Ff=Ng&A1``gO2;4+~!d&PpeLvgNuoSce z;P=H!Zs*wb;f8(rWI~N^KVyP(|3+=krwOCD2+bw&CvhpaoXJ%4WQz89HtPgb}MSEjPmQrNe=UccB@b~E{FUooRg}yo!E(r=vI85xqqNC8S zfs6wv6m$VY?`eFWoG8r68CO$Hl#R;*+!$Yw2-ZESC{+O{`-L*9#A4L_jz(Q?&D7KKgip?-7xYmx zrr!@x?;m^VWhhkc>~@l2xbA1AMNB(8D__?p#2h~+3S7o3t!zFCBJ}I(4VbX$+Z3Vk zwU}wzPJKbm6z9@va7IKtX=~M^TIGiG&j_)oy#8s<=mcco^`*h|Y_RBreP^3YpuJ1d z)3O?>vE8lX}U%Ka92Y!%A^eS-MtzVZAe;~lMNfu2AwW``>`}qcjl5cz0JAvW$0Mr*(LjTPu;{l&_xA{tIs*HDN#QGi@{4!K9*HRhKM}37 zG*Y|k9*uC8uX`d~vgp{&2@G?xv4zf5M8c-0A}%Ir9~o5+y!7Q5dJP*GbS=qsqw{u{ zoN~c9ozM4?;|kliE9;biO+8dBd}bTtWITN^V9!&~E zMM}?E;VU1Kst`{yvZ0-D?pfoW_VIE*S8c>obiC0q!P{Df%=G*PIW-r@tzg~ZOvCZC zv;sU)3twd#)C+ia|8{3~#W{{Io>MXBavW&zj!9%W_IvqT{SGo+?OEM;ea>i5+kE*# zX}P@8uHZyw`p4YXlC2QLD31;@s`_Zz;WF^(^cT{^AHi?R8CMr1_&PjHx$Q{>Z^06l z&}7=AX)1QbK$uYf12*5JyB@u{9y;IUnx@k8F9IeU%0KwBKKpg@z0XpChY%P9ycJl%tr6*pDw*X@psMqc8TL$8k4+uecIm&d#+BZ{jHDT%mgepthl7paOcFa9GJ2xXC z$mP7f6csL|z_E%!_l#80*BaR5Ex=nN>q?K+r zJTfZ!<~e&%!4dxKfv^IwKWN2iA80>RVL7Ut_3Wqt8G;43OVp8!ue;4rKZUki=7r9T zd+1!EaSAUhyzTGjI9zfTO;*8YUU!#9UBDqOC5uL2E;hqc z1@h~_Q!z~rD1AUwHkOp&%eq3E^1|D$Q6X{-ep3-7Za1$(VUqcbH{9w9BPRmTqpBM{ zJYu8rTS-k}A#%bHy9}c1+A`x|_JKCsjWs&{+-$uKTw<)%uL{d~DP*&JV!V6@p6i>A z&MvvE2NH0A-cqEYPj=ELDP%)ER2rM}Fi||tbMZu=qEQwwSi}ZGHU2*VM|al63ROP6 zGOUF(#e5cav;=dF$gJiE>1QUg9BIzTb*N|lJWy!Jxm+s{Edf?_0B%|LTarH^ri$`r zah|FGIR_2jULv?h>paBp!h`SkyzCx}sOxH=pI`hJPeO7?%Z5G+#D$GA?w{x%R}Ltz z0*(Kv`TlR!MXwiT{uYl@=1bVt$r3s5&Su9J?Ktn?h++(S-hwsp)M;FOVz`KuXhQGOPG?T%dqg8>+vs51LdGJT zg0Bl!`cl=w#X~}m3n&v&uz$Oj%mX+xW^|%;=%yf?Qv-$;!^STHQMVu`YCN& zv}X!XoZ@klYO`g?R@XMz4;f~bB>Y+AYY@^D=$ci@OR99alz3l{Gq0vz`jhV5{E)6t z2;JB(&S&L`iPk<`cx`&!ZUQG4Ea;qs?S9)~Az5U!G3hgU-6pDB{R?L8`8U?5TCWT0 zM2t}#2DB*30EAo56wI5oXD{T#==PF4)ox6Qxl_+965N0lF`9f$%m0HGlVF@1CnvXvrc~EHt_f4e zt6@It@2Pv>vnpZ<45<(oKdbvcLjnyN4)|-b*-m zp?&#A?-HZ1y@FF-*J1}xME=?q=*Z+$8%M|o@cbdHp|KkhtjgF5-l_hgXun=^3{{2P zj^oBP5b>7VyQds0K<}jjHe;vujEGw%`R1TrthmAH%z`X-KVbQCDEgZ%!$p&_Ew~i8TGYu z&2l&mzhOyheAn&+VM#LwpAlO>qXbUJQ?-x+-BBK42$eE3Zw1d^4rSiP@5=0~P_%Ja z>P(t`k(k%b`Jz6Ps4V6o6KbLFPbTh;qX}X`gN0Zg@`;t7rMkdGs-O$IV%e0XyMB3!ZAa0!y=0*9MTy@m zaL>=mpCjfJAY1;ws|3#6nvM3P2RGm-rGdNU(Dv*kehheA*OZObCk5_fHou%;uNo_K zl}58c|HL}zo`#!`+z)g1G4TnoU)qka7}D|}!SDOULZ;Qc?{>*bFaT4rlPu3kOiHWr&*J~}YG=A>2LF8@4kz~ zroo?D3$^v>PH54M%ehP|JVgShKO9^*HqQALEL-#@cnGc@`psMrft-8Aa%V-ZRmZhz zH9cF#PNGm-rL%x%_m{dw_UQ(QnM^b4MO2reF8{m@84 zQ~bk4&U8gq{l&}YRxb_|{pvtI34f(0J9v5A!=W4O;2}7B=r`ii0Mo1P`)i-@)4(&~ z#FC$#_33tK(VfP&*gn1Wzbv%z)@qm>xHhia>A@OD{x+~W#XC-AHwhi^5S%>ZuSIAI z{*{x%VHDy$)A#(sAqnmIm!*(gz}8=RVlliwwhDifnr)YjS355hm$>`dHJw4V~$L$7TGafZUjPtO80yzY>i+GyO?S3+rWx#3lYO_rv;Xv@ zV4x?ZoGon$4Jqp*C;x$r=BgI;&8$y12ef=SX7dlN&e2-IWdQVQIQ~5KA6TNxPlG=D zu8G%Lm_`1U7A`BSx*cEjU~;p1;IAdvYBXnboShamek(~<0)ioi@z48n|1Ud&{(W~p zig0tP@6~s$VxG%y0s@+y@7CjrlJ-|$*MMKSJ>k-?*u!0d({s8kYdoM(_Iq5@!@;W( z>Gon{32Ls-sl4qNA50ZHm>}hH_QemcCc~Ggn6+Cl16t)gr6l7gmLb0Y7OblL<&Iwb zRF61jRta{pwKC#_CuJjsIwuk?P(!xHGB&G`=Nj@C)Rq0@OHU{ckd?=%t^*zZS6?N=qiv= zlZh48Tr?8TJmE64l}&_W6G;kd|1s6d=svH`tN;1M(e~&0ph=yS?BSQ5k(#Z!46>F1 zk>Wn4OTX$Icg#gx@7rv+_F&nVGPD>nO$Vqq@Nj3owLZj!DIJGR&g(r;nwXtyQK#e) zxEUzjvfG^?T@hnOU+vuSQOTcynnoWsh-Hi$IKNEQrz@+7J&_QvdDg(TZUG_-yUD?9 zZ9;F>SYkny03uRt%zzYRzp%iz3=(~EIB^-iJ>VIfD=`u@aysA@=Sx13%b3F%`_b7y~xjod)_6w`oK*6?n0)QTc> z1!5xO$6O*S#OXt79+VW_Q}djB-H$WRq5oNAP+440fT^eSs)fsYrXp6(c^xtO@Lc~S z9f+koW_o@Z_^5cU@>Xz-9Bs=PJ-aeove!l}&hc?#7A2`>g21&vjy+k(2Sulp)XCig zem_W3W?wS6be%Do=VmjffJm0}DoTIm>aD1jNBCNCq<~nNpT)1rjQf1iZp%NgLfb8} zaz0ioXBH3`J}4=QgX$dU5`Bnl6Q-T-PL=Hq?%)3rmh!~tQ6$I9#mEUCz1rBTTM;i> zk1B@sVvX2}PA!Q@y)_u0FSNPC&4}T*oQ#Hy3uHeDbUzlc=e|fd1}k~r=rEF7fID;{ z^4LA~853(AOv|A>$}u`AbcoHlDJX?n4mU;RDafG$h`Xd7TE@y?!)Q@CoR4Kd;q2i0iiGvd3X3DPa(S}6_kdjB%?pT-wWfr%<%KQgPF-5IgH^sy6%eNX-kCjq}LYc ze9+83gI=APwy!>p>CabZaYw`_wp!HOci&PNq{r7`4=lDE=n&D|`ksLkQ^1Q|Uhph+@C%$2Dy8rVUSyQsBD#FEK=)7|?6uYjtSWY;9|^q29gI)eSGr`cieD`45Xfe!2zf+~Xkv96 z{QmXfeM4cVuF~}~m@nLI0`qI_+g#SCa1G1S)RNf$t?{aS=ao2>yb?aeMvAZLb+EU5uld5<1!Tc$+ zd#7$4i}@~@7i|`M-(Fd8%bjL>zRZ0m@4l|2=L&nU^>A^h0_67$bQz_2e64kF4W1%1 znyI737-u;}psMI2dlHC1X@!Xq5-7b}&*x2<1;;p59(30tY7n??%&BB})ZKORHVmN4 z`!SuK3Hi-6i09zgt{;f-k&kAH>J?M^wKDrPdB$(k8MNhVN!?E4WS;C4mCLM6AS@Bh zJfVQJGSpYU>=!$4mF<)0e9;G|I_&3aB7c_ENH1EXZB$j9da?w>DGGn|g-_;&;T|-C z55`@k_#zdbR(eJ}>DdVM<>XUWD}VlygDufpDx^%!%ZL}Y*t+{f?b)}!SQeNXZouh2 zOGs3+FodbQ^ZRpzRORyo*DVcM_C2Hs+6lf$_f15FPmbe_K%sfX{Ka}=%JH(jHYBBg zwDv&{)|PD>2WP`xd(|6LjF?H5`vxjyt~z>0j%Z}k#Eb`? z%h8@d#x)q_iXH@NSVd zq`reC>MAVdYbo7k8BP0^Ce-Dt^FGiy?}fhWxA#)Ol+#8q4#R{Kj(z~1Mly(}kZYE~WCTlt1K*bhknKgB6 z=yqtVQ4;#avtbn_M?vj0RoULh5wA+*$#mW<`FB#fdQ;>*5{sgDfa4mGvZX8WVa*bF zNk>n#?~_eY3ea|sTbqoCQpom#duVgt8tIER+`VjvpC}31E1z@N>=oGnTLGQ$;Zv)Z z%|XW|Ae*04qOBNI7%m89j~Q>Jl^8KdVBJ7*xy;R3;&tgB9-X;ovNF@@87^Na{*Qu} z|Ka}_{BMOo|KG7>2o-dvv)}rT0c>&C7F_*%7J!%o7RQ(V%b(j|yEI*nvU=z3@}9M0 zN9AT?x`PkaUM~i+mW^yk+;3-OZ8{HD=2={{fc^Ml+Ah$7GZY-#dM=;+nR+b4*c@jt zO?;piANcVNfL-}Q;>f8QR7$+5(zvlzbI?yc>rEyj)gSj>^{Hw=GoOg2TH7Q}?sLsd zbZ3&7;*n$(o_EokbYVAX?-~RA0dq>U;#r!y;I9(L{^3gU4t3JVVYhaN0ap*Uyn9})D$jZG|Zwnkg6{0r2S4^1FNeos5}*Jvo*nCAEuVSW6fpN zHKJ61$E#pcYmojWxoP=VrK~pAP;cNZPT=nan3N?THVbdr({RSW`SpijpmhO&BUhY4tiUL&3k?t%OBxRxhO?U<-SLd0K1hljKJng<`pEAmL4%FHX3+v zZwW~V1N^l)8rJc+x!w_jT;5vTKG1&|O0AlsMg< z^AwqNW2Maqmet)A@6I%($6FwixnW?3FOLEwWg+B?B80ot#V=G}_Y&igM)s{11`eGV zracsLMB69?q%(vCu+a>jOt5O49)gZccHGdI_w{d6^gFiN&L}7JpoU9BiNmW5I}$$|DioD=g=aaq!c~yuZlHR4;@) zYwMz*645-o`Ca!Q$_b+X^Ys)}9f5{u@A@Omxi&x@5|#Neh!YfDZylP`HeX1+=3{1F zVWd?G%e~kw-?fkZ_&O191&d9l*T??b@@g-y(Y<~taZQY$qIcbiPa^vT6L&7J$h?;L zT0Llr%;SBflNj`wgO+>MPS<$2`m=V&E!KoMhgTsBZ|$5m=~cAHUo#-*;lcd+>zt++ z*YBIfvof7~iJ#cJm(y&5&c;4{{r*DRmCdX{>fV3d947tFTCVuDrtu2r=4%sQO_sl~ zuPbAX>=|zShnv99AA#@l_#4E`kk%D>=TI6G!?X5C9zuIw5?H#A{%6V_uIVCg!0J*n@>i_@% literal 38411 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 YL@%@fwVVYLv?tozvdi^_gBD+OxilNOl* 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 RocketsArtifact Copynet-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestnet-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifest \ No newline at end of file diff --git a/media/net-monitor-graph.svg b/media/net-monitor-graph.svg new file mode 100644 index 0000000..d3de31f --- /dev/null +++ b/media/net-monitor-graph.svg @@ -0,0 +1 @@ +net-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestwabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2SBoMDocumentsbom[blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: example.sbom.v0wabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2 \ No newline at end of file diff --git a/media/net-monitor-image.svg b/media/net-monitor-image.svg new file mode 100644 index 0000000..9c36d03 --- /dev/null +++ b/media/net-monitor-image.svg @@ -0,0 +1 @@ +net-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifest \ No newline at end of file diff --git a/media/net-monitor-sbom-signature.svg b/media/net-monitor-sbom-signature.svg new file mode 100644 index 0000000..8a8b7f9 --- /dev/null +++ b/media/net-monitor-sbom-signature.svg @@ -0,0 +1 @@ +wabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2SBoMDocumentsbom[blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: example.sbom.v0 \ No newline at end of file diff --git a/media/net-monitor-sbom.svg b/media/net-monitor-sbom.svg new file mode 100644 index 0000000..2bfd764 --- /dev/null +++ b/media/net-monitor-sbom.svg @@ -0,0 +1 @@ +net-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestSBoMDocumentsbom[blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: example.sbom.v0 \ No newline at end of file diff --git a/media/net-monitor-with-sigs-copy.svg b/media/net-monitor-with-sigs-copy.svg new file mode 100644 index 0000000..9ee5f27 --- /dev/null +++ b/media/net-monitor-with-sigs-copy.svg @@ -0,0 +1 @@ +Artifact CopyACME Rocketsnet-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestwabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2SBoMDocumentsbom[blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: example.sbom.v0wabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2net-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestwabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2SBoMDocumentsbom[blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: example.sbom.v0wabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2 \ No newline at end of file diff --git a/media/notaryv2-signature.svg b/media/notaryv2-signature.svg new file mode 100644 index 0000000..b9e8913 --- /dev/null +++ b/media/notaryv2-signature.svg @@ -0,0 +1 @@ +net-monitor:v1layer1 (blob)layer2 (blob)config (blob)mediaType: oci.image.manifestwabbit-networks signaturesignature [blobs]reference (subjectManifest)mediaType: oci.artifact.manifest.v1artifactType: cncf.notary.v2 \ No newline at end of file diff --git a/media/repo-listing-attributed-expanded.svg b/media/repo-listing-attributed-expanded.svg new file mode 100644 index 0000000..19f8603 --- /dev/null +++ b/media/repo-listing-attributed-expanded.svg @@ -0,0 +1 @@ +v1chart-v1Tag countManifest countLast updated dateRepositorynet-monitor5/14/2021, 2:43 PM PDT26Tags8ac803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c222SBoM7a781a3930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c1aea0cfb27fd41ea0405d3095880c1efa45710f5bcdddb7d7d5a7317ad4825ae1473c803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c333 \ No newline at end of file diff --git a/media/repo-listing-attributed.svg b/media/repo-listing-attributed.svg new file mode 100644 index 0000000..2fda9fd --- /dev/null +++ b/media/repo-listing-attributed.svg @@ -0,0 +1 @@ +v1chart-v1Tag countManifest countLast updated dateRepositorynet-monitor5/14/2021, 2:43 PM PDT26TagsSBoM \ No newline at end of file diff --git a/media/repo-listing-flat.svg b/media/repo-listing-flat.svg new file mode 100644 index 0000000..4bec0b2 --- /dev/null +++ b/media/repo-listing-flat.svg @@ -0,0 +1 @@ +v1SBoM8ac803930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c2227a781a3930ea3ba1e54bc25c2bdc53edd0284c62ed651fe7b00369da519a3c1aea0cfb27fd41ea0405d3095880c1efa45710f5bcdddb7d7d5a7317ad4825ae14chart-v1ea0cfb27fd41ea0405d3095880c1efa45710f5bcdddb7d7d5a7317ad4825ae14Tag countManifest countLast updated dateRepositorynet-monitor5/14/2021, 2:43 PM PDT26Tags \ No newline at end of file