Skip to content

Commit

Permalink
Introduce a KeyManager (#2990)
Browse files Browse the repository at this point in the history
The `KeyManager` will be used by sled-agent to retrieve rack secrets via
an implementation of a `SecretRetriever` and generate derived keys.

Currently the only keys produced are those necessary for U.2 drive
encryption, and follow the derivation scheme in section 4 of RFD 301.

For initail implementation, input key material (IKM) will be retrieved
from a `SecretRetriever` backed by a sled local mechanism. Future
implementations of `SecretRetriever` will use the trust quorum rack
secret retrieved from the bootstore.
  • Loading branch information
andrewjstone authored May 8, 2023
1 parent e1b9ad1 commit 21b31c8
Show file tree
Hide file tree
Showing 4 changed files with 410 additions and 0 deletions.
23 changes: 23 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ members = [
"installinator-common",
"internal-dns",
"ipcc-key-value",
"key-manager",
"nexus",
"nexus-client",
"nexus/authz-macros",
Expand Down Expand Up @@ -79,6 +80,7 @@ default-members = [
"installinator-common",
"internal-dns",
"ipcc-key-value",
"key-manager",
"nexus",
"nexus-client",
"nexus/authz-macros",
Expand Down Expand Up @@ -264,6 +266,7 @@ rustfmt-wrapper = "0.2"
rustls = "0.21.1"
samael = { git = "https://github.com/njaremko/samael", features = ["xmlsec"], branch = "master" }
schemars = "0.8.12"
secrecy = "0.8.0"
semver = { version = "1.0.17", features = ["std", "serde"] }
serde = { version = "1.0", default-features = false, features = [ "derive" ] }
serde_derive = "1.0"
Expand Down
16 changes: 16 additions & 0 deletions key-manager/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[package]
name = "key-manager"
version = "0.1.0"
edition = "2021"
license = "MPL-2.0"

[dependencies]
async-trait.workspace = true
hkdf = "0.12.3"
secrecy.workspace = true
sha3.workspace = true
sled-hardware.workspace = true
thiserror.workspace = true
tokio.workspace = true
zeroize.workspace = true

Loading

0 comments on commit 21b31c8

Please sign in to comment.