From b4629c8773a5523cf2c72f4d97a512227c95fc1a Mon Sep 17 00:00:00 2001 From: Eduardo Navarro Date: Fri, 22 Apr 2022 16:35:47 +0200 Subject: [PATCH] [backend] Add builder, invocation and metadata to ... ... provenance file. --- src/backend/bs_worker | 19 +++++++++++++++++++ src/backend/t/1000-bs_worker.t | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/backend/bs_worker b/src/backend/bs_worker index b56fd0ec0f0..37baef5c6af 100755 --- a/src/backend/bs_worker +++ b/src/backend/bs_worker @@ -3235,6 +3235,25 @@ sub generate_slsa_provenance_statement { 'subject' => $subject, 'predicateType' => 'https://slsa.dev/provenance/v0.2', 'predicate' => { + 'builder' => { + 'id' => $buildinfo->{'srcserver'} + }, + 'buildType' => 'https://open-build-server/worker', + 'invocation' => { + 'configSource' => { + 'uri' => BSHTTP::urlencode("$buildinfo->{'srcserver'}/source/$buildinfo->{'project'}/$buildinfo->{'package'}")."?rev=$buildinfo->{'srcmd5'}", + 'digest' => { 'md5' => $buildinfo->{'srcmd5'} }, # TODO: change to sha256 + 'entryPoint' => $buildinfo->{'file'}, + }, + }, + 'metadata' => { + 'completeness' => { + 'parameters' => 1, + 'environment' => 1, + 'materials' => 1, + }, + 'reproducible' => 0, + }, 'materials' => $buildinfo->{'materials'} || [], }, }; diff --git a/src/backend/t/1000-bs_worker.t b/src/backend/t/1000-bs_worker.t index d0df9589ca9..52f7a467ae1 100644 --- a/src/backend/t/1000-bs_worker.t +++ b/src/backend/t/1000-bs_worker.t @@ -27,6 +27,7 @@ my $buildinfo = { package => 'package1', srcmd5 => 'f157738ddea737a2b7479996175a6cec', verifymd5 => 'f157738ddea737a2b7479996175a6cec', + file => 'hello_world.spec', bdep => [ { 'notmeta' => '1', @@ -199,6 +200,25 @@ my $expected_statement = { ], 'predicateType' => 'https://slsa.dev/provenance/v0.2', 'predicate' => { + 'buildType' => 'https://open-build-server/worker', + 'builder' => { + 'id' => 'srcserver', + }, + 'invocation' => { + 'configSource' => { + 'uri' => 'srcserver/source/project1/package1?rev=f157738ddea737a2b7479996175a6cec', + 'digest' => { 'md5' => 'f157738ddea737a2b7479996175a6cec' }, + 'entryPoint' => 'hello_world.spec', + }, + }, + 'metadata' => { + 'completeness' => { + 'parameters' => 1, + 'environment' => 1, + 'materials' => 1, + }, + 'reproducible' => 0, + }, 'materials' => $expected_materials, } };