main.go is a script that allows to assemble a TrustRoot repository Custom Resource by downloading metadata files from a specified TUF (The Update Framework) repository mirror, initializing a local TUF repository, and generating a TrustRoot Custom Resource YAML. A repository TrustRoot is required to use the sigstore policy controller in airgapped environments.
Credit for the original bash script goes to @prezha https://github.com/prezha/trustroot
$ go run main.go --mirror https://tuf-repo-cdn.sigstore.dev | yqThe tool prints the generated TrustRoot Custom Resource YAML to stdout. All other logs go to stderr, so the output YAML can be piped to yq, stored to a yaml or passed directly to kubectl...
mirror https://tuf-repo-cdn.sigstore.dev, root https://tuf-repo-cdn.sigstore.dev/10.root.json
Root status: {
"local": "/Users/falcorocks/.sigstore/root",
"remote": "https://tuf-repo-cdn.sigstore.dev",
"metadata": {
"root.json": {
"version": 10,
"len": 6911,
"expiration": "19 Feb 25 08:04 UTC",
"error": ""
},
"snapshot.json": {
"version": 156,
"len": 1758,
"expiration": "31 Aug 34 13:31 UTC",
"error": ""
},
"targets.json": {
"version": 10,
"len": 5624,
"expiration": "24 Aug 34 07:16 UTC",
"error": ""
},
"timestamp.json": {
"version": 251,
"len": 447,
"expiration": "25 Dec 24 13:26 UTC",
"error": ""
}
},
"targets": [
"trusted_root.json",
"artifact.pub",
"ctfe.pub",
"ctfe_2022.pub",
"fulcio.crt.pem",
"fulcio_intermediate_v1.crt.pem",
"fulcio_v1.crt.pem",
"rekor.pub"
]
}apiVersion: policy.sigstore.dev/v1alpha1
kind: TrustRoot
metadata:
name: tuf-repo-cdn.sigstore.dev-1734607492
spec:
repository:
root: |-
ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=
mirrorFS: |-
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--mirror: Specifies the URL of the Sigstore TUF Repository Mirror. If not provided, the default mirror URLhttps://tuf-repo-cdn.sigstore.devis used.--help: Prints the help message and exits.
- Mirror URL: The tool uses the specified mirror URL (or the default mirror URL if not provided) to fetch metadata files.
- Discover Latest
root.json: The tool automatically discovers the latestroot.jsonfile from the mirror by fetching the directory listing and identifying the latest versionedroot.jsonfile. - Download Metadata Files: The tool downloads the metadata files from the mirror:
root.jsonsnapshot.jsontargets.jsontimestamp.json
- Initialize Local TUF Repository: The tool initializes a local TUF repository using the downloaded
root.jsonfile. - Move Targets Directory: The tool moves the targets directory from the local TUF repository to a temporary working directory.
- Compress Repository: The tool compresses the repository directory into a tar.gz archive.
- Base64 Encode Files: The tool base64 encodes the repository archive and the
root.jsonfile. - Generate TrustRoot YAML: The tool generates a TrustRoot Custom Resource YAML and prints it to stdout.