Giter Club home page Giter Club logo

go-tuf-metadata's People

Contributors

dependabot[bot] avatar ivanayov avatar kommendorkapten avatar mdr164 avatar rdimitrov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

go-tuf-metadata's Issues

Enable Refresh() to be called more than once

Describe the bug

Currently a Refresh() can be done only once during the lifetime of an Updater.

This is not optimal for long-living processes so it would be better if we enable calling Refresh() more than once.

References:

Reproduction steps

...

Expected behavior

Upon calling Refresh() make sure everything is up-to-date and if that's true:

  • return nil, instead of an error (better imho)
    or
  • return a custom error type so the user can check it via errors.Is (less favourite)

If something else occurred which failed us to refresh the metadata, still return the appropriate error value.

Additional context

No response

chore: Proof-of-Concept with sigstore

There should be two PoCs created with go-tuf-metadata -

  • One should be a direct replacement of go-tuf's usage with go-tuf-metadata.
  • The second should be adding multi-repository support (TAP 4/TUF) for cosign which allows for creating a consensus for trusted roots when fetching the cosign keys for rekor, fulcio, etc.

feat: Decouple signing

Is your feature request related to a problem? Please describe.

From my brief reading of the metadata code, at present your library appears to make the same mistake as theupdateframework/go-tuf in that key signing is tighly coupled to primitive and crude on-disk keyfiles.

This means that real-world secure key storage such as PKCS#11 (theupdateframework/go-tuf#427), AWS KMS (theupdateframework/go-tuf#525) and others e.g. Yubikey are not readily supported and require hacky work-around kludges to work (e.g. manually hacking json files).

Describe the solution you'd like

Of course support for signing from local keyfiles stored on disk should remain, but integration with real world applications where the private key is stored in a non-exfilterable format should be supported.

Describe alternatives you've considered

No response

Additional context

No response

feat: Make logging in library code optional

Is your feature request related to a problem? Please describe.

As of today we still pull in logrus inside library code which will then require every user of the library to pull in the same logger. This creates unnecessary dependencies for consumers of the library portion of this repo.

Describe the solution you'd like

Make logging optional for library code and/or remove the dependency on an external logger. The cleanest way would be to follow OpenTelemetrys strategy to use logr which is merely an interface for any supported logger that can be plugged into the codebase. It supports structured logging, loglevels and most importantly if no logger is supplied also supports a no-op fallback. This would also allow to continue using logrus for non-library code as logrus can be used with this interface. Work is also under way to support the new slog package of Go inside logr.

Describe alternatives you've considered

No response

Additional context

This issue was discussed prior on the CNCF Slack, the consensus was to make logging optional and more flexible as there is no hard dependency on logrus.

bug: update examples/tests to use the new jku/tuf-demo TUF repository

Describe the bug

In part of the examples that we run in CI and tests too we use the jku/tuf-demo repository as something to run go-tuf-metadata against.

Recently tuf-demo switched to using tuf-on-ci and so we had to reset the repository along with its metadata and target files and thus why some of the examples/tests currently fail. For example, the succinct roles are not available so far in tuf-on-ci so we should update that part of the examples that we depending on such target file.

To fix this, we have to update the tests and the examples to search and fetch a target from the latest tuf-demo repository.

Reproduction steps

  1. Run tests and examples
  2. See them failing

Expected behavior

Tests and examples should not fail

Additional context

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.