fix(rpc): Supports RPC calls for new identifier CustomResource (#1605)

This commit is contained in:
Ankush K
2022-02-13 14:50:51 +05:30
committed by GitHub
parent b7d4d1ead4
commit de6c3cbb6c
11 changed files with 354 additions and 178 deletions

View File

@@ -1,9 +1,9 @@
FROM golang:1.17
# Install protoc (cf. http://google.github.io/proto-lens/installing-protoc.html)
ENV PROTOC_ZIP=protoc-3.19.1-linux-x86_64.zip
ENV PROTOC_ZIP=protoc-3.19.4-linux-x86_64.zip
RUN apt-get update && apt-get install -y unzip
RUN curl --retry 5 -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.19.1/$PROTOC_ZIP \
RUN curl --retry 5 -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/$PROTOC_ZIP \
&& unzip -o $PROTOC_ZIP -d /usr/local bin/protoc \
&& unzip -o $PROTOC_ZIP -d /usr/local 'include/*' \
&& rm -f $PROTOC_ZIP

View File

@@ -203,11 +203,29 @@ func ConvertFromRPCResults(rpcResults []*scanner.Result) []types.Result {
Class: types.ResultClass(result.Class),
Type: result.Type,
Packages: ConvertFromRPCPkgs(result.Packages),
CustomResources: ConvertFromRPCCustomResources(result.CustomResources),
})
}
return results
}
// ConvertFromRPCCustomResources converts array of cache.CustomResource to fanal.CustomResource
func ConvertFromRPCCustomResources(rpcCustomResources []*common.CustomResource) []ftypes.CustomResource {
var resources []ftypes.CustomResource
for _, res := range rpcCustomResources {
resources = append(resources, ftypes.CustomResource{
Type: res.Type,
FilePath: res.FilePath,
Layer: ftypes.Layer{
Digest: res.Layer.Digest,
DiffID: res.Layer.DiffId,
},
Data: res.Data,
})
}
return resources
}
// ConvertFromRPCVulns converts []*common.Vulnerability to []types.DetectedVulnerability
func ConvertFromRPCVulns(rpcVulns []*common.Vulnerability) []types.DetectedVulnerability {
var vulns []types.DetectedVulnerability
@@ -402,6 +420,7 @@ func ConvertFromRPCPutBlobRequest(req *cache.PutBlobRequest) ftypes.BlobInfo {
Misconfigurations: ConvertFromRPCMisconfigurations(req.BlobInfo.Misconfigurations),
OpaqueDirs: req.BlobInfo.OpaqueDirs,
WhiteoutFiles: req.BlobInfo.WhiteoutFiles,
CustomResources: ConvertFromRPCCustomResources(req.BlobInfo.CustomResources),
}
}
@@ -477,6 +496,24 @@ func ConvertToRPCBlobInfo(diffID string, blobInfo ftypes.BlobInfo) *cache.PutBlo
}
var customResources []*common.CustomResource
for _, res := range blobInfo.CustomResources {
data, err := structpb.NewValue(res.Data)
if err != nil {
} else {
customResources = append(customResources, &common.CustomResource{
Type: res.Type,
FilePath: res.FilePath,
Layer: &common.Layer{
Digest: res.Layer.Digest,
DiffId: res.Layer.DiffID,
},
Data: data,
})
}
}
return &cache.PutBlobRequest{
DiffId: diffID,
BlobInfo: &cache.BlobInfo{
@@ -489,6 +526,7 @@ func ConvertToRPCBlobInfo(diffID string, blobInfo ftypes.BlobInfo) *cache.PutBlo
Misconfigurations: misconfigurations,
OpaqueDirs: blobInfo.OpaqueDirs,
WhiteoutFiles: blobInfo.WhiteoutFiles,
CustomResources: customResources,
},
}
}

View File

@@ -1,7 +1,7 @@
package types
import (
"github.com/google/go-containerregistry/pkg/v1" // nolint: goimports
v1 "github.com/google/go-containerregistry/pkg/v1" // nolint: goimports
ftypes "github.com/aquasecurity/fanal/types"
)
@@ -48,6 +48,7 @@ type Result struct {
Vulnerabilities []DetectedVulnerability `json:"Vulnerabilities,omitempty"`
MisconfSummary *MisconfSummary `json:"MisconfSummary,omitempty"`
Misconfigurations []DetectedMisconfiguration `json:"Misconfigurations,omitempty"`
CustomResources []ftypes.CustomResource `json:"CustomResources,omitempty"`
}
type MisconfSummary struct {

View File

@@ -179,6 +179,7 @@ type BlobInfo struct {
WhiteoutFiles []string `protobuf:"bytes,6,rep,name=whiteout_files,json=whiteoutFiles,proto3" json:"whiteout_files,omitempty"`
Digest string `protobuf:"bytes,7,opt,name=digest,proto3" json:"digest,omitempty"`
DiffId string `protobuf:"bytes,8,opt,name=diff_id,json=diffId,proto3" json:"diff_id,omitempty"`
CustomResources []*common.CustomResource `protobuf:"bytes,10,rep,name=custom_resources,json=customResources,proto3" json:"custom_resources,omitempty"`
}
func (x *BlobInfo) Reset() {
@@ -276,6 +277,13 @@ func (x *BlobInfo) GetDiffId() string {
return ""
}
func (x *BlobInfo) GetCustomResources() []*common.CustomResource {
if x != nil {
return x.CustomResources
}
return nil
}
type PutBlobRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -531,7 +539,7 @@ var file_rpc_cache_service_proto_rawDesc = []byte{
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, 0x69,
0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69,
0x66, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61,
0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x99, 0x03, 0x0a, 0x08, 0x42, 0x6c, 0x6f, 0x62, 0x49,
0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x42, 0x6c, 0x6f, 0x62, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x63, 0x68,
0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x02, 0x6f, 0x73,
@@ -557,48 +565,52 @@ var file_rpc_cache_service_proto_rawDesc = []byte{
0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x66,
0x66, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, 0x66,
0x49, 0x64, 0x22, 0x60, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, 0x66, 0x49, 0x64, 0x12, 0x35, 0x0a,
0x09, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x62,
0x49, 0x6e, 0x66, 0x6f, 0x22, 0x43, 0x0a, 0x0b, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x10, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f,
0x53, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6f, 0x73, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x6f, 0x73, 0x6c, 0x22, 0x51, 0x0a, 0x13, 0x4d, 0x69, 0x73,
0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49,
0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x14,
0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f,
0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12,
0x28, 0x0a, 0x10, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f,
0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x32, 0xf0, 0x01, 0x0a, 0x05, 0x43, 0x61,
0x63, 0x68, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x50, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61,
0x63, 0x74, 0x12, 0x22, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x41,
0x0a, 0x07, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x74, 0x72, 0x69, 0x76,
0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c,
0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x12, 0x59, 0x0a, 0x0c, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62,
0x73, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e,
0x76, 0x31, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63,
0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42,
0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70,
0x63, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x49, 0x64, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74,
0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x0e, 0x50,
0x75, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a,
0x07, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x64, 0x69, 0x66, 0x66, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x76,
0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x43, 0x0a,
0x0b, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x02,
0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79,
0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x53, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12,
0x0a, 0x04, 0x65, 0x6f, 0x73, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x6f,
0x73, 0x6c, 0x22, 0x51, 0x0a, 0x13, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f,
0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74,
0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c,
0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x62, 0x6c,
0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x6b, 0x0a, 0x14, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67,
0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a,
0x10, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67,
0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x69, 0x73, 0x73,
0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x49,
0x64, 0x73, 0x32, 0xf0, 0x01, 0x0a, 0x05, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x49, 0x0a, 0x0b,
0x50, 0x75, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x22, 0x2e, 0x74, 0x72,
0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74,
0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x42, 0x6c,
0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x0c, 0x4d, 0x69,
0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x23, 0x2e, 0x74, 0x72, 0x69,
0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x73, 0x73,
0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x24, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x61, 0x63, 0x68, 0x65,
0x3b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -628,7 +640,8 @@ var file_rpc_cache_service_proto_goTypes = []interface{}{
(*common.PackageInfo)(nil), // 10: trivy.common.PackageInfo
(*common.Application)(nil), // 11: trivy.common.Application
(*common.Misconfiguration)(nil), // 12: trivy.common.Misconfiguration
(*emptypb.Empty)(nil), // 13: google.protobuf.Empty
(*common.CustomResource)(nil), // 13: trivy.common.CustomResource
(*emptypb.Empty)(nil), // 14: google.protobuf.Empty
}
var file_rpc_cache_service_proto_depIdxs = []int32{
7, // 0: trivy.cache.v1.ArtifactInfo.created:type_name -> google.protobuf.Timestamp
@@ -638,19 +651,20 @@ var file_rpc_cache_service_proto_depIdxs = []int32{
10, // 4: trivy.cache.v1.BlobInfo.package_infos:type_name -> trivy.common.PackageInfo
11, // 5: trivy.cache.v1.BlobInfo.applications:type_name -> trivy.common.Application
12, // 6: trivy.cache.v1.BlobInfo.misconfigurations:type_name -> trivy.common.Misconfiguration
2, // 7: trivy.cache.v1.PutBlobRequest.blob_info:type_name -> trivy.cache.v1.BlobInfo
9, // 8: trivy.cache.v1.PutResponse.os:type_name -> trivy.common.OS
1, // 9: trivy.cache.v1.Cache.PutArtifact:input_type -> trivy.cache.v1.PutArtifactRequest
3, // 10: trivy.cache.v1.Cache.PutBlob:input_type -> trivy.cache.v1.PutBlobRequest
5, // 11: trivy.cache.v1.Cache.MissingBlobs:input_type -> trivy.cache.v1.MissingBlobsRequest
13, // 12: trivy.cache.v1.Cache.PutArtifact:output_type -> google.protobuf.Empty
13, // 13: trivy.cache.v1.Cache.PutBlob:output_type -> google.protobuf.Empty
6, // 14: trivy.cache.v1.Cache.MissingBlobs:output_type -> trivy.cache.v1.MissingBlobsResponse
12, // [12:15] is the sub-list for method output_type
9, // [9:12] is the sub-list for method input_type
9, // [9:9] is the sub-list for extension type_name
9, // [9:9] is the sub-list for extension extendee
0, // [0:9] is the sub-list for field type_name
13, // 7: trivy.cache.v1.BlobInfo.custom_resources:type_name -> trivy.common.CustomResource
2, // 8: trivy.cache.v1.PutBlobRequest.blob_info:type_name -> trivy.cache.v1.BlobInfo
9, // 9: trivy.cache.v1.PutResponse.os:type_name -> trivy.common.OS
1, // 10: trivy.cache.v1.Cache.PutArtifact:input_type -> trivy.cache.v1.PutArtifactRequest
3, // 11: trivy.cache.v1.Cache.PutBlob:input_type -> trivy.cache.v1.PutBlobRequest
5, // 12: trivy.cache.v1.Cache.MissingBlobs:input_type -> trivy.cache.v1.MissingBlobsRequest
14, // 13: trivy.cache.v1.Cache.PutArtifact:output_type -> google.protobuf.Empty
14, // 14: trivy.cache.v1.Cache.PutBlob:output_type -> google.protobuf.Empty
6, // 15: trivy.cache.v1.Cache.MissingBlobs:output_type -> trivy.cache.v1.MissingBlobsResponse
13, // [13:16] is the sub-list for method output_type
10, // [10:13] is the sub-list for method input_type
10, // [10:10] is the sub-list for extension type_name
10, // [10:10] is the sub-list for extension extendee
0, // [0:10] is the sub-list for field type_name
}
func init() { file_rpc_cache_service_proto_init() }

View File

@@ -37,6 +37,7 @@ message BlobInfo {
repeated string whiteout_files = 6;
string digest = 7;
string diff_id = 8;
repeated common.CustomResource custom_resources = 10;
}
message PutBlobRequest {

View File

@@ -1651,50 +1651,52 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error)
}
var twirpFileDescriptor0 = []byte{
// 710 bytes of a gzipped FileDescriptorProto
// 743 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x6e, 0xd3, 0x30,
0x18, 0x55, 0xdb, 0x6d, 0x6d, 0xbf, 0xfe, 0x6c, 0x18, 0xd8, 0xb2, 0x82, 0xb6, 0x2a, 0x80, 0x54,
0x2e, 0x48, 0x44, 0x81, 0x2b, 0x04, 0xa2, 0x1b, 0x20, 0x55, 0x62, 0xa2, 0x04, 0x84, 0x04, 0x37,
0x25, 0x75, 0x9c, 0xd6, 0x5a, 0x13, 0x67, 0xb6, 0x53, 0xe8, 0x1b, 0xf0, 0x0a, 0xbc, 0x25, 0x8f,
0x80, 0x6c, 0x27, 0xeb, 0xcf, 0xca, 0x04, 0x37, 0x55, 0x7c, 0xbe, 0xcf, 0xc7, 0xc7, 0xe7, 0x7c,
0x4d, 0xe0, 0x80, 0x27, 0xd8, 0xc5, 0x3e, 0x9e, 0x10, 0x57, 0x10, 0x3e, 0xa3, 0x98, 0x38, 0x09,
0x67, 0x92, 0xa1, 0xa6, 0xe4, 0x74, 0x36, 0x77, 0x74, 0xc9, 0x99, 0x3d, 0x6e, 0x1d, 0x8f, 0x19,
0x1b, 0x4f, 0x89, 0xab, 0xab, 0xa3, 0x34, 0x74, 0x25, 0x8d, 0x88, 0x90, 0x7e, 0x94, 0x98, 0x0d,
0x2d, 0x4b, 0x33, 0xb1, 0x28, 0x62, 0xf1, 0x2a, 0x55, 0xeb, 0xce, 0xfa, 0x56, 0x12, 0x25, 0x72,
0x6e, 0x8a, 0xf6, 0xcf, 0x22, 0xd4, 0x7b, 0x5c, 0xd2, 0xd0, 0xc7, 0xb2, 0x1f, 0x87, 0x0c, 0x3d,
0x80, 0xa6, 0xc0, 0x13, 0x12, 0xf9, 0xc3, 0x19, 0xe1, 0x82, 0xb2, 0xd8, 0x2a, 0xb4, 0x0b, 0x9d,
0x6d, 0xaf, 0x61, 0xd0, 0xcf, 0x06, 0x44, 0x36, 0xd4, 0x7d, 0x8e, 0x27, 0x54, 0x12, 0x2c, 0x53,
0x4e, 0xac, 0x62, 0xbb, 0xd0, 0xa9, 0x7a, 0x2b, 0x18, 0x7a, 0x0a, 0x65, 0xcc, 0x89, 0x2f, 0x49,
0x60, 0x95, 0xda, 0x85, 0x4e, 0xad, 0xdb, 0x72, 0x8c, 0x14, 0x27, 0x97, 0xe2, 0x7c, 0xca, 0x6f,
0xe1, 0xe5, 0xad, 0x4a, 0x40, 0xc0, 0xf0, 0x39, 0xe1, 0x97, 0x02, 0xb6, 0x34, 0x77, 0xc3, 0xa0,
0xb9, 0x80, 0x26, 0x14, 0x99, 0xb0, 0xb6, 0x75, 0xa9, 0xc8, 0x04, 0x7a, 0x05, 0x7b, 0x13, 0x2a,
0x24, 0xe3, 0xf3, 0x61, 0xe2, 0xe3, 0x73, 0x7f, 0x4c, 0x84, 0xb5, 0xd3, 0x2e, 0x75, 0x6a, 0xdd,
0xdb, 0x4e, 0xe6, 0xa5, 0x36, 0xc7, 0x19, 0x98, 0xaa, 0xb7, 0x9b, 0xb5, 0x67, 0x6b, 0x61, 0xff,
0x00, 0x34, 0x48, 0x65, 0x6e, 0x86, 0x47, 0x2e, 0x52, 0x22, 0x24, 0x3a, 0x86, 0x9a, 0x9f, 0x41,
0x43, 0x1a, 0x68, 0x33, 0xaa, 0x1e, 0xe4, 0x50, 0x3f, 0x40, 0x3d, 0x68, 0x2c, 0x1a, 0xe2, 0x90,
0x69, 0x2b, 0x6a, 0xdd, 0xbb, 0xce, 0x6a, 0x82, 0xce, 0xb2, 0xcb, 0xca, 0xa8, 0xc5, 0xca, 0xfe,
0x55, 0x82, 0xca, 0xc9, 0x94, 0x8d, 0xfe, 0x27, 0x80, 0xb6, 0xbe, 0xbf, 0x39, 0x6b, 0x6f, 0xf5,
0x86, 0xef, 0x3f, 0x6a, 0x47, 0x5e, 0x42, 0x23, 0x73, 0x42, 0xeb, 0x12, 0x56, 0x49, 0xdb, 0x71,
0xb8, 0xd1, 0x0e, 0xa3, 0x2a, 0x59, 0x2c, 0x04, 0x7a, 0x01, 0x75, 0x3f, 0x49, 0xa6, 0x14, 0xfb,
0x92, 0xb2, 0x58, 0x58, 0x5b, 0x9b, 0xb6, 0xf7, 0x16, 0x1d, 0xde, 0x4a, 0x3b, 0x7a, 0x07, 0x37,
0x22, 0x2a, 0x30, 0x8b, 0x43, 0x3a, 0x4e, 0x79, 0xc6, 0x51, 0xd5, 0x1c, 0x47, 0xab, 0x1c, 0x67,
0x6b, 0x6d, 0xde, 0xd5, 0x8d, 0x2a, 0x06, 0x96, 0xf8, 0x17, 0x29, 0x19, 0x06, 0x94, 0xab, 0xdc,
0x4b, 0x2a, 0x06, 0x03, 0xbd, 0xa6, 0x5c, 0x28, 0xdb, 0xbe, 0xab, 0xd1, 0x63, 0xa9, 0x1c, 0x86,
0x74, 0x9a, 0xa5, 0x5f, 0xf5, 0x1a, 0x39, 0xfa, 0x56, 0x81, 0x68, 0x1f, 0x76, 0x02, 0x3a, 0x26,
0x42, 0x5a, 0x65, 0x9d, 0x64, 0xb6, 0x42, 0x07, 0x50, 0x0e, 0x68, 0x18, 0xaa, 0x88, 0x2b, 0x79,
0x21, 0x0c, 0xfb, 0x81, 0xfd, 0x0d, 0x9a, 0x83, 0x54, 0xaa, 0x74, 0xf2, 0x89, 0x58, 0x6a, 0x2d,
0x2c, 0xb7, 0xa2, 0x67, 0x50, 0x1d, 0x4d, 0xd9, 0xc8, 0x4c, 0x81, 0x99, 0x78, 0x6b, 0x7d, 0x0a,
0xf2, 0x98, 0xbd, 0xca, 0x28, 0x7b, 0xb2, 0x4f, 0xa1, 0x36, 0x48, 0xa5, 0x47, 0x44, 0xc2, 0x62,
0x41, 0xb2, 0x60, 0x0b, 0xd7, 0x04, 0x8b, 0x60, 0x8b, 0x30, 0x31, 0xd5, 0xe1, 0x57, 0x3c, 0xfd,
0x6c, 0x7f, 0x80, 0x9b, 0x67, 0x54, 0x08, 0x1a, 0x8f, 0xd5, 0x09, 0xe2, 0x9f, 0xa7, 0xf7, 0x10,
0x2a, 0x46, 0x73, 0xa0, 0x86, 0x49, 0x19, 0x56, 0xd6, 0xc2, 0x02, 0x61, 0x9f, 0xc3, 0xad, 0x55,
0xca, 0x4c, 0xe0, 0x43, 0xd8, 0x8b, 0x0c, 0x3e, 0xcc, 0x89, 0x34, 0x71, 0xc5, 0xdb, 0xcd, 0xf0,
0x7c, 0xd4, 0x51, 0x67, 0xd1, 0xba, 0x76, 0x4a, 0x33, 0x5a, 0x50, 0xf7, 0x03, 0xd1, 0xfd, 0x5d,
0x80, 0xed, 0x53, 0x65, 0x12, 0xea, 0x6b, 0x3b, 0x2e, 0x29, 0xec, 0x75, 0x07, 0xaf, 0xfe, 0x47,
0x5b, 0xfb, 0x57, 0xde, 0x2b, 0x6f, 0xd4, 0x2b, 0x0e, 0xf5, 0xa0, 0x9c, 0x65, 0x87, 0x8e, 0x36,
0xd0, 0x2c, 0x85, 0xfa, 0x57, 0x8a, 0x2f, 0x50, 0x5f, 0x36, 0x01, 0xdd, 0x5b, 0xe7, 0xd9, 0xe0,
0x7a, 0xeb, 0xfe, 0xf5, 0x4d, 0xc6, 0xc7, 0x13, 0xf7, 0xeb, 0xa3, 0x31, 0x95, 0x93, 0x74, 0xa4,
0xe2, 0x75, 0xfd, 0x8b, 0xd4, 0x17, 0x04, 0xa7, 0x9c, 0xca, 0xb9, 0xab, 0xb7, 0xbb, 0x97, 0xdf,
0x86, 0xe7, 0xfa, 0x77, 0xb4, 0xa3, 0xb5, 0x3d, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, 0x4f, 0xb8,
0x6e, 0xb6, 0x35, 0x06, 0x00, 0x00,
0x18, 0x55, 0xdb, 0x6d, 0x6d, 0xbf, 0xfe, 0xac, 0x18, 0xd8, 0xb2, 0x32, 0x6d, 0x55, 0x00, 0xa9,
0x5c, 0x90, 0x88, 0x02, 0x57, 0x08, 0x44, 0x37, 0x7e, 0x54, 0x89, 0x89, 0x12, 0x10, 0x12, 0xdc,
0x94, 0xd4, 0x71, 0x5a, 0x6b, 0x4d, 0x9c, 0xd9, 0x4e, 0xa1, 0x6f, 0xc0, 0x73, 0xf2, 0x04, 0x3c,
0x02, 0xb2, 0x93, 0xac, 0x4d, 0x57, 0x26, 0xb8, 0x99, 0xea, 0xf3, 0x7d, 0x3e, 0x3e, 0x3e, 0xe7,
0x73, 0x06, 0xfb, 0x3c, 0xc2, 0x36, 0x76, 0xf1, 0x94, 0xd8, 0x82, 0xf0, 0x39, 0xc5, 0xc4, 0x8a,
0x38, 0x93, 0x0c, 0x35, 0x25, 0xa7, 0xf3, 0x85, 0xa5, 0x4b, 0xd6, 0xfc, 0x51, 0xfb, 0x78, 0xc2,
0xd8, 0x64, 0x46, 0x6c, 0x5d, 0x1d, 0xc7, 0xbe, 0x2d, 0x69, 0x40, 0x84, 0x74, 0x83, 0x28, 0xd9,
0xd0, 0x36, 0x34, 0x13, 0x0b, 0x02, 0x16, 0xe6, 0xa9, 0xda, 0x77, 0xd6, 0xb7, 0x92, 0x20, 0x92,
0x8b, 0xa4, 0x68, 0xfe, 0x2c, 0x42, 0xbd, 0xcf, 0x25, 0xf5, 0x5d, 0x2c, 0x07, 0xa1, 0xcf, 0xd0,
0x7d, 0x68, 0x0a, 0x3c, 0x25, 0x81, 0x3b, 0x9a, 0x13, 0x2e, 0x28, 0x0b, 0x8d, 0x42, 0xa7, 0xd0,
0xdd, 0x76, 0x1a, 0x09, 0xfa, 0x39, 0x01, 0x91, 0x09, 0x75, 0x97, 0xe3, 0x29, 0x95, 0x04, 0xcb,
0x98, 0x13, 0xa3, 0xd8, 0x29, 0x74, 0xab, 0x4e, 0x0e, 0x43, 0x4f, 0xa0, 0x8c, 0x39, 0x71, 0x25,
0xf1, 0x8c, 0x52, 0xa7, 0xd0, 0xad, 0xf5, 0xda, 0x56, 0x22, 0xc5, 0xca, 0xa4, 0x58, 0x9f, 0xb2,
0x5b, 0x38, 0x59, 0xab, 0x12, 0xe0, 0x31, 0x7c, 0x4e, 0xf8, 0xa5, 0x80, 0x2d, 0xcd, 0xdd, 0x48,
0xd0, 0x4c, 0x40, 0x13, 0x8a, 0x4c, 0x18, 0xdb, 0xba, 0x54, 0x64, 0x02, 0xbd, 0x84, 0xd6, 0x94,
0x0a, 0xc9, 0xf8, 0x62, 0x14, 0xb9, 0xf8, 0xdc, 0x9d, 0x10, 0x61, 0xec, 0x74, 0x4a, 0xdd, 0x5a,
0xef, 0xb6, 0x95, 0x7a, 0xa9, 0xcd, 0xb1, 0x86, 0x49, 0xd5, 0xd9, 0x4d, 0xdb, 0xd3, 0xb5, 0x30,
0x7f, 0x00, 0x1a, 0xc6, 0x32, 0x33, 0xc3, 0x21, 0x17, 0x31, 0x11, 0x12, 0x1d, 0x43, 0xcd, 0x4d,
0xa1, 0x11, 0xf5, 0xb4, 0x19, 0x55, 0x07, 0x32, 0x68, 0xe0, 0xa1, 0x3e, 0x34, 0x96, 0x0d, 0xa1,
0xcf, 0xb4, 0x15, 0xb5, 0xde, 0xa1, 0x95, 0x4f, 0xd0, 0x5a, 0x75, 0x59, 0x19, 0xb5, 0x5c, 0x99,
0xbf, 0x4a, 0x50, 0x39, 0x99, 0xb1, 0xf1, 0xff, 0x04, 0xd0, 0xd1, 0xf7, 0x4f, 0xce, 0x6a, 0xe5,
0x6f, 0xf8, 0xfe, 0xa3, 0x76, 0xe4, 0x05, 0x34, 0x52, 0x27, 0xb4, 0x2e, 0x61, 0x94, 0xb4, 0x1d,
0x07, 0x1b, 0xed, 0x48, 0x54, 0x45, 0xcb, 0x85, 0x40, 0xcf, 0xa1, 0xee, 0x46, 0xd1, 0x8c, 0x62,
0x57, 0x52, 0x16, 0x0a, 0x63, 0x6b, 0xd3, 0xf6, 0xfe, 0xb2, 0xc3, 0xc9, 0xb5, 0xa3, 0x77, 0x70,
0x23, 0xa0, 0x02, 0xb3, 0xd0, 0xa7, 0x93, 0x98, 0xa7, 0x1c, 0x55, 0xcd, 0x71, 0x94, 0xe7, 0x38,
0x5b, 0x6b, 0x73, 0xae, 0x6e, 0x54, 0x31, 0xb0, 0xc8, 0xbd, 0x88, 0xc9, 0xc8, 0xa3, 0x5c, 0xe5,
0x5e, 0x52, 0x31, 0x24, 0xd0, 0x2b, 0xca, 0x85, 0xb2, 0xed, 0xbb, 0x1a, 0x3d, 0x16, 0xcb, 0x91,
0x4f, 0x67, 0x69, 0xfa, 0x55, 0xa7, 0x91, 0xa1, 0x6f, 0x14, 0x88, 0xf6, 0x60, 0xc7, 0xa3, 0x13,
0x22, 0xa4, 0x51, 0xd6, 0x49, 0xa6, 0x2b, 0xb4, 0x0f, 0x65, 0x8f, 0xfa, 0xbe, 0x8a, 0xb8, 0x92,
0x15, 0x7c, 0x7f, 0xe0, 0xa1, 0xb7, 0xd0, 0xc2, 0xb1, 0x90, 0x2c, 0x18, 0x71, 0x22, 0x58, 0xcc,
0x31, 0x11, 0x06, 0xe8, 0x5b, 0x1c, 0xe6, 0x6f, 0x71, 0xaa, 0xbb, 0x9c, 0xb4, 0xc9, 0xd9, 0xc5,
0xb9, 0xb5, 0x30, 0xbf, 0x41, 0x73, 0x18, 0x4b, 0x15, 0x73, 0x36, 0x5a, 0x2b, 0x67, 0x16, 0x72,
0x67, 0x3e, 0x85, 0xea, 0x78, 0xc6, 0xc6, 0xc9, 0x38, 0x25, 0x4f, 0xc7, 0x58, 0x1f, 0xa7, 0x6c,
0x5e, 0x9c, 0xca, 0x38, 0xfd, 0x65, 0x9e, 0x42, 0x6d, 0x18, 0x4b, 0x87, 0x88, 0x88, 0x85, 0x82,
0xa4, 0x13, 0x52, 0xb8, 0x66, 0x42, 0x10, 0x6c, 0x11, 0x26, 0x66, 0x7a, 0x8a, 0x2a, 0x8e, 0xfe,
0x6d, 0x7e, 0x80, 0x9b, 0x67, 0x54, 0x08, 0x1a, 0x4e, 0xd4, 0x09, 0xe2, 0x9f, 0x9f, 0xc1, 0x01,
0x54, 0x12, 0xcd, 0x9e, 0x9a, 0x4a, 0xe5, 0x7c, 0x59, 0x0b, 0xf3, 0x84, 0x79, 0x0e, 0xb7, 0xf2,
0x94, 0xa9, 0xc0, 0x07, 0xd0, 0x0a, 0x12, 0x7c, 0x94, 0x11, 0x69, 0xe2, 0x8a, 0xb3, 0x9b, 0xe2,
0xd9, 0x9b, 0x41, 0xdd, 0x65, 0xeb, 0xda, 0x29, 0xcd, 0x60, 0x49, 0x3d, 0xf0, 0x44, 0xef, 0x77,
0x01, 0xb6, 0x4f, 0x95, 0x49, 0x68, 0xa0, 0xed, 0xb8, 0xa4, 0x30, 0xd7, 0x1d, 0xbc, 0xfa, 0xd8,
0xdb, 0x7b, 0x57, 0x3e, 0x50, 0xaf, 0xd5, 0xb7, 0x12, 0xf5, 0xa1, 0x9c, 0x66, 0x87, 0x8e, 0x36,
0xd0, 0xac, 0x84, 0xfa, 0x57, 0x8a, 0x2f, 0x50, 0x5f, 0x35, 0x01, 0xdd, 0x5d, 0xe7, 0xd9, 0xe0,
0x7a, 0xfb, 0xde, 0xf5, 0x4d, 0x89, 0x8f, 0x27, 0xf6, 0xd7, 0x87, 0x13, 0x2a, 0xa7, 0xf1, 0x58,
0xc5, 0x6b, 0xbb, 0x17, 0xb1, 0x2b, 0x08, 0x8e, 0x39, 0x95, 0x0b, 0x5b, 0x6f, 0xb7, 0x2f, 0xff,
0xc9, 0x3c, 0xd3, 0x7f, 0xc7, 0x3b, 0x5a, 0xdb, 0xe3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x67,
0x38, 0x22, 0xa3, 0x7e, 0x06, 0x00, 0x00,
}

View File

@@ -1141,6 +1141,77 @@ func (x *CVSS) GetV3Score() float64 {
return 0
}
type CustomResource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
FilePath string `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"`
Layer *Layer `protobuf:"bytes,3,opt,name=layer,proto3" json:"layer,omitempty"`
Data *structpb.Value `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}
func (x *CustomResource) Reset() {
*x = CustomResource{}
if protoimpl.UnsafeEnabled {
mi := &file_rpc_common_service_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CustomResource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CustomResource) ProtoMessage() {}
func (x *CustomResource) ProtoReflect() protoreflect.Message {
mi := &file_rpc_common_service_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CustomResource.ProtoReflect.Descriptor instead.
func (*CustomResource) Descriptor() ([]byte, []int) {
return file_rpc_common_service_proto_rawDescGZIP(), []int{12}
}
func (x *CustomResource) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *CustomResource) GetFilePath() string {
if x != nil {
return x.FilePath
}
return ""
}
func (x *CustomResource) GetLayer() *Layer {
if x != nil {
return x.Layer
}
return nil
}
func (x *CustomResource) GetData() *structpb.Value {
if x != nil {
return x.Data
}
return nil
}
var File_rpc_common_service_proto protoreflect.FileDescriptor
var file_rpc_common_service_proto_rawDesc = []byte{
@@ -1322,15 +1393,25 @@ var file_rpc_common_service_proto_rawDesc = []byte{
0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x32, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x76, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a,
0x08, 0x76, 0x33, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
0x07, 0x76, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x2a, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65,
0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45,
0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x03,
0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x42, 0x31,
0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75,
0x61, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f,
0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x07, 0x76, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x0e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x05,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x72,
0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72,
0x52, 0x05, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x64,
0x61, 0x74, 0x61, 0x2a, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12,
0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10,
0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43,
0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74,
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1346,7 +1427,7 @@ func file_rpc_common_service_proto_rawDescGZIP() []byte {
}
var file_rpc_common_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_rpc_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_rpc_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
var file_rpc_common_service_proto_goTypes = []interface{}{
(Severity)(0), // 0: trivy.common.Severity
(*OS)(nil), // 1: trivy.common.OS
@@ -1361,9 +1442,10 @@ var file_rpc_common_service_proto_goTypes = []interface{}{
(*DataSource)(nil), // 10: trivy.common.DataSource
(*Layer)(nil), // 11: trivy.common.Layer
(*CVSS)(nil), // 12: trivy.common.CVSS
nil, // 13: trivy.common.Vulnerability.CvssEntry
(*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp
(*structpb.Value)(nil), // 15: google.protobuf.Value
(*CustomResource)(nil), // 13: trivy.common.CustomResource
nil, // 14: trivy.common.Vulnerability.CvssEntry
(*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp
(*structpb.Value)(nil), // 16: google.protobuf.Value
}
var file_rpc_common_service_proto_depIdxs = []int32{
4, // 0: trivy.common.PackageInfo.packages:type_name -> trivy.common.Package
@@ -1377,18 +1459,20 @@ var file_rpc_common_service_proto_depIdxs = []int32{
11, // 8: trivy.common.DetectedMisconfiguration.layer:type_name -> trivy.common.Layer
0, // 9: trivy.common.Vulnerability.severity:type_name -> trivy.common.Severity
11, // 10: trivy.common.Vulnerability.layer:type_name -> trivy.common.Layer
13, // 11: trivy.common.Vulnerability.cvss:type_name -> trivy.common.Vulnerability.CvssEntry
14, // 12: trivy.common.Vulnerability.published_date:type_name -> google.protobuf.Timestamp
14, // 13: trivy.common.Vulnerability.last_modified_date:type_name -> google.protobuf.Timestamp
15, // 14: trivy.common.Vulnerability.custom_advisory_data:type_name -> google.protobuf.Value
15, // 15: trivy.common.Vulnerability.custom_vuln_data:type_name -> google.protobuf.Value
14, // 11: trivy.common.Vulnerability.cvss:type_name -> trivy.common.Vulnerability.CvssEntry
15, // 12: trivy.common.Vulnerability.published_date:type_name -> google.protobuf.Timestamp
15, // 13: trivy.common.Vulnerability.last_modified_date:type_name -> google.protobuf.Timestamp
16, // 14: trivy.common.Vulnerability.custom_advisory_data:type_name -> google.protobuf.Value
16, // 15: trivy.common.Vulnerability.custom_vuln_data:type_name -> google.protobuf.Value
10, // 16: trivy.common.Vulnerability.data_source:type_name -> trivy.common.DataSource
12, // 17: trivy.common.Vulnerability.CvssEntry.value:type_name -> trivy.common.CVSS
18, // [18:18] is the sub-list for method output_type
18, // [18:18] is the sub-list for method input_type
18, // [18:18] is the sub-list for extension type_name
18, // [18:18] is the sub-list for extension extendee
0, // [0:18] is the sub-list for field type_name
11, // 17: trivy.common.CustomResource.layer:type_name -> trivy.common.Layer
16, // 18: trivy.common.CustomResource.data:type_name -> google.protobuf.Value
12, // 19: trivy.common.Vulnerability.CvssEntry.value:type_name -> trivy.common.CVSS
20, // [20:20] is the sub-list for method output_type
20, // [20:20] is the sub-list for method input_type
20, // [20:20] is the sub-list for extension type_name
20, // [20:20] is the sub-list for extension extendee
0, // [0:20] is the sub-list for field type_name
}
func init() { file_rpc_common_service_proto_init() }
@@ -1541,6 +1625,18 @@ func file_rpc_common_service_proto_init() {
return nil
}
}
file_rpc_common_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CustomResource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -1548,7 +1644,7 @@ func file_rpc_common_service_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rpc_common_service_proto_rawDesc,
NumEnums: 1,
NumMessages: 13,
NumMessages: 14,
NumExtensions: 0,
NumServices: 0,
},

View File

@@ -128,3 +128,10 @@ message CVSS {
double v2_score = 3;
double v3_score = 4;
}
message CustomResource {
string type = 1;
string file_path = 2;
Layer layer = 3;
google.protobuf.Value data = 4;
}

View File

@@ -222,6 +222,7 @@ type Result struct {
Class string `protobuf:"bytes,6,opt,name=class,proto3" json:"class,omitempty"`
Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
Packages []*common.Package `protobuf:"bytes,5,rep,name=packages,proto3" json:"packages,omitempty"`
CustomResources []*common.CustomResource `protobuf:"bytes,7,rep,name=custom_resources,json=customResources,proto3" json:"custom_resources,omitempty"`
}
func (x *Result) Reset() {
@@ -298,6 +299,13 @@ func (x *Result) GetPackages() []*common.Package {
return nil
}
func (x *Result) GetCustomResources() []*common.CustomResource {
if x != nil {
return x.CustomResources
}
return nil
}
var File_rpc_scanner_service_proto protoreflect.FileDescriptor
var file_rpc_scanner_service_proto_rawDesc = []byte{
@@ -329,7 +337,7 @@ var file_rpc_scanner_service_proto_rawDesc = []byte{
0x2e, 0x4f, 0x53, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79,
0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x06,
0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xe3, 0x02, 0x0a, 0x06,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x45,
0x0a, 0x0f, 0x76, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65,
@@ -347,16 +355,20 @@ var file_rpc_scanner_service_proto_rawDesc = []byte{
0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08,
0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x32, 0x50, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6e,
0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x04, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x1d, 0x2e, 0x74, 0x72,
0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53,
0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x72, 0x69,
0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, 0x63, 0x2f,
0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3b, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x73, 0x32, 0x50, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x04,
0x53, 0x63, 0x61, 0x6e, 0x12, 0x1d, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61,
0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x72, 0x69, 0x76, 0x79, 0x2e, 0x73, 0x63, 0x61, 0x6e,
0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x74,
0x72, 0x69, 0x76, 0x79, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72,
0x3b, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -381,6 +393,7 @@ var file_rpc_scanner_service_proto_goTypes = []interface{}{
(*common.Vulnerability)(nil), // 5: trivy.common.Vulnerability
(*common.DetectedMisconfiguration)(nil), // 6: trivy.common.DetectedMisconfiguration
(*common.Package)(nil), // 7: trivy.common.Package
(*common.CustomResource)(nil), // 8: trivy.common.CustomResource
}
var file_rpc_scanner_service_proto_depIdxs = []int32{
1, // 0: trivy.scanner.v1.ScanRequest.options:type_name -> trivy.scanner.v1.ScanOptions
@@ -389,13 +402,14 @@ var file_rpc_scanner_service_proto_depIdxs = []int32{
5, // 3: trivy.scanner.v1.Result.vulnerabilities:type_name -> trivy.common.Vulnerability
6, // 4: trivy.scanner.v1.Result.misconfigurations:type_name -> trivy.common.DetectedMisconfiguration
7, // 5: trivy.scanner.v1.Result.packages:type_name -> trivy.common.Package
0, // 6: trivy.scanner.v1.Scanner.Scan:input_type -> trivy.scanner.v1.ScanRequest
2, // 7: trivy.scanner.v1.Scanner.Scan:output_type -> trivy.scanner.v1.ScanResponse
7, // [7:8] is the sub-list for method output_type
6, // [6:7] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
8, // 6: trivy.scanner.v1.Result.custom_resources:type_name -> trivy.common.CustomResource
0, // 7: trivy.scanner.v1.Scanner.Scan:input_type -> trivy.scanner.v1.ScanRequest
2, // 8: trivy.scanner.v1.Scanner.Scan:output_type -> trivy.scanner.v1.ScanResponse
8, // [8:9] is the sub-list for method output_type
7, // [7:8] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
}
func init() { file_rpc_scanner_service_proto_init() }

View File

@@ -35,4 +35,5 @@ message Result {
string class = 6;
string type = 3;
repeated common.Package packages = 5;
repeated common.CustomResource custom_resources = 7;
}

View File

@@ -1091,36 +1091,38 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error)
}
var twirpFileDescriptor0 = []byte{
// 482 bytes of a gzipped FileDescriptorProto
// 514 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x3d, 0x6f, 0xdb, 0x30,
0x10, 0x85, 0x1c, 0xc7, 0x1f, 0xa7, 0xa2, 0x4e, 0x88, 0xb6, 0x50, 0x12, 0xb4, 0x35, 0x3c, 0xb4,
0x46, 0x07, 0x09, 0x56, 0x86, 0x0e, 0x9d, 0xfa, 0x91, 0x21, 0x43, 0x91, 0x80, 0x0e, 0x3a, 0x74,
0x11, 0x28, 0x8a, 0x71, 0x88, 0xd0, 0xa2, 0x42, 0x52, 0x06, 0x34, 0xf5, 0x7f, 0xe4, 0xd7, 0x16,
0x24, 0xa5, 0x20, 0x76, 0xe0, 0x49, 0xe2, 0xbb, 0xc7, 0xbb, 0x77, 0xef, 0x8e, 0x70, 0xa2, 0x2a,
0x9a, 0x68, 0x4a, 0xca, 0x92, 0xa9, 0x44, 0x33, 0xb5, 0xe1, 0x94, 0xc5, 0x95, 0x92, 0x46, 0xa2,
0x23, 0xa3, 0xf8, 0xa6, 0x89, 0xdb, 0x60, 0xbc, 0x59, 0x9c, 0x46, 0x96, 0x4c, 0xe5, 0x7a, 0x2d,
0xcb, 0x6d, 0xee, 0xec, 0x31, 0x80, 0x70, 0x49, 0x49, 0x89, 0xd9, 0x43, 0xcd, 0xb4, 0x41, 0xef,
0x60, 0x60, 0x88, 0x5a, 0x31, 0x13, 0x05, 0xd3, 0x60, 0x3e, 0xc6, 0xed, 0x09, 0x7d, 0x84, 0x90,
0x28, 0xc3, 0x6f, 0x09, 0x35, 0x19, 0x2f, 0xa2, 0x9e, 0x0b, 0x42, 0x07, 0x5d, 0x16, 0xe8, 0x04,
0x46, 0xb9, 0x90, 0x79, 0xc6, 0x0b, 0x1d, 0x1d, 0x4c, 0x0f, 0xe6, 0x63, 0x3c, 0xb4, 0xe7, 0xcb,
0x42, 0xa3, 0xaf, 0x30, 0x94, 0x95, 0xe1, 0xb2, 0xd4, 0x51, 0x7f, 0x1a, 0xcc, 0xc3, 0xf4, 0x7d,
0xbc, 0xab, 0x30, 0xb6, 0x1a, 0xae, 0x3c, 0x09, 0x77, 0xec, 0xd9, 0x3f, 0xaf, 0xad, 0xc5, 0xd1,
0x19, 0x8c, 0x37, 0xb5, 0x28, 0x33, 0xd3, 0x54, 0x2c, 0x0a, 0x5c, 0x8d, 0x91, 0x05, 0x6e, 0x9a,
0x8a, 0xa1, 0xcf, 0x30, 0xd1, 0x8c, 0xd6, 0x8a, 0x9b, 0x26, 0xa3, 0x77, 0x8c, 0xde, 0xeb, 0xa8,
0xe7, 0x28, 0xaf, 0x3b, 0xf8, 0xa7, 0x43, 0xd1, 0x17, 0x38, 0x16, 0x5c, 0x9b, 0x8c, 0x08, 0x91,
0x55, 0x84, 0xde, 0x93, 0x15, 0xb3, 0x8a, 0x83, 0xf9, 0x08, 0x4f, 0x6c, 0xe0, 0xbb, 0x10, 0xd7,
0x2d, 0x3c, 0x2b, 0xe0, 0x95, 0x37, 0x47, 0x57, 0xb2, 0xd4, 0x0c, 0x4d, 0xa1, 0x27, 0xb5, 0x73,
0x26, 0x4c, 0x8f, 0xda, 0x26, 0xbc, 0xad, 0xf1, 0xd5, 0x12, 0xf7, 0xa4, 0x46, 0x29, 0x0c, 0x15,
0xd3, 0xb5, 0x30, 0xde, 0x85, 0x30, 0x8d, 0x5e, 0xf6, 0x8a, 0x1d, 0x01, 0x77, 0xc4, 0xd9, 0x63,
0x0f, 0x06, 0x1e, 0xdb, 0x6b, 0xff, 0x05, 0x4c, 0x6c, 0xa7, 0x4c, 0x91, 0x9c, 0x0b, 0x6e, 0x38,
0xf3, 0xdd, 0x85, 0xe9, 0xd9, 0xb6, 0x8a, 0x3f, 0xcf, 0x48, 0x0d, 0xde, 0xbd, 0x83, 0x6e, 0xe0,
0x78, 0xcd, 0x35, 0x95, 0xe5, 0x2d, 0x5f, 0xd5, 0x8a, 0x74, 0x33, 0xb1, 0x89, 0x3e, 0x6d, 0x27,
0xfa, 0xc5, 0x0c, 0xa3, 0x86, 0x15, 0xbf, 0x77, 0xe8, 0xf8, 0x65, 0x02, 0xf4, 0x06, 0x0e, 0xa9,
0x20, 0x5a, 0x47, 0x03, 0xa7, 0xd9, 0x1f, 0x10, 0x82, 0xbe, 0x1b, 0xd4, 0x81, 0x03, 0xdd, 0x3f,
0x5a, 0xc0, 0xe8, 0xc9, 0xf2, 0x43, 0x57, 0xf6, 0xed, 0x76, 0xd9, 0xd6, 0x79, 0xfc, 0x44, 0x4b,
0xaf, 0x61, 0xb8, 0xf4, 0xd6, 0xa1, 0x0b, 0xe8, 0xdb, 0x5f, 0xb4, 0x67, 0x7d, 0xda, 0x15, 0x3e,
0xfd, 0xb0, 0x2f, 0xec, 0x87, 0xf8, 0xe3, 0xfc, 0xef, 0x62, 0xc5, 0xcd, 0x5d, 0x9d, 0xdb, 0xa2,
0x09, 0x79, 0xa8, 0x49, 0xb7, 0x21, 0x89, 0xbb, 0x98, 0x3c, 0x7b, 0x59, 0xdf, 0xda, 0x6f, 0x3e,
0x70, 0xcf, 0xe5, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x41, 0x9f, 0x51, 0x77, 0x03,
0x10, 0x85, 0x6c, 0xc7, 0x1f, 0xa7, 0xa2, 0x76, 0x88, 0xb6, 0x50, 0x92, 0x7e, 0x18, 0x1e, 0x5a,
0xa3, 0x83, 0x0c, 0x2b, 0x43, 0x87, 0x4e, 0x6d, 0x1a, 0x14, 0x19, 0x8a, 0x04, 0x74, 0xd0, 0xa1,
0x8b, 0x40, 0x53, 0x8c, 0x43, 0x44, 0x16, 0x15, 0x1e, 0x65, 0xc0, 0x53, 0xff, 0x47, 0xff, 0x5e,
0xff, 0x48, 0x20, 0x52, 0x0a, 0x22, 0x07, 0x9e, 0xa4, 0x7b, 0xf7, 0x8e, 0x7c, 0xf7, 0x78, 0x07,
0x47, 0x3a, 0xe7, 0x33, 0xe4, 0x2c, 0xcb, 0x84, 0x9e, 0xa1, 0xd0, 0x1b, 0xc9, 0x45, 0x98, 0x6b,
0x65, 0x14, 0x19, 0x19, 0x2d, 0x37, 0xdb, 0xb0, 0x4a, 0x86, 0x9b, 0xf9, 0x71, 0x50, 0x92, 0xb9,
0x5a, 0xaf, 0x55, 0xd6, 0xe4, 0x4e, 0xfe, 0x79, 0xe0, 0x2f, 0x38, 0xcb, 0xa8, 0xb8, 0x2f, 0x04,
0x1a, 0xf2, 0x06, 0xba, 0x86, 0xe9, 0x95, 0x30, 0x81, 0x37, 0xf6, 0xa6, 0x03, 0x5a, 0x45, 0xe4,
0x03, 0xf8, 0x4c, 0x1b, 0x79, 0xc3, 0xb8, 0x89, 0x65, 0x12, 0xb4, 0x6c, 0x12, 0x6a, 0xe8, 0x22,
0x21, 0x47, 0xd0, 0x5f, 0xa6, 0x6a, 0x19, 0xcb, 0x04, 0x83, 0xf6, 0xb8, 0x3d, 0x1d, 0xd0, 0x5e,
0x19, 0x5f, 0x24, 0x48, 0xbe, 0x40, 0x4f, 0xe5, 0x46, 0xaa, 0x0c, 0x83, 0xce, 0xd8, 0x9b, 0xfa,
0xd1, 0xbb, 0x70, 0x57, 0x61, 0x58, 0x6a, 0xb8, 0x74, 0x24, 0x5a, 0xb3, 0x27, 0x7f, 0x9d, 0xb6,
0x0a, 0x27, 0x27, 0x30, 0xd8, 0x14, 0x69, 0x16, 0x9b, 0x6d, 0x2e, 0x02, 0xcf, 0xde, 0xd1, 0x2f,
0x81, 0xeb, 0x6d, 0x2e, 0xc8, 0x27, 0x18, 0xa2, 0xe0, 0x85, 0x96, 0x66, 0x1b, 0xf3, 0x5b, 0xc1,
0xef, 0x30, 0x68, 0x59, 0xca, 0xcb, 0x1a, 0x3e, 0xb3, 0x28, 0xf9, 0x0c, 0x87, 0xa9, 0x44, 0x13,
0xb3, 0x34, 0x8d, 0x73, 0xc6, 0xef, 0xd8, 0x4a, 0x94, 0x8a, 0xbd, 0x69, 0x9f, 0x0e, 0xcb, 0xc4,
0xb7, 0x34, 0xbd, 0xaa, 0xe0, 0x49, 0x02, 0x2f, 0x9c, 0x39, 0x98, 0xab, 0x0c, 0x05, 0x19, 0x43,
0x4b, 0xa1, 0x75, 0xc6, 0x8f, 0x46, 0x55, 0x13, 0xce, 0xd6, 0xf0, 0x72, 0x41, 0x5b, 0x0a, 0x49,
0x04, 0x3d, 0x2d, 0xb0, 0x48, 0x8d, 0x73, 0xc1, 0x8f, 0x82, 0xe7, 0xbd, 0x52, 0x4b, 0xa0, 0x35,
0x71, 0xf2, 0xbf, 0x05, 0x5d, 0x87, 0xed, 0xb5, 0xff, 0x1c, 0x86, 0x65, 0xa7, 0x42, 0xb3, 0xa5,
0x4c, 0xa5, 0x91, 0xc2, 0x75, 0xe7, 0x47, 0x27, 0x4d, 0x15, 0xbf, 0x9f, 0x90, 0xb6, 0x74, 0xb7,
0x86, 0x5c, 0xc3, 0xe1, 0x5a, 0x22, 0x57, 0xd9, 0x8d, 0x5c, 0x15, 0x9a, 0xd5, 0x6f, 0x52, 0x1e,
0xf4, 0xb1, 0x79, 0xd0, 0x0f, 0x61, 0x04, 0x37, 0x22, 0xf9, 0xb5, 0x43, 0xa7, 0xcf, 0x0f, 0x20,
0xaf, 0xe0, 0x80, 0xa7, 0x0c, 0x31, 0xe8, 0x5a, 0xcd, 0x2e, 0x20, 0x04, 0x3a, 0xf6, 0xa1, 0xda,
0x16, 0xb4, 0xff, 0x64, 0x0e, 0xfd, 0x47, 0xcb, 0x0f, 0xec, 0xb5, 0xaf, 0x9b, 0xd7, 0x56, 0xce,
0xd3, 0x47, 0x1a, 0xf9, 0x09, 0x23, 0x5e, 0xa0, 0x51, 0xeb, 0x58, 0x0b, 0x54, 0x85, 0xe6, 0x02,
0x83, 0x9e, 0x2d, 0x7d, 0xdb, 0x2c, 0x3d, 0xb3, 0x2c, 0x5a, 0x91, 0xe8, 0x90, 0x37, 0x62, 0x8c,
0xae, 0xa0, 0xb7, 0x70, 0x6f, 0x40, 0xce, 0xa1, 0x53, 0xfe, 0x92, 0x3d, 0x73, 0x58, 0xed, 0xc2,
0xf1, 0xfb, 0x7d, 0x69, 0x37, 0x0d, 0xdf, 0x4f, 0xff, 0xcc, 0x57, 0xd2, 0xdc, 0x16, 0xcb, 0x52,
0xc2, 0x8c, 0xdd, 0x17, 0xac, 0x1e, 0xb5, 0x99, 0x2d, 0x9c, 0x3d, 0x59, 0xd1, 0xaf, 0xd5, 0x77,
0xd9, 0xb5, 0x7b, 0x77, 0xfa, 0x10, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x5b, 0x27, 0x32, 0xc0, 0x03,
0x00, 0x00,
}