diff --git a/protos/grafeas/v1/common.proto b/protos/grafeas/v1/common.proto index 29a6663..80bd786 100644 --- a/protos/grafeas/v1/common.proto +++ b/protos/grafeas/v1/common.proto @@ -119,3 +119,32 @@ message EnvelopeSignature { bytes sig = 1; string keyid = 2; } + +// Indicates the location at which a package was found. +message FileLocation { + // For jars that are contained inside .war files, this filepath + // can indicate the path to war file combined with the path to jar file. + string file_path = 1; +} + +// License information. +message License { + // Often a single license can be used to represent the licensing terms. + // Sometimes it is necessary to include a choice of one or more licenses + // or some combination of license identifiers. + // Examples: "LGPL-2.1-only OR MIT", "LGPL-2.1-only AND MIT", + // "GPL-2.0-or-later WITH Bison-exception-2.2". + string expression = 1; + + // Comments + string comments = 2; +} + +// Digest information. +message Digest { + // `SHA1`, `SHA512` etc. + string algo = 1; + + // Value of the digest. + bytes digest_bytes = 2; +} diff --git a/protos/grafeas/v1/compliance.proto b/protos/grafeas/v1/compliance.proto index 7913151..688fa82 100644 --- a/protos/grafeas/v1/compliance.proto +++ b/protos/grafeas/v1/compliance.proto @@ -52,6 +52,9 @@ message ComplianceVersion { // The CPE URI (https://cpe.mitre.org/specification/) this benchmark is // applicable to. string cpe_uri = 1; + // The name of the document that defines this benchmark, e.g. "CIS + // Container-Optimized OS". + string benchmark_document = 3; // The version of the benchmark. This is set to the version of the OS-specific // CIS document the benchmark is defined in. string version = 2; diff --git a/protos/grafeas/v1/cvss.proto b/protos/grafeas/v1/cvss.proto index c82b3d1..ab7e2b8 100644 --- a/protos/grafeas/v1/cvss.proto +++ b/protos/grafeas/v1/cvss.proto @@ -19,8 +19,8 @@ package grafeas.v1; option go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas"; option java_multiple_files = true; option java_package = "io.grafeas.v1"; -option java_outer_classname = "CvssProto"; option objc_class_prefix = "GRA"; +option java_outer_classname = "CVSSProto"; // Common Vulnerability Scoring System version 3. // For details, see https://www.first.org/cvss/specification-document @@ -87,10 +87,8 @@ message CVSSv3 { // Common Vulnerability Scoring System. // For details, see https://www.first.org/cvss/specification-document -// This is a message we will try to use for storing multiple versions of -// CVSS. The intention is that as new versions of CVSS scores get added, we -// will be able to modify this message rather than adding new protos for each -// new version of the score. +// This is a message we will try to use for storing various versions of CVSS +// rather than making a separate proto for storing a specific version. message CVSS { // The base score is a function of the base metric scores. float base_score = 1; diff --git a/protos/grafeas/v1/dsse_attestation.proto b/protos/grafeas/v1/dsse_attestation.proto index 0264ab9..34ba3df 100644 --- a/protos/grafeas/v1/dsse_attestation.proto +++ b/protos/grafeas/v1/dsse_attestation.proto @@ -49,4 +49,4 @@ message DSSEAttestationOccurrence { oneof decoded_payload { InTotoStatement statement = 2; } -} \ No newline at end of file +} diff --git a/protos/grafeas/v1/intoto_statement.proto b/protos/grafeas/v1/intoto_statement.proto index 9e4067c..1f798d0 100644 --- a/protos/grafeas/v1/intoto_statement.proto +++ b/protos/grafeas/v1/intoto_statement.proto @@ -18,6 +18,7 @@ package grafeas.v1; import "grafeas/v1/intoto_provenance.proto"; import "grafeas/v1/slsa_provenance.proto"; +import "grafeas/v1/slsa_provenance_zero_two.proto"; option go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas"; option java_multiple_files = true; @@ -38,6 +39,7 @@ message InTotoStatement { oneof predicate { InTotoProvenance provenance = 4; SlsaProvenance slsa_provenance = 5; + SlsaProvenanceZeroTwo slsa_provenance_zero_two = 6; } } message Subject { diff --git a/protos/grafeas/v1/package.proto b/protos/grafeas/v1/package.proto index 078c88c..61b21db 100644 --- a/protos/grafeas/v1/package.proto +++ b/protos/grafeas/v1/package.proto @@ -16,6 +16,9 @@ syntax = "proto3"; package grafeas.v1; +import "google/api/field_behavior.proto"; +import "grafeas/v1/common.proto"; + option go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas"; option java_multiple_files = true; option java_package = "io.grafeas.v1"; @@ -34,9 +37,9 @@ enum Architecture { // This represents a particular channel of distribution for a given package. // E.g., Debian's jessie-backports dpkg mirror. message Distribution { - // Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) + // The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) // denoting the package manager version distributing a package. - string cpe_uri = 1; + string cpe_uri = 1 [(google.api.field_behavior) = REQUIRED]; // The CPU architecture for which packages in this distribution channel were // built. @@ -58,10 +61,11 @@ message Distribution { // An occurrence of a particular package installation found within a system's // filesystem. E.g., glibc was found in `/var/lib/dpkg/status`. message Location { - // Required. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) - // denoting the package manager version distributing a package. + // Deprecated. + // The CPE URI in [CPE format](https://cpe.mitre.org/specification/) string cpe_uri = 1; + // Deprecated. // The version installed at this location. Version version = 2; @@ -69,25 +73,81 @@ message Location { string path = 3; } -// This represents a particular package that is distributed over various -// channels. E.g., glibc (aka libc6) is distributed by many, at various -// versions. +// PackageNote represents a particular package version. message PackageNote { - // Required. Immutable. The name of the package. - string name = 1; + // The name of the package. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = IMMUTABLE + ]; + // Deprecated. // The various channels by which a package is distributed. repeated Distribution distribution = 10; + + // The type of package; whether native or non native (e.g., ruby gems, + // node.js packages, etc.). + string package_type = 11; + + // The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) + // denoting the package manager version distributing a package. + // The cpe_uri will be blank for language packages. + string cpe_uri = 12; + + // The CPU architecture for which packages in this distribution channel were + // built. Architecture will be blank for language packages. + Architecture architecture = 13; + + // The version of the package. + Version version = 14; + + // A freeform text denoting the maintainer of this package. + string maintainer = 15; + + // The homepage for this package. + string url = 16; + + // The description of this package. + string description = 17; + + // Licenses that have been declared by the authors of the package. + License license = 18; + + // Hash value, typically a file digest, that allows unique + // identification a specific package. + repeated Digest digest = 19; } // Details on how a particular software package was installed on a system. message PackageOccurrence { - // Output only. The name of the installed package. - string name = 1; + // The name of the installed package. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = OUTPUT_ONLY + ]; - // Required. All of the places within the filesystem versions of this package + // All of the places within the filesystem versions of this package // have been found. repeated Location location = 2; + + // The type of package; whether native or non native (e.g., ruby gems, + // node.js packages, etc.). + string package_type = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) + // denoting the package manager version distributing a package. + // The cpe_uri will be blank for language packages. + string cpe_uri = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The CPU architecture for which packages in this distribution channel were + // built. Architecture will be blank for language packages. + Architecture architecture = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Licenses that have been declared by the authors of the package. + License license = 6; + + // The version of the package. + Version version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Version contains structured information about the version of a package. diff --git a/protos/grafeas/v1/slsa_provenance.proto b/protos/grafeas/v1/slsa_provenance.proto index b585f0b..c038af0 100644 --- a/protos/grafeas/v1/slsa_provenance.proto +++ b/protos/grafeas/v1/slsa_provenance.proto @@ -23,6 +23,7 @@ option go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas"; option java_multiple_files = true; option java_package = "io.grafeas.v1"; option objc_class_prefix = "GRA"; +option java_outer_classname = "SlsaProvenanceProto"; message SlsaProvenance { // Steps taken to build the artifact. @@ -111,4 +112,4 @@ message SlsaProvenance { // incomplete unless metadata.completeness.materials is true. Unset or null is // equivalent to empty. repeated Material materials = 4; -} \ No newline at end of file +} diff --git a/protos/grafeas/v1/slsa_provenance_zero_two.proto b/protos/grafeas/v1/slsa_provenance_zero_two.proto new file mode 100644 index 0000000..11cdd1c --- /dev/null +++ b/protos/grafeas/v1/slsa_provenance_zero_two.proto @@ -0,0 +1,82 @@ +// Copyright 2021 The Grafeas Authors. All rights reserved. +// +// 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 = "proto3"; + +package grafeas.v1; + +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "google.golang.org/genproto/googleapis/grafeas/v1;grafeas"; +option java_multiple_files = true; +option java_package = "io.grafeas.v1"; +option objc_class_prefix = "GRA"; +option java_outer_classname = "SlsaProvenanceZeroTwoProto"; + +message SlsaProvenanceZeroTwo { + // See full explanation of fields at slsa.dev/provenance/v0.2. + + // Identifies the entity that executed the recipe, which is trusted to have + // correctly performed the operation and populated this provenance. + message SlsaBuilder { + string id = 1; + } + + // The collection of artifacts that influenced the build including sources, + // dependencies, build tools, base images, and so on. + message SlsaMaterial { + string uri = 1; + map digest = 2; + } + + // Identifies the event that kicked off the build. + message SlsaInvocation { + SlsaConfigSource config_source = 1; + google.protobuf.Struct parameters = 2; + google.protobuf.Struct environment = 3; + } + + // Describes where the config file that kicked off the build came from. + // This is effectively a pointer to the source where buildConfig came from. + message SlsaConfigSource { + string uri = 1; + map digest = 2; + string entry_point = 3; + } + + // Other properties of the build. + message SlsaMetadata { + string build_invocation_id = 1; + google.protobuf.Timestamp build_started_on = 2; + google.protobuf.Timestamp build_finished_on = 3; + SlsaCompleteness completeness = 4; + bool reproducible = 5; + } + + // Indicates that the builder claims certain fields in this message to be + // complete. + message SlsaCompleteness { + bool parameters = 1; + bool environment = 2; + bool materials = 3; + } + + SlsaBuilder builder = 1; + string build_type = 2; + SlsaInvocation invocation = 3; + google.protobuf.Struct build_config = 4; + SlsaMetadata metadata = 5; + repeated SlsaMaterial materials = 6; +} diff --git a/protos/grafeas/v1/vulnerability.proto b/protos/grafeas/v1/vulnerability.proto index 434e149..70ab550 100644 --- a/protos/grafeas/v1/vulnerability.proto +++ b/protos/grafeas/v1/vulnerability.proto @@ -209,6 +209,9 @@ message VulnerabilityOccurrence { // available. grafeas.v1.Severity effective_severity = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The location at which this package was found. + repeated FileLocation file_location = 10; } // Output only. A one sentence description of this vulnerability. diff --git a/protos/protos.d.ts b/protos/protos.d.ts index 9322e54..19e1461 100644 --- a/protos/protos.d.ts +++ b/protos/protos.d.ts @@ -9132,5 +9132,287 @@ export namespace grafeas { */ public toJSON(): { [k: string]: any }; } + + /** Properties of a FileLocation. */ + interface IFileLocation { + + /** FileLocation filePath */ + filePath?: (string|null); + } + + /** Represents a FileLocation. */ + class FileLocation implements IFileLocation { + + /** + * Constructs a new FileLocation. + * @param [properties] Properties to set + */ + constructor(properties?: grafeas.v1.IFileLocation); + + /** FileLocation filePath. */ + public filePath: string; + + /** + * Creates a new FileLocation instance using the specified properties. + * @param [properties] Properties to set + * @returns FileLocation instance + */ + public static create(properties?: grafeas.v1.IFileLocation): grafeas.v1.FileLocation; + + /** + * Encodes the specified FileLocation message. Does not implicitly {@link grafeas.v1.FileLocation.verify|verify} messages. + * @param message FileLocation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: grafeas.v1.IFileLocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileLocation message, length delimited. Does not implicitly {@link grafeas.v1.FileLocation.verify|verify} messages. + * @param message FileLocation message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: grafeas.v1.IFileLocation, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileLocation message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns FileLocation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): grafeas.v1.FileLocation; + + /** + * Decodes a FileLocation message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns FileLocation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): grafeas.v1.FileLocation; + + /** + * Verifies a FileLocation message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a FileLocation message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns FileLocation + */ + public static fromObject(object: { [k: string]: any }): grafeas.v1.FileLocation; + + /** + * Creates a plain object from a FileLocation message. Also converts values to other types if specified. + * @param message FileLocation + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: grafeas.v1.FileLocation, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this FileLocation to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a License. */ + interface ILicense { + + /** License expression */ + expression?: (string|null); + + /** License comments */ + comments?: (string|null); + } + + /** Represents a License. */ + class License implements ILicense { + + /** + * Constructs a new License. + * @param [properties] Properties to set + */ + constructor(properties?: grafeas.v1.ILicense); + + /** License expression. */ + public expression: string; + + /** License comments. */ + public comments: string; + + /** + * Creates a new License instance using the specified properties. + * @param [properties] Properties to set + * @returns License instance + */ + public static create(properties?: grafeas.v1.ILicense): grafeas.v1.License; + + /** + * Encodes the specified License message. Does not implicitly {@link grafeas.v1.License.verify|verify} messages. + * @param message License message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: grafeas.v1.ILicense, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified License message, length delimited. Does not implicitly {@link grafeas.v1.License.verify|verify} messages. + * @param message License message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: grafeas.v1.ILicense, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a License message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns License + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): grafeas.v1.License; + + /** + * Decodes a License message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns License + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): grafeas.v1.License; + + /** + * Verifies a License message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a License message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns License + */ + public static fromObject(object: { [k: string]: any }): grafeas.v1.License; + + /** + * Creates a plain object from a License message. Also converts values to other types if specified. + * @param message License + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: grafeas.v1.License, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this License to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Digest. */ + interface IDigest { + + /** Digest algo */ + algo?: (string|null); + + /** Digest digestBytes */ + digestBytes?: (Uint8Array|string|null); + } + + /** Represents a Digest. */ + class Digest implements IDigest { + + /** + * Constructs a new Digest. + * @param [properties] Properties to set + */ + constructor(properties?: grafeas.v1.IDigest); + + /** Digest algo. */ + public algo: string; + + /** Digest digestBytes. */ + public digestBytes: (Uint8Array|string); + + /** + * Creates a new Digest instance using the specified properties. + * @param [properties] Properties to set + * @returns Digest instance + */ + public static create(properties?: grafeas.v1.IDigest): grafeas.v1.Digest; + + /** + * Encodes the specified Digest message. Does not implicitly {@link grafeas.v1.Digest.verify|verify} messages. + * @param message Digest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: grafeas.v1.IDigest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Digest message, length delimited. Does not implicitly {@link grafeas.v1.Digest.verify|verify} messages. + * @param message Digest message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: grafeas.v1.IDigest, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Digest message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Digest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): grafeas.v1.Digest; + + /** + * Decodes a Digest message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Digest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): grafeas.v1.Digest; + + /** + * Verifies a Digest message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Digest message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Digest + */ + public static fromObject(object: { [k: string]: any }): grafeas.v1.Digest; + + /** + * Creates a plain object from a Digest message. Also converts values to other types if specified. + * @param message Digest + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: grafeas.v1.Digest, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Digest to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } } } diff --git a/protos/protos.js b/protos/protos.js index c567281..40617dd 100644 --- a/protos/protos.js +++ b/protos/protos.js @@ -23057,6 +23057,622 @@ return EnvelopeSignature; })(); + v1.FileLocation = (function() { + + /** + * Properties of a FileLocation. + * @memberof grafeas.v1 + * @interface IFileLocation + * @property {string|null} [filePath] FileLocation filePath + */ + + /** + * Constructs a new FileLocation. + * @memberof grafeas.v1 + * @classdesc Represents a FileLocation. + * @implements IFileLocation + * @constructor + * @param {grafeas.v1.IFileLocation=} [properties] Properties to set + */ + function FileLocation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileLocation filePath. + * @member {string} filePath + * @memberof grafeas.v1.FileLocation + * @instance + */ + FileLocation.prototype.filePath = ""; + + /** + * Creates a new FileLocation instance using the specified properties. + * @function create + * @memberof grafeas.v1.FileLocation + * @static + * @param {grafeas.v1.IFileLocation=} [properties] Properties to set + * @returns {grafeas.v1.FileLocation} FileLocation instance + */ + FileLocation.create = function create(properties) { + return new FileLocation(properties); + }; + + /** + * Encodes the specified FileLocation message. Does not implicitly {@link grafeas.v1.FileLocation.verify|verify} messages. + * @function encode + * @memberof grafeas.v1.FileLocation + * @static + * @param {grafeas.v1.IFileLocation} message FileLocation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileLocation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.filePath != null && Object.hasOwnProperty.call(message, "filePath")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.filePath); + return writer; + }; + + /** + * Encodes the specified FileLocation message, length delimited. Does not implicitly {@link grafeas.v1.FileLocation.verify|verify} messages. + * @function encodeDelimited + * @memberof grafeas.v1.FileLocation + * @static + * @param {grafeas.v1.IFileLocation} message FileLocation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileLocation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileLocation message from the specified reader or buffer. + * @function decode + * @memberof grafeas.v1.FileLocation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {grafeas.v1.FileLocation} FileLocation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileLocation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.grafeas.v1.FileLocation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.filePath = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileLocation message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof grafeas.v1.FileLocation + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {grafeas.v1.FileLocation} FileLocation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileLocation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileLocation message. + * @function verify + * @memberof grafeas.v1.FileLocation + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + FileLocation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.filePath != null && message.hasOwnProperty("filePath")) + if (!$util.isString(message.filePath)) + return "filePath: string expected"; + return null; + }; + + /** + * Creates a FileLocation message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof grafeas.v1.FileLocation + * @static + * @param {Object.} object Plain object + * @returns {grafeas.v1.FileLocation} FileLocation + */ + FileLocation.fromObject = function fromObject(object) { + if (object instanceof $root.grafeas.v1.FileLocation) + return object; + var message = new $root.grafeas.v1.FileLocation(); + if (object.filePath != null) + message.filePath = String(object.filePath); + return message; + }; + + /** + * Creates a plain object from a FileLocation message. Also converts values to other types if specified. + * @function toObject + * @memberof grafeas.v1.FileLocation + * @static + * @param {grafeas.v1.FileLocation} message FileLocation + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileLocation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.filePath = ""; + if (message.filePath != null && message.hasOwnProperty("filePath")) + object.filePath = message.filePath; + return object; + }; + + /** + * Converts this FileLocation to JSON. + * @function toJSON + * @memberof grafeas.v1.FileLocation + * @instance + * @returns {Object.} JSON object + */ + FileLocation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileLocation; + })(); + + v1.License = (function() { + + /** + * Properties of a License. + * @memberof grafeas.v1 + * @interface ILicense + * @property {string|null} [expression] License expression + * @property {string|null} [comments] License comments + */ + + /** + * Constructs a new License. + * @memberof grafeas.v1 + * @classdesc Represents a License. + * @implements ILicense + * @constructor + * @param {grafeas.v1.ILicense=} [properties] Properties to set + */ + function License(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * License expression. + * @member {string} expression + * @memberof grafeas.v1.License + * @instance + */ + License.prototype.expression = ""; + + /** + * License comments. + * @member {string} comments + * @memberof grafeas.v1.License + * @instance + */ + License.prototype.comments = ""; + + /** + * Creates a new License instance using the specified properties. + * @function create + * @memberof grafeas.v1.License + * @static + * @param {grafeas.v1.ILicense=} [properties] Properties to set + * @returns {grafeas.v1.License} License instance + */ + License.create = function create(properties) { + return new License(properties); + }; + + /** + * Encodes the specified License message. Does not implicitly {@link grafeas.v1.License.verify|verify} messages. + * @function encode + * @memberof grafeas.v1.License + * @static + * @param {grafeas.v1.ILicense} message License message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + License.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.expression != null && Object.hasOwnProperty.call(message, "expression")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.expression); + if (message.comments != null && Object.hasOwnProperty.call(message, "comments")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.comments); + return writer; + }; + + /** + * Encodes the specified License message, length delimited. Does not implicitly {@link grafeas.v1.License.verify|verify} messages. + * @function encodeDelimited + * @memberof grafeas.v1.License + * @static + * @param {grafeas.v1.ILicense} message License message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + License.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a License message from the specified reader or buffer. + * @function decode + * @memberof grafeas.v1.License + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {grafeas.v1.License} License + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + License.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.grafeas.v1.License(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.expression = reader.string(); + break; + case 2: + message.comments = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a License message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof grafeas.v1.License + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {grafeas.v1.License} License + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + License.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a License message. + * @function verify + * @memberof grafeas.v1.License + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + License.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.expression != null && message.hasOwnProperty("expression")) + if (!$util.isString(message.expression)) + return "expression: string expected"; + if (message.comments != null && message.hasOwnProperty("comments")) + if (!$util.isString(message.comments)) + return "comments: string expected"; + return null; + }; + + /** + * Creates a License message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof grafeas.v1.License + * @static + * @param {Object.} object Plain object + * @returns {grafeas.v1.License} License + */ + License.fromObject = function fromObject(object) { + if (object instanceof $root.grafeas.v1.License) + return object; + var message = new $root.grafeas.v1.License(); + if (object.expression != null) + message.expression = String(object.expression); + if (object.comments != null) + message.comments = String(object.comments); + return message; + }; + + /** + * Creates a plain object from a License message. Also converts values to other types if specified. + * @function toObject + * @memberof grafeas.v1.License + * @static + * @param {grafeas.v1.License} message License + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + License.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.expression = ""; + object.comments = ""; + } + if (message.expression != null && message.hasOwnProperty("expression")) + object.expression = message.expression; + if (message.comments != null && message.hasOwnProperty("comments")) + object.comments = message.comments; + return object; + }; + + /** + * Converts this License to JSON. + * @function toJSON + * @memberof grafeas.v1.License + * @instance + * @returns {Object.} JSON object + */ + License.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return License; + })(); + + v1.Digest = (function() { + + /** + * Properties of a Digest. + * @memberof grafeas.v1 + * @interface IDigest + * @property {string|null} [algo] Digest algo + * @property {Uint8Array|null} [digestBytes] Digest digestBytes + */ + + /** + * Constructs a new Digest. + * @memberof grafeas.v1 + * @classdesc Represents a Digest. + * @implements IDigest + * @constructor + * @param {grafeas.v1.IDigest=} [properties] Properties to set + */ + function Digest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Digest algo. + * @member {string} algo + * @memberof grafeas.v1.Digest + * @instance + */ + Digest.prototype.algo = ""; + + /** + * Digest digestBytes. + * @member {Uint8Array} digestBytes + * @memberof grafeas.v1.Digest + * @instance + */ + Digest.prototype.digestBytes = $util.newBuffer([]); + + /** + * Creates a new Digest instance using the specified properties. + * @function create + * @memberof grafeas.v1.Digest + * @static + * @param {grafeas.v1.IDigest=} [properties] Properties to set + * @returns {grafeas.v1.Digest} Digest instance + */ + Digest.create = function create(properties) { + return new Digest(properties); + }; + + /** + * Encodes the specified Digest message. Does not implicitly {@link grafeas.v1.Digest.verify|verify} messages. + * @function encode + * @memberof grafeas.v1.Digest + * @static + * @param {grafeas.v1.IDigest} message Digest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Digest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.algo != null && Object.hasOwnProperty.call(message, "algo")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.algo); + if (message.digestBytes != null && Object.hasOwnProperty.call(message, "digestBytes")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.digestBytes); + return writer; + }; + + /** + * Encodes the specified Digest message, length delimited. Does not implicitly {@link grafeas.v1.Digest.verify|verify} messages. + * @function encodeDelimited + * @memberof grafeas.v1.Digest + * @static + * @param {grafeas.v1.IDigest} message Digest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Digest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Digest message from the specified reader or buffer. + * @function decode + * @memberof grafeas.v1.Digest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {grafeas.v1.Digest} Digest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Digest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.grafeas.v1.Digest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.algo = reader.string(); + break; + case 2: + message.digestBytes = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Digest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof grafeas.v1.Digest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {grafeas.v1.Digest} Digest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Digest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Digest message. + * @function verify + * @memberof grafeas.v1.Digest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Digest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.algo != null && message.hasOwnProperty("algo")) + if (!$util.isString(message.algo)) + return "algo: string expected"; + if (message.digestBytes != null && message.hasOwnProperty("digestBytes")) + if (!(message.digestBytes && typeof message.digestBytes.length === "number" || $util.isString(message.digestBytes))) + return "digestBytes: buffer expected"; + return null; + }; + + /** + * Creates a Digest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof grafeas.v1.Digest + * @static + * @param {Object.} object Plain object + * @returns {grafeas.v1.Digest} Digest + */ + Digest.fromObject = function fromObject(object) { + if (object instanceof $root.grafeas.v1.Digest) + return object; + var message = new $root.grafeas.v1.Digest(); + if (object.algo != null) + message.algo = String(object.algo); + if (object.digestBytes != null) + if (typeof object.digestBytes === "string") + $util.base64.decode(object.digestBytes, message.digestBytes = $util.newBuffer($util.base64.length(object.digestBytes)), 0); + else if (object.digestBytes.length) + message.digestBytes = object.digestBytes; + return message; + }; + + /** + * Creates a plain object from a Digest message. Also converts values to other types if specified. + * @function toObject + * @memberof grafeas.v1.Digest + * @static + * @param {grafeas.v1.Digest} message Digest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Digest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.algo = ""; + if (options.bytes === String) + object.digestBytes = ""; + else { + object.digestBytes = []; + if (options.bytes !== Array) + object.digestBytes = $util.newBuffer(object.digestBytes); + } + } + if (message.algo != null && message.hasOwnProperty("algo")) + object.algo = message.algo; + if (message.digestBytes != null && message.hasOwnProperty("digestBytes")) + object.digestBytes = options.bytes === String ? $util.base64.encode(message.digestBytes, 0, message.digestBytes.length) : options.bytes === Array ? Array.prototype.slice.call(message.digestBytes) : message.digestBytes; + return object; + }; + + /** + * Converts this Digest to JSON. + * @function toJSON + * @memberof grafeas.v1.Digest + * @instance + * @returns {Object.} JSON object + */ + Digest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Digest; + })(); + return v1; })(); diff --git a/protos/protos.json b/protos/protos.json index 5c5ae35..bd0b521 100644 --- a/protos/protos.json +++ b/protos/protos.json @@ -2601,6 +2601,38 @@ "id": 2 } } + }, + "FileLocation": { + "fields": { + "filePath": { + "type": "string", + "id": 1 + } + } + }, + "License": { + "fields": { + "expression": { + "type": "string", + "id": 1 + }, + "comments": { + "type": "string", + "id": 2 + } + } + }, + "Digest": { + "fields": { + "algo": { + "type": "string", + "id": 1 + }, + "digestBytes": { + "type": "bytes", + "id": 2 + } + } } } } diff --git a/system-test/fixtures/sample/src/index.js b/system-test/fixtures/sample/src/index.js index d9f317c..22468d6 100644 --- a/system-test/fixtures/sample/src/index.js +++ b/system-test/fixtures/sample/src/index.js @@ -23,6 +23,8 @@ function main() { const binauthzManagementServiceV1Client = new binaryauthorization.BinauthzManagementServiceV1Client(); const systemPolicyV1Client = new binaryauthorization.SystemPolicyV1Client(); + const validationHelperV1Client = + new binaryauthorization.ValidationHelperV1Client(); } main(); diff --git a/system-test/fixtures/sample/src/index.ts b/system-test/fixtures/sample/src/index.ts index 866287d..8b1a148 100644 --- a/system-test/fixtures/sample/src/index.ts +++ b/system-test/fixtures/sample/src/index.ts @@ -19,10 +19,11 @@ import { BinauthzManagementServiceV1Client, SystemPolicyV1Client, + ValidationHelperV1Client, } from '@google-cloud/binary-authorization'; // check that the client class type name can be used -function doStuffWithBinauthzManagementServiceV1Beta1Client( +function doStuffWithBinauthzManagementServiceV1Client( client: BinauthzManagementServiceV1Client ) { client.close(); @@ -30,17 +31,23 @@ function doStuffWithBinauthzManagementServiceV1Beta1Client( function doStuffWithSystemPolicyV1Client(client: SystemPolicyV1Client) { client.close(); } +function doStuffWithValidationHelperV1Client(client: ValidationHelperV1Client) { + client.close(); +} function main() { // check that the client instance can be created const binauthzManagementServiceV1Client = new BinauthzManagementServiceV1Client(); - doStuffWithBinauthzManagementServiceV1Beta1Client( + doStuffWithBinauthzManagementServiceV1Client( binauthzManagementServiceV1Client ); // check that the client instance can be created - const systemPolicyV1Beta1Client = new SystemPolicyV1Client(); - doStuffWithSystemPolicyV1Client(systemPolicyV1Beta1Client); + const systemPolicyV1Client = new SystemPolicyV1Client(); + doStuffWithSystemPolicyV1Client(systemPolicyV1Client); + // check that the client instance can be created + const validationHelperV1Client = new ValidationHelperV1Client(); + doStuffWithValidationHelperV1Client(validationHelperV1Client); } main(); diff --git a/webpack.config.js b/webpack.config.js index a1682e6..00fd817 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -17,8 +17,8 @@ const path = require('path'); module.exports = { entry: './src/index.ts', output: { - library: 'BinauthzManagementServiceV1Beta1', - filename: './binauthz-management-service-v1-beta1.js', + library: 'BinauthzManagementServiceV1', + filename: './binauthz-management-service-v1.js', }, node: { child_process: 'empty',