diff --git a/main_test.go b/main_test.go index cbef54b..0f8ef63 100644 --- a/main_test.go +++ b/main_test.go @@ -286,6 +286,12 @@ func Test_runVerify(t *testing.T) { err: pkg.ErrorMismatchVersionedTag, }, // TODO(laurent): add tests for special cases of buidlers' ref. + { + name: "rekor upload bypassed", + artifact: "./testdata/binary-linux-amd64-no-tlog-upload", + source: "github.com/asraa/slsa-on-github-test", + err: pkg.ErrorRekorSearch, + }, } for _, tt := range tests { tt := tt // Re-initializing variable so it is not changed while executing the closure below diff --git a/pkg/provenance.go b/pkg/provenance.go index 71ef16f..be48d82 100644 --- a/pkg/provenance.go +++ b/pkg/provenance.go @@ -64,7 +64,7 @@ var ( ErrorMismatchTag = errors.New("tag used to generate the binary does not match provenance") ErrorMismatchVersionedTag = errors.New("tag used to generate the binary does not match provenance") ErrorInvalidSemver = errors.New("invalid semantic version") - errorRekorSearch = errors.New("error searching rekor entries") + ErrorRekorSearch = errors.New("error searching rekor entries") errorMismatchHash = errors.New("binary artifact hash does not match provenance subject") errorInvalidVersion = errors.New("invalid version") errorInvalidRef = errors.New("invalid ref") @@ -106,11 +106,11 @@ func GetRekorEntries(rClient *client.Rekor, artifactHash string) ([]string, erro params.Query = &models.SearchIndex{Hash: fmt.Sprintf("sha256:%v", artifactHash)} resp, err := rClient.Index.SearchIndex(params) if err != nil { - return nil, fmt.Errorf("%w: %s", errorRekorSearch, err.Error()) + return nil, fmt.Errorf("%w: %s", ErrorRekorSearch, err.Error()) } if len(resp.Payload) == 0 { - return nil, fmt.Errorf("%w: no matching entries found", errorRekorSearch) + return nil, fmt.Errorf("%w: no matching entries found", ErrorRekorSearch) } return resp.GetPayload(), nil diff --git a/pkg/provenance_test.go b/pkg/provenance_test.go index a05d68a..7e07222 100644 --- a/pkg/provenance_test.go +++ b/pkg/provenance_test.go @@ -55,7 +55,7 @@ func Test_GetRekorEntries(t *testing.T) { res: searchResult{ err: index.NewSearchIndexDefault(500), }, - expected: errorRekorSearch, + expected: ErrorRekorSearch, }, { name: "no rekor entries found", @@ -66,7 +66,7 @@ func Test_GetRekorEntries(t *testing.T) { Payload: []string{}, }, }, - expected: errorRekorSearch, + expected: ErrorRekorSearch, }, { name: "valid rekor entries found", diff --git a/testdata/binary-linux-amd64-no-tlog-upload b/testdata/binary-linux-amd64-no-tlog-upload new file mode 100644 index 0000000..051611e Binary files /dev/null and b/testdata/binary-linux-amd64-no-tlog-upload differ diff --git a/testdata/binary-linux-amd64-no-tlog-upload.intoto.jsonl b/testdata/binary-linux-amd64-no-tlog-upload.intoto.jsonl new file mode 100644 index 0000000..abc7336 --- /dev/null +++ b/testdata/binary-linux-amd64-no-tlog-upload.intoto.jsonl @@ -0,0 +1 @@ +{"payloadType":"application/vnd.in-toto+json","payload":"eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjAuMSIsInByZWRpY2F0ZVR5cGUiOiJodHRwczovL3Nsc2EuZGV2L3Byb3ZlbmFuY2UvdjAuMiIsInN1YmplY3QiOlt7Im5hbWUiOiJiaW5hcnktbGludXgtYW1kNjQtY29uZmlnMSIsImRpZ2VzdCI6eyJzaGEyNTYiOiJhOGQ3NzA1NTk0OTcxMTIzMDUwOGNkMTdkMGFjMTRmNGQxOTgzMDkxMzNkZjJkMmJjNGViZmExYzIwY2Y3Njg3In19XSwicHJlZGljYXRlIjp7ImJ1aWxkZXIiOnsiaWQiOiJodHRwczovL2dpdGh1Yi5jb20vYXNyYWEvc2xzYS1naXRodWItZ2VuZXJhdG9yLy5naXRodWIvd29ya2Zsb3dzL2J1aWxkZXJfZ29fc2xzYTMueW1sQHJlZnMvaGVhZHMvc2tpcC1yZWtvci11cGxvYWQifSwiYnVpbGRUeXBlIjoiaHR0cHM6Ly9naXRodWIuY29tL3Nsc2EtZnJhbWV3b3JrL3Nsc2EtZ2l0aHViLWdlbmVyYXRvci1nb0B2MSIsImludm9jYXRpb24iOnsiY29uZmlnU291cmNlIjp7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdEByZWZzL2hlYWRzL21haW4iLCJkaWdlc3QiOnsic2hhMSI6IjMxNzEyZWJkMTYwOTJkMWQ3YjUxODI4ODE4NDBjOTg4NWFiYWZkNzMifSwiZW50cnlQb2ludCI6IkdvIFNMU0EgUmVsZWFzZSJ9LCJwYXJhbWV0ZXJzIjp7fSwiZW52aXJvbm1lbnQiOnsiYXJjaCI6Ilg2NCIsImdpdGh1Yl9hY3RvciI6ImFzcmFhIiwiZ2l0aHViX2Jhc2VfcmVmIjoiIiwiZ2l0aHViX2V2ZW50X25hbWUiOiJ3b3JrZmxvd19kaXNwYXRjaCIsImdpdGh1Yl9ldmVudF9wYXlsb2FkIjp7ImlucHV0cyI6bnVsbCwicmVmIjoicmVmcy9oZWFkcy9tYWluIiwicmVwb3NpdG9yeSI6eyJhbGxvd19mb3JraW5nIjp0cnVlLCJhcmNoaXZlX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC97YXJjaGl2ZV9mb3JtYXR9ey9yZWZ9IiwiYXJjaGl2ZWQiOmZhbHNlLCJhc3NpZ25lZXNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0L2Fzc2lnbmVlc3svdXNlcn0iLCJibG9ic191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZ2l0L2Jsb2Jzey9zaGF9IiwiYnJhbmNoZXNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0L2JyYW5jaGVzey9icmFuY2h9IiwiY2xvbmVfdXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QuZ2l0IiwiY29sbGFib3JhdG9yc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvY29sbGFib3JhdG9yc3svY29sbGFib3JhdG9yfSIsImNvbW1lbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9jb21tZW50c3svbnVtYmVyfSIsImNvbW1pdHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0L2NvbW1pdHN7L3NoYX0iLCJjb21wYXJlX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9jb21wYXJlL3tiYXNlfS4uLntoZWFkfSIsImNvbnRlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9jb250ZW50cy97K3BhdGh9IiwiY29udHJpYnV0b3JzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9jb250cmlidXRvcnMiLCJjcmVhdGVkX2F0IjoiMjAyMi0wMi0xNVQxNTozMzo0OVoiLCJkZWZhdWx0X2JyYW5jaCI6Im1haW4iLCJkZXBsb3ltZW50c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZGVwbG95bWVudHMiLCJkZXNjcmlwdGlvbiI6IlRlc3QgZm9yIFNMU0EiLCJkaXNhYmxlZCI6ZmFsc2UsImRvd25sb2Fkc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZG93bmxvYWRzIiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9ldmVudHMiLCJmb3JrIjp0cnVlLCJmb3JrcyI6MCwiZm9ya3NfY291bnQiOjAsImZvcmtzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9mb3JrcyIsImZ1bGxfbmFtZSI6ImFzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QiLCJnaXRfY29tbWl0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZ2l0L2NvbW1pdHN7L3NoYX0iLCJnaXRfcmVmc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZ2l0L3JlZnN7L3NoYX0iLCJnaXRfdGFnc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvZ2l0L3RhZ3N7L3NoYX0iLCJnaXRfdXJsIjoiZ2l0Oi8vZ2l0aHViLmNvbS9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0LmdpdCIsImhhc19kb3dubG9hZHMiOnRydWUsImhhc19pc3N1ZXMiOmZhbHNlLCJoYXNfcGFnZXMiOmZhbHNlLCJoYXNfcHJvamVjdHMiOnRydWUsImhhc193aWtpIjp0cnVlLCJob21lcGFnZSI6bnVsbCwiaG9va3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0L2hvb2tzIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdCIsImlkIjo0NTk2MzkxNTAsImlzX3RlbXBsYXRlIjpmYWxzZSwiaXNzdWVfY29tbWVudF91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvaXNzdWVzL2NvbW1lbnRzey9udW1iZXJ9IiwiaXNzdWVfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9pc3N1ZXMvZXZlbnRzey9udW1iZXJ9IiwiaXNzdWVzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9pc3N1ZXN7L251bWJlcn0iLCJrZXlzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9rZXlzey9rZXlfaWR9IiwibGFiZWxzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9sYWJlbHN7L25hbWV9IiwibGFuZ3VhZ2UiOiJHbyIsImxhbmd1YWdlc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvbGFuZ3VhZ2VzIiwibGljZW5zZSI6eyJrZXkiOiJhcGFjaGUtMi4wIiwibmFtZSI6IkFwYWNoZSBMaWNlbnNlIDIuMCIsIm5vZGVfaWQiOiJNRGM2VEdsalpXNXpaVEk9Iiwic3BkeF9pZCI6IkFwYWNoZS0yLjAiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL2xpY2Vuc2VzL2FwYWNoZS0yLjAifSwibWVyZ2VzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9tZXJnZXMiLCJtaWxlc3RvbmVzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9taWxlc3RvbmVzey9udW1iZXJ9IiwibWlycm9yX3VybCI6bnVsbCwibmFtZSI6InNsc2Etb24tZ2l0aHViLXRlc3QiLCJub2RlX2lkIjoiUl9rZ0RPRzJXSmJnIiwibm90aWZpY2F0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3Qvbm90aWZpY2F0aW9uc3s/c2luY2UsYWxsLHBhcnRpY2lwYXRpbmd9Iiwib3Blbl9pc3N1ZXMiOjAsIm9wZW5faXNzdWVzX2NvdW50IjowLCJvd25lciI6eyJhdmF0YXJfdXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUxOTQ1Njk/dj00IiwiZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvZXZlbnRzey9wcml2YWN5fSIsImZvbGxvd2Vyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL2ZvbGxvd2VycyIsImZvbGxvd2luZ191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL2ZvbGxvd2luZ3svb3RoZXJfdXNlcn0iLCJnaXN0c191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL2dpc3Rzey9naXN0X2lkfSIsImdyYXZhdGFyX2lkIjoiIiwiaHRtbF91cmwiOiJodHRwczovL2dpdGh1Yi5jb20vYXNyYWEiLCJpZCI6NTE5NDU2OSwibG9naW4iOiJhc3JhYSIsIm5vZGVfaWQiOiJNRFE2VlhObGNqVXhPVFExTmprPSIsIm9yZ2FuaXphdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9vcmdzIiwicmVjZWl2ZWRfZXZlbnRzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvcmVjZWl2ZWRfZXZlbnRzIiwicmVwb3NfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9yZXBvcyIsInNpdGVfYWRtaW4iOmZhbHNlLCJzdGFycmVkX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvc3RhcnJlZHsvb3duZXJ9ey9yZXBvfSIsInN1YnNjcmlwdGlvbnNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9zdWJzY3JpcHRpb25zIiwidHlwZSI6IlVzZXIiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhIn0sInByaXZhdGUiOmZhbHNlLCJwdWxsc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvcHVsbHN7L251bWJlcn0iLCJwdXNoZWRfYXQiOiIyMDIyLTA1LTI2VDE4OjE1OjM0WiIsInJlbGVhc2VzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9yZWxlYXNlc3svaWR9Iiwic2l6ZSI6MTMzMywic3NoX3VybCI6ImdpdEBnaXRodWIuY29tOmFzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QuZ2l0Iiwic3RhcmdhemVyc19jb3VudCI6MCwic3RhcmdhemVyc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3Qvc3RhcmdhemVycyIsInN0YXR1c2VzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9zdGF0dXNlcy97c2hhfSIsInN1YnNjcmliZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9zdWJzY3JpYmVycyIsInN1YnNjcmlwdGlvbl91cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3Qvc3Vic2NyaXB0aW9uIiwic3ZuX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3JhYS9zbHNhLW9uLWdpdGh1Yi10ZXN0IiwidGFnc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QvdGFncyIsInRlYW1zX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC90ZWFtcyIsInRvcGljcyI6W10sInRyZWVzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXNyYWEvc2xzYS1vbi1naXRodWItdGVzdC9naXQvdHJlZXN7L3NoYX0iLCJ1cGRhdGVkX2F0IjoiMjAyMi0wMi0xNVQxNTozNjo0MVoiLCJ1cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3QiLCJ2aXNpYmlsaXR5IjoicHVibGljIiwid2F0Y2hlcnMiOjAsIndhdGNoZXJzX2NvdW50IjowfSwic2VuZGVyIjp7ImF2YXRhcl91cmwiOiJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTE5NDU2OT92PTQiLCJldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9ldmVudHN7L3ByaXZhY3l9IiwiZm9sbG93ZXJzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvZm9sbG93ZXJzIiwiZm9sbG93aW5nX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvZm9sbG93aW5ney9vdGhlcl91c2VyfSIsImdpc3RzX3VybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEvZ2lzdHN7L2dpc3RfaWR9IiwiZ3JhdmF0YXJfaWQiOiIiLCJodG1sX3VybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3JhYSIsImlkIjo1MTk0NTY5LCJsb2dpbiI6ImFzcmFhIiwibm9kZV9pZCI6Ik1EUTZWWE5sY2pVeE9UUTFOams9Iiwib3JnYW5pemF0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL29yZ3MiLCJyZWNlaXZlZF9ldmVudHNfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9yZWNlaXZlZF9ldmVudHMiLCJyZXBvc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL3JlcG9zIiwic2l0ZV9hZG1pbiI6ZmFsc2UsInN0YXJyZWRfdXJsIjoiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS91c2Vycy9hc3JhYS9zdGFycmVkey9vd25lcn17L3JlcG99Iiwic3Vic2NyaXB0aW9uc191cmwiOiJodHRwczovL2FwaS5naXRodWIuY29tL3VzZXJzL2FzcmFhL3N1YnNjcmlwdGlvbnMiLCJ0eXBlIjoiVXNlciIsInVybCI6Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vdXNlcnMvYXNyYWEifSwid29ya2Zsb3ciOiIuZ2l0aHViL3dvcmtmbG93cy9zbHNhLXJldXNhYmxlLnlhbWwifSwiZ2l0aHViX2hlYWRfcmVmIjoiIiwiZ2l0aHViX3JlZiI6InJlZnMvaGVhZHMvbWFpbiIsImdpdGh1Yl9yZWZfdHlwZSI6ImJyYW5jaCIsImdpdGh1Yl9ydW5fYXR0ZW1wdCI6IjEiLCJnaXRodWJfcnVuX2lkIjoiMjM5MjM1NjA0MyIsImdpdGh1Yl9ydW5fbnVtYmVyIjoiMTM5IiwiZ2l0aHViX3NoYTEiOiIzMTcxMmViZDE2MDkyZDFkN2I1MTgyODgxODQwYzk4ODVhYmFmZDczIiwib3MiOiJ1YnVudHUyMCJ9fSwiYnVpbGRDb25maWciOnsidmVyc2lvbiI6MSwic3RlcHMiOlt7ImNvbW1hbmQiOlsiL29wdC9ob3N0ZWR0b29sY2FjaGUvZ28vMS4xNy4xMC94NjQvYmluL2dvIiwibW9kIiwidmVuZG9yIl0sImVudiI6bnVsbCwid29ya2luZ0RpciI6Ii9ob21lL3J1bm5lci93b3JrL3Nsc2Etb24tZ2l0aHViLXRlc3Qvc2xzYS1vbi1naXRodWItdGVzdCJ9LHsiY29tbWFuZCI6WyIvb3B0L2hvc3RlZHRvb2xjYWNoZS9nby8xLjE3LjEwL3g2NC9iaW4vZ28iLCJidWlsZCIsIi1tb2Q9dmVuZG9yIiwiLXRyaW1wYXRoIiwiLXRhZ3M9bmV0Z28iLCItbyIsImJpbmFyeS1saW51eC1hbWQ2NC1jb25maWcxIl0sImVudiI6WyJHT09TPWxpbnV4IiwiR09BUkNIPWFtZDY0IiwiQ0dPX0VOQUJMRUQ9MCIsIkdPMTExTU9EVUxFPW9uIl0sIndvcmtpbmdEaXIiOiIvaG9tZS9ydW5uZXIvd29yay9zbHNhLW9uLWdpdGh1Yi10ZXN0L3Nsc2Etb24tZ2l0aHViLXRlc3QifV19LCJtZXRhZGF0YSI6eyJidWlsZEludm9jYXRpb25JRCI6IjIzOTIzNTYwNDMtMSIsImNvbXBsZXRlbmVzcyI6eyJwYXJhbWV0ZXJzIjp0cnVlLCJlbnZpcm9ubWVudCI6ZmFsc2UsIm1hdGVyaWFscyI6ZmFsc2V9LCJyZXByb2R1Y2libGUiOmZhbHNlfSwibWF0ZXJpYWxzIjpbeyJ1cmkiOiJnaXQraHR0cHM6Ly9naXRodWIuY29tL2FzcmFhL3Nsc2Etb24tZ2l0aHViLXRlc3RAcmVmcy9oZWFkcy9tYWluIiwiZGlnZXN0Ijp7InNoYTEiOiIzMTcxMmViZDE2MDkyZDFkN2I1MTgyODgxODQwYzk4ODVhYmFmZDczIn19LHsidXJpIjoiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvdmlydHVhbC1lbnZpcm9ubWVudHMvcmVsZWFzZXMvdGFnL3VidW50dTIwLzIwMjIwNTE1LjEifV19fQ==","signatures":[{"keyid":"","sig":"MEQCIEVFBL2XcHvWXJY63vR+M90gxusTZPs+cCMn9cIE4WL5AiAXBqT40sBw8NMwb9ORkidIbJfJ/Q/SS34XHoiCK9eqBw=="}]} \ No newline at end of file