@@ -132,36 +132,44 @@ def _extract_from_slsa_v1(payload: InTotoV1Payload) -> tuple[str | None, str | N
132132 return None , None
133133
134134 # Extract the repository URL.
135- repo = None
136- if build_type == "https://slsa-framework.github.io/gcb-buildtypes/triggered-build/v1" :
137- repo = json_extract (build_def , ["externalParameters" , "sourceToBuild" , "repository" ], str )
138- if not repo :
139- repo = json_extract (build_def , ["externalParameters" , "configSource" , "repository" ], str )
140- if build_type == "https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1" :
141- repo = json_extract (build_def , ["externalParameters" , "workflow" , "repository" ], str )
135+ match build_type :
136+ case "https://slsa-framework.github.io/gcb-buildtypes/triggered-build/v1" :
137+ repo = json_extract (build_def , ["externalParameters" , "sourceToBuild" , "repository" ], str )
138+ if not repo :
139+ repo = json_extract (build_def , ["externalParameters" , "configSource" , "repository" ], str )
140+ case "https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1" :
141+ repo = json_extract (build_def , ["externalParameters" , "workflow" , "repository" ], str )
142+ case "https://github.com/oracle/macaron/tree/main/src/macaron/resources/provenance-buildtypes/oci/v1" :
143+ repo = json_extract (build_def , ["externalParameters" , "source" ], str )
144+ case _:
145+ logger .debug ("Unsupported build type for SLSA v1: %s" , build_type )
146+ return None , None
142147
143148 if not repo :
144- logger .debug ("Repo required to extract commit from SLSA v1." )
149+ logger .debug ("Repo URL not found in SLSA v1 payload ." )
145150 return None , None
146151
147152 # Extract the commit hash.
148153 commit = None
149- deps = json_extract (build_def , ["resolvedDependencies" ], list )
150- if not deps :
151- return repo , None
152- for dep in deps :
153- if not isinstance (dep , dict ):
154- continue
155- uri = json_extract (dep , ["uri" ], str )
156- if not uri :
157- continue
158- url = _clean_spdx (uri )
159- if url != repo :
160- continue
161- digest_set = json_extract (dep , ["digest" ], dict )
162- if not digest_set :
163- continue
164- commit = _extract_commit_from_digest_set (digest_set , SLSA_V1_DIGEST_SET_GIT_ALGORITHMS )
154+ if build_type == "https://github.com/oracle/macaron/tree/main/src/macaron/resources/provenance-buildtypes/oci/v1" :
155+ commit = json_extract (build_def , ["internalParameters" , "buildEnvVar" , "BLD_COMMIT_HASH" ], str )
156+ else :
157+ deps = json_extract (build_def , ["resolvedDependencies" ], list )
158+ if not deps :
159+ return repo , None
160+ for dep in deps :
161+ if not isinstance (dep , dict ):
162+ continue
163+ uri = json_extract (dep , ["uri" ], str )
164+ if not uri :
165+ continue
166+ url = _clean_spdx (uri )
167+ if url != repo :
168+ continue
169+ digest_set = json_extract (dep , ["digest" ], dict )
170+ if not digest_set :
171+ continue
172+ commit = _extract_commit_from_digest_set (digest_set , SLSA_V1_DIGEST_SET_GIT_ALGORITHMS )
165173
166174 return repo , commit or None
167175
0 commit comments