Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Examples: ship bootstrap root.jsons for well-known repositories #2206

Open
jku opened this issue Dec 5, 2022 · 1 comment
Open

Examples: ship bootstrap root.jsons for well-known repositories #2206

jku opened this issue Dec 5, 2022 · 1 comment

Comments

@jku
Copy link
Member

jku commented Dec 5, 2022

In #2193 the client example gains Trust-On-First-Use (TOFU) functionality and support for arbitrary repositories. This is very useful for testing but has two issues:

  • we should also be an example of not using TOFU (and shipping the bootstrap root metadata) whenever possible
  • some known repositories have old root metadata that the client is incompatible with: This breaks the TOFU approach. We could workaround this issue by shipping a newer root metadata as bootstrap

So:

  • client example could ship with root.json files for known repositories like https://github.com/jku/tuf-demo, sigstore, bottlerocket, the manual repo in python-tuf sources, etc
  • these should be "hidden" a bit so that they don't confuse someone who is just looking for example code
  • client should automatically use these bootstrap roots: the initial implementation could be just if cache for {REPO} does not have root.json and bootstrap root.json for {REPO} exists, then copy bootstrap root.json to cache
  • the obvious next step is Updater feature request: verify chain of trust from bootstrapped root metadata #1168 , which is a ngclient feature that would make the example even simpler and safer
@jku jku changed the title Example: ship bootstrap root for well-known repositories Examples: ship bootstrap root.jsons for well-known repositories Dec 5, 2022
@JustinCappos
Copy link
Member

I'm supportive of this in general. What you propose seems quite simple to implement and deploy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants