Files
pmg/pkg/analyser/analysis.go
T

44 lines
1.4 KiB
Go
Raw Normal View History

package analyser
import (
"context"
"fmt"
"buf.build/gen/go/safedep/api/grpc/go/safedep/services/malysis/v1/malysisv1grpc"
malysisv1pb "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/malysis/v1"
packagev1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/messages/package/v1"
malysisv1 "buf.build/gen/go/safedep/api/protocolbuffers/go/safedep/services/malysis/v1"
)
func SubmitPackageForAnalysis(client malysisv1grpc.MalwareAnalysisServiceClient,
ecosystem packagev1.Ecosystem, name string,
version string) (string, error) {
req := &malysisv1.AnalyzePackageRequest{
Target: &malysisv1pb.PackageAnalysisTarget{
PackageVersion: &packagev1.PackageVersion{
Package: &packagev1.Package{
Ecosystem: ecosystem,
Name: name,
},
Version: version,
},
},
}
resp, err := client.AnalyzePackage(context.Background(), req)
if err != nil {
return "", fmt.Errorf("failed to analyze %s@%s: %v", name, version, err)
}
return resp.GetAnalysisId(), nil
}
func GetAnalysisReport(client malysisv1grpc.MalwareAnalysisServiceClient,
analysisId string) (*malysisv1pb.Report, error) {
analysisReportReq := &malysisv1.GetAnalysisReportRequest{
AnalysisId: analysisId,
}
reportResp, err := client.GetAnalysisReport(context.Background(), analysisReportReq)
if err != nil {
return nil, fmt.Errorf("failed to get analysis report: %v", err)
}
return reportResp.GetReport(), nil
}