Show HN: Rot - Offline secrets management
github.com
github.com
https://www.gnu.org/philosophy/selling-exceptions.en.html
It's something that enables projects to become free software.
This type of approach would not pass a code review of something as security-critical as a secrets management tool.
E.g.: this generally prevents "reproducible builds", and allows you to "sneak in" changes even if downstream users aren't modifying anything themselves. It's a recipe for a supply-chain attack.
In the end, things are versioned like any other Go program, builds are 100% reproducible.
[0]: https://github.com/candiddev/rot/blob/9168285d9ccfe783dc8234...
If I understand the sibling comment by the author[1] correctly, then the versioning of the "shared" module is via Git submodules, which point at a specific commit hash.
The only issue is that changes to submodule commit hashes are a little more difficult to audit, because they're embedded in the git repo files instead of the source code.
replace github.com/candiddev/shared => ./shared
replace github.com/google/go-jsonnet => github.com/thequailman/go-jsonnet v0.0.0-20230924031349-110b4ca1dc1a
The replacement with ./shared means it's using exactly the version on disk (which is in a submodule here). The go-jsonnet replacement points to a specific commit.Here's a diagram of Rot's secrets wrapping works: https://rotx.dev/docs/explanations/secret-wrapping/