Spracherkennung für: .proto vermutete Sprache: Masm {Masm[75] C[66] Corba[66]} [Methode: maximale Elemente, drei Dimensionen]
// Copyright (C)
2023 The Android Open Source Project
//
// Licensed under the Apache License,
Version 2.
0 (the
"License")
;
// you may not use
this file except in compliance with the License.
// You may obtain a copy of the License at
//
//
http://www.apache.org/licenses/LICENSE-
2.
0
//
// Unless required by applicable law
or agreed to in writing, software
// distributed under the License is distributed on an
"AS IS" BASIS,
// WITHOUT WARRANTIES
OR CONDITIONS OF ANY KIND, either express
or implied.
// See the License
for the specific language governing permissions
and
// limitations under the License.
syntax =
"proto2";
package metadata_file
;
//
Proto definition of METADATA files of packages in AOSP codebase.
message Metadata {
// Name of the package.
optional
string name =
1;
// A
short description (a few lines) of the package.
// Example:
"Handles location lookups, throttling, batching, etc."
optional
string description =
2;
// Specifies additional
data about third-party packages.
optional ThirdParty third_party =
3;
}
message ThirdParty {
// URL(s) associated with the package.
//
// At a minimum, all packages must specify a URL which identifies where it
// came from, containing a type of: ARCHIVE, GIT
or OTHER. Typically,
// a package should contain only a single URL from these types. Occasionally,
// a package may be broken across multiple archive files
for whatever reason,
// in which case having multiple ARCHIVE URLs is okay. However,
this should
// not be used to combine different logical packages that are versioned
and
// possibly licensed differently.
repeated URL url =
1;
// The package
version. In order of preference,
this should contain:
// -
If the package comes from Git
or another source control system,
// a specific tag
or revision in source control, such as
"r123" or
//
"58e27d2".
This MUST NOT be a mutable ref such as a branch name.
// - a released package
version such as
"1.0",
"2.3-beta", etc.
// - the
date the package was retrieved, formatted as
"As of YYYY-MM-DD".
optional
string version =
2;
// The
date of the change in which the package was last upgraded from
// upstream.
//
This should only identify package upgrades from upstream, not
local
// modifications.
This may identify the
date of either the original
or
// merged change.
//
// Note:
this is NOT the
date that
this version of the package was released
// externally.
optional
Date last_upgrade_date =
3;
// License type that identifies how the package may be used.
optional LicenseType license_type =
4;
// An additional note explaining the licensing of
this package.
This is most
// commonly used with commercial license.
optional
string license_note =
5;
// Description of
local changes that have been made to the package.
This does
// not need to (
and in most cases should not) attempt to
include an exhaustive
// list of all changes, but may instead direct readers to review the
local
// commit history, a collection of patch files, a separate README.md (
or
// similar) document, etc.
// Note: Use of
this field to store IDs of advisories fixed with a backported
// patch is deprecated, use
"security.mitigated_security_patch" instead.
optional
string local_modifications =
6;
// Security related metadata including risk category
and any special
// instructions
for using the package, as determined by an ISE-TPS review.
optional Security security =
7;
// The type of directory
this metadata represents.
optional DirectoryType type =
8 [default = PACKAGE]
;
// The homepage
for the package.
This will eventually replace
// `url { type: HOMEPAGE }`
optional
string homepage =
9;
// SBOM information of the package. It is mandatory
for prebuilt packages.
oneof sbom {
// Reference to external SBOM document provided as URL.
SBOMRef sbom_ref =
10;
}
// Identifiers
for the package.
repeated Identifier identifier =
11;
}
// URL associated with a third-party package.
message URL {
enum Type {
// The homepage
for the package.
For example,
"https://bazel.io/".
This URL
// is optional, but encouraged to help disambiguate similarly named packages
//
or to get more information about the package.
This is especially helpful
// when no other URLs provide human readable resources (such as git://
or
// sso:// URLs).
HOMEPAGE =
1;
// The URL of the archive containing the source
code for the package,
for
// example a zip
or tgz file.
ARCHIVE =
2;
// The URL of the upstream git repository
this package is retrieved from.
//
For example:
// -
https://github.com/git/git.git
// - git://git.kernel.
org/pub/scm/git/git.git
//
// Use of a git URL requires that the package
"version" value must specify a
// specific git tag
or revision.
GIT =
3;
// The URL of the upstream SVN repository
this package is retrieved from.
//
For example:
// -
http://llvm.org/svn/llvm-project/llvm/
//
// Use of an SVN URL requires that the package
"version" value must specify
// a specific SVN tag
or revision.
SVN =
4;
// The URL of the upstream mercurial repository
this package is retrieved
// from.
For example:
// -
https://mercurial-scm.org/repo/evolve
//
// Use of a mercurial URL requires that the package
"version" value must
// specify a specific tag
or revision.
HG =
5;
// The URL of the upstream darcs repository
this package is retrieved
// from.
For example:
// -
https://hub.darcs.net/hu.dwim/hu.dwim.util
//
// Use of a DARCS URL requires that the package
"version" value must
// specify a specific tag
or revision.
DARCS =
6;
PIPER =
7;
// A URL that does not fit any other type.
This may also indicate that the
// source
code was received via email
or some other out-of-band way.
This is
// most commonly used with commercial software received directly from the
// vendor. In the case of email, the URL value can be used to provide
// additional information about how it was received.
OTHER =
8;
// The URL identifying where the
local copy of the package source
code can
// be found.
//
// Typically, the metadata files describing a package reside in the same
// directory as the source
code for the package. In a few rare cases where
// they are separate, the LOCAL_SOURCE URL identifies where to find the
// source
code.
This only describes where to find the
local copy of the
// source
; there should always be an additional URL describing where the
// package was retrieved from.
//
// Examples:
// -
https://android.googlesource.com/platform/external/apache-http/
LOCAL_SOURCE =
9;
}
// The type of resource
this URL identifies.
optional Type type =
1;
// The actual URL value. URLs should be absolute
and start with
'http://' or
//
'https://' (
or occasionally
'git://' or 'ftp://' where appropriate).
optional
string value =
2;
}
// License type that identifies how the packages may be used.
enum LicenseType {
BY_EXCEPTION_ONLY =
1;
NOTICE =
2;
PERMISSIVE =
3;
RECIPROCAL =
4;
RESTRICTED_IF_STATICALLY_LINKED =
5;
RESTRICTED =
6;
UNENCUMBERED =
7;
}
// Identifies security related metadata including risk category
and any special
// instructions
for using the package.
message Security {
// Security risk category
for a package, as determined by an ISE-TPS review.
enum Category {
CATEGORY_UNSPECIFIED =
0;
// Package should only be used in a sandboxed environment.
// Package should have restricted visibility.
SANDBOXED_ONLY =
1;
// Package should not be used to process user content. It is considered
// safe to use to process trusted
data only. Package should have restricted
// visibility.
TRUSTED_DATA_ONLY =
2;
// Package is considered safe to use.
REVIEWED_AND_SECURE =
3;
}
// Identifies the security risk category
for the package.
This will be
// provided by the ISE-TPS team as the result of a security review of the
// package.
optional Category category =
1;
// An additional security note
for the package.
optional
string note =
2;
// Text tag to categorize the package. It
's currently used by security to:
// - to disable OSV (
https://osv.dev)
// support via the `OSV:disable` tag
// - to attach CPE to their corresponding packages,
for vulnerability
// monitoring:
//
// Please do document your usecase here should you want to
add one.
repeated
string tag =
3;
// ID of advisories fixed with a mitigated patch,
for example CVE-
2018-
1111.
repeated
string mitigated_security_patch =
4;
}
enum DirectoryType {
UNDEFINED =
0;
//
This directory represents a package.
PACKAGE =
1;
//
This directory is designed to organize multiple third-party PACKAGE
// directories.
GROUP =
2;
//
This directory contains several PACKAGE directories representing
// different versions of the same third-party project.
VERSIONS =
3;
}
// Represents a whole
or partial calendar
date, such as a birthday. The
time of
// day
and time zone are either specified elsewhere
or are insignificant. The
//
date is relative to the Gregorian Calendar.
This can represent one of the
// following:
//
// * A full
date, with non-
zero year, month,
and day values.
// * A month
and day, with a
zero year (
for example, an anniversary).
// * A year on its own, with a
zero month
and a
zero day.
// * A year
and month, with a
zero day (
for example, a credit card expiration
//
date).
message
Date {
// Year of the
date. Must be from
1 to
9999,
or 0 to specify a
date without
// a year.
optional int32 year =
1;
// Month of a year. Must be from
1 to
12,
or 0 to specify a year without a
// month
and day.
optional int32 month =
2;
// Day of a month. Must be from
1 to
31 and valid
for the year
and month,
or 0
// to specify a year by itself
or a year
and month where the day isn
't
// significant.
optional int32 day =
3;
}
// Reference to external SBOM document
and element corresponding to the package.
// See
https://spdx.github.io/spdx-spec/v2.3/document-creation-information/#
66-ext
ernal-document-references-field
message SBOMRef {
// The URL that points to the SBOM document of the upstream package of this
// third_party package.
optional string url = 1;
// Checksum of the SBOM document the url field points to.
// Format: e.g. SHA1:<checksum>, or any algorithm defined in
// https://spdx.github.io/spdx-spec/v2.3/file-information/#8.4
optional string checksum = 2;
// SPDXID of the upstream package/file defined in the SBOM document the url field points to.
// Format: SPDXRef-[a-zA-Z0-9.-]+, see
// https://spdx.github.io/spdx-spec/v2.3/package-information/#72-package-spdx-identifier-field or
// https://spdx.github.io/spdx-spec/v2.3/file-information/#82-file-spdx-identifier-field
optional string element_id = 3;
}
// Identifier for a third-party package.
// See go/tp-metadata-id.
message Identifier {
// The type of the identifier. Either an "ecosystem" value from
// https://ossf.github.io/osv-schema/#affectedpackage-field such as "Go",
// "npm" or "PyPI". The "value" and "version" fields follow the same rules as
// defined in the OSV spec.
// Or one of:
// - "Git": The "value" field is the URL of the upstream git repository this
// package is retrieved from.
// For example:
// - https://github.com/git/git
// - git://git.kernel.org/pub/scm/git/git
//
// Use of a git URL requires that the package "version" value must specify a
// specific git tag or revision. This must not be a branch name.
//
// - "SVN": The "value" field is the URL of the upstream SVN repository this
// package is retrieved from.
// For example:
// - http://llvm.org/svn/llvm-project/llvm/
//
// Use of an SVN URL requires that the package "version" value must specify
// a specific SVN tag or revision. This must not be a branch name.
//
// - "Hg": The "value" field is the URL of the upstream mercurial repository
// this package is retrieved from.
// For example:
// - https://mercurial-scm.org/repo/evolve
//
// Use of a mercurial URL requires that the package "version" value must
// specify a specific tag or revision. This must not be a branch name.
//
// - "Darcs": the "value" field is the URL of the upstream darcs repository
// this package is retrieved from.
// For example:
// - https://hub.darcs.net/hu.dwim/hu.dwim.util
//
// Use of a Darcs URL requires that the package "version" value must
// specify a specific tag or revision. This must not be a branch name.
//
// - "Piper": The "value" field is the URL of the upstream piper location.
// This is primarily used when a package is being migrated into third_party
// from elsewhere in Piper, or when a package is being newly developed in
// third_party.
//
// - "VCS": This is a generic fallback for an unlisted VCS system. The
// "value" field is the URL of the repository for this VCS.
//
// - "Archive": The "value" field is the URL of the archive containing the
// source code for the package, for example a zip or tgz file.
//
// - "PrebuiltByAlphabet": This type should be used for archives of primarily
// Google-owned source code (may contain non-Google-owned dependencies),
// which has been built using production Google infrastructure, and copied
// into Android. The "value" field is the URL of the prebuilt artifact or
// the relative path of the artifact to the root of a package.
// Example:
// identifier {
// type: "PrebuiltByAlphabet",
// version: "1",
// value: "v1/arm84_hdpi.apk",
// }
// identifier {
// type: "PrebuiltByAlphabet",
// version: "2",
// value: "v2/x86_64_xhdpi.apk",
// }
//
// - "LocalSource": The "value" field is the URL identifying where the local
// copy of the package source code can be found.
// Examples:
// - https://android.googlesource.com/platform/external/apache-http/
//
// Typically, the metadata files describing a package reside in the same
// directory as the source code for the package. In a few rare cases where
// they are separate, the LocalSource URL identifies where to find the
// source code. This only describes where to find the local copy of the
// source; there should always be an additional URL describing where the
// package was retrieved from.
//
// - "Other": An identifier that does not fit any other type. This may also
// indicate that the Source code was received via email or some other
// out-of-band way. This is most commonly used with commercial software
// received directly from the Vendor. In the case of email, the "value" field
// can be used to provide additional information about how it was received.
optional string type = 1;
// A human readable string to indicate why a third-package package does not
// have this identifier type set.
// Example:
// identifier {
// type: "PyPI"
// omission_reason: "Only on Git. Not published to PyPI."
// }
optional string omission_reason = 2;
// The value of the package identifier as defined by the "type".
// Example:
// identifier {
// type: "PyPI"
// value: "django"
// version: "3.2.8"
// }
optional string value = 3;
// The version associated with this package as defined by the "type".
// Example:
// identifier {
// type: "PyPI"
// value: "django"
// version: "3.2.8"
// }
optional string version = 4;
// The closest version associated with this package as defined by the "type".
// This should only be set by automated infrastructure by applying automated
// heuristics, such as the closest git tag or package version from a package
// manifest file (e.g. pom.xml).
//
// For most identifier types, only one of `version` or `closest_version`
// should be set (not both). The exception is source repository types such as
// "Git", where `version` will refer to a git commit, and `closest_version`
// refers to a git tag.
// Example:
// identifier {
// type: "Git",
// value: "https://github.com/my/repo"
// version: "e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e"
// closest_version: "v1.4"
// }
optional string closest_version = 5;
// When `true`, this Identifier represents the location from which the source
// code for this package was originally obtained. This should only be set for
// *one* Identifier in a third_party package's METADATA.
// For external packages, this is typically for the Identifier associated
// with the version control system or package manager that was used to
// check out or download the code.
optional bool primary_source = 6;
}