Skip to content

Conversation

@Philip-NLnetLabs
Copy link
Member

Demonstrate key management using a CLI tool. Initial interface between key management and signer.

@Philip-NLnetLabs Philip-NLnetLabs marked this pull request as draft April 17, 2025 08:53
@tertsdiepraam
Copy link
Contributor

This seems to be missing the file for the keyset command.

@ximon18 ximon18 mentioned this pull request May 16, 2025
60 tasks
Copy link
Member

@mozzieongit mozzieongit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this is still a draft, but here my notes from reading this PR to understand the other PRs:

  • Add comments on the subcommands, that say what they do and how to use them
    • And a note about what to do after each command? e.g. after init / creating key, mention which command should be called next and when
  • Split up big run function into sub functions (obsolete by #108)
  • Consistently use env.in_cwd() vs raw paths (e.g. read_to_string(priv_url.path())) or make clear why not using env.in_cwd()
  • Add tests? I'm sure not all can be tested easily, but maybe some can
  • Explain to users which TTL value is expected in the propagation/cache subcommands
  • adjust the actions output after each command, to something human-actionable, so the user knows what to do with that information

ximon18 and others added 4 commits August 25, 2025 19:01
- Adds KMIP server based key generation, signing and destruction, equivalent to the existing Ring/OpenSSL functionality.
- Adds new kmip subcommands for managing KMIP server configurations.
- Adds support for referring to KMIP keys by a new KMIP URL scheme. 
- Add a feature for the KMIP crypto backend just like the Ring and OpenSSL crypto backends.
- Adds support for storing sensitive credentials in files separate to the KMIP server configuration.
ximon18 and others added 13 commits September 3, 2025 10:10
* Restructure roll commands.

* Import public keys.

* Import a public/private key pair from files.

* Add a default TTL to config. Use that for DNSKEY/CDS/CDNSKEY/DS RRsets.

* Cargo.lock.

* Support for importing KMIP keys.

* Import public/private keys in decoupled state

* Add --private-key option to importing a public/private key pair from files.

* Add remove-key command.
* Verbose status output.

* Add TODO list.

* Get rid of .map_err::<Error, _>. Just .map_err is fine if the .into() is removed.
domain_name,
keyset_state,
} = self.cmd
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it'd be nice to split this function up a bit i.e. extract all the subcommands to separate functions.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I want to introduce a struct State. Then I can see if those can be operations on State.

Self::Notify(notify) => notify.execute(env),
Self::SignZone(signzone) => signzone.execute(env),
Self::Update(update) => update.execute(env),
// Self::Help(help) => help.execute(env),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit but I think this stems from a conflict.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I know, help was disabled by Jannik until the help command can render man pages.

Copy link
Member Author

@Philip-NLnetLabs Philip-NLnetLabs Sep 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I see, in commit 6915b81:

-            // Self::Help(help) => help.execute(env),
+            Self::LdnsUpdate(ldnsupdate) => ldnsupdate.execute(env),

That was just too confusing.

Philip-NLnetLabs and others added 16 commits September 16, 2025 15:49
Cascade uses this because it can't easily tell whether the keyset state
is already initialized, in some cases.
Co-authored-by: Ximon Eighteen <[email protected]>
To avoid Cascade installing dnst and uninstalling ldns-utils that Cascade users may want to use such as ldns-verify-zone, which dnst doesn't provide yet. Also because this branch of dnst depends on an as yet unreleased version of the domain crate.

Update Cargo.lock bcause cargo-deb complains that it needs updating.

Co-authored-by: Jannik Peters <[email protected]>
Co-authored-by: Jannik Peters <[email protected]>
Co-authored-by: Philip-NLnetLabs <[email protected]>
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

Successfully merging this pull request may close these issues.

5 participants