From d732278b1ed1658fb5979d2e77f85834c652e35c Mon Sep 17 00:00:00 2001 From: Philip Tricca Date: Thu, 9 Jul 2026 20:49:41 -0700 Subject: [PATCH] replace use of attest-mock binary w/ API this includes required updates to dependencies: camino, clap, ed25519-dalek, ipnet, log, thiserror@2.0.17, serde_with, rsa, rustix, zerocopy --- .github/buildomat/jobs/build-and-test.sh | 6 - .github/workflows/rust.yml | 6 - Cargo.lock | 565 +++++++++++++++++------ Cargo.toml | 7 +- tls/Cargo.toml | 3 +- tls/build.rs | 66 ++- tls/src/lib.rs | 29 +- 7 files changed, 459 insertions(+), 223 deletions(-) diff --git a/.github/buildomat/jobs/build-and-test.sh b/.github/buildomat/jobs/build-and-test.sh index acd6b00..c3e1765 100644 --- a/.github/buildomat/jobs/build-and-test.sh +++ b/.github/buildomat/jobs/build-and-test.sh @@ -12,10 +12,4 @@ set -o xtrace cargo --version rustc --version -# dependency used by `build.rs` to build measurement log & corpus -cargo install --locked \ - --git https://github.com/oxidecomputer/dice-util \ - --rev 4b408edc1d00f108ddf635415d783e6f12fe9641 \ - attest-mock - cargo test diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d802c5a..2679f96 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -43,12 +43,6 @@ jobs: run: cargo --version - name: Report rustc version run: rustc --version - - name: Install attest-mock - run: | - cargo install --locked \ - --git https://github.com/oxidecomputer/dice-util \ - --rev 4b408edc1d00f108ddf635415d783e6f12fe9641 \ - attest-mock - name: Build run: cargo build --all-targets --verbose - name: Run tests diff --git a/Cargo.lock b/Cargo.lock index d457f92..0609c7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,6 +29,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -52,9 +61,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -67,15 +76,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -102,9 +111,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "async-trait" @@ -114,17 +123,17 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "attest-data" version = "0.5.0" -source = "git+https://github.com/oxidecomputer/dice-util?rev=d7472bfa91aee859c3fe0bdc1dbb1e320285228e#d7472bfa91aee859c3fe0bdc1dbb1e320285228e" +source = "git+https://github.com/oxidecomputer/dice-util?rev=861fe4098abc8d0bba2d26a4da7bec68e21f5ba5#861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" dependencies = [ "const-oid", "der", - "getrandom 0.3.4", + "getrandom 0.4.3", "hex", "hubpack", "rats-corim", @@ -133,7 +142,24 @@ dependencies = [ "serde_with", "sha3", "static_assertions", - "thiserror 2.0.17", + "thiserror 2.0.18", +] + +[[package]] +name = "attest-mock" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/dice-util?rev=861fe4098abc8d0bba2d26a4da7bec68e21f5ba5#861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" +dependencies = [ + "anyhow", + "attest-data", + "clap", + "hex", + "hubpack", + "knus", + "rats-corim", + "slog", + "slog-error-chain 0.1.0 (git+https://github.com/oxidecomputer/slog-error-chain?rev=15f69041f45774602108e47fb25e705dc23acfb2)", + "thiserror 2.0.18", ] [[package]] @@ -228,16 +254,19 @@ dependencies = [ ] [[package]] -name = "bumpalo" -version = "3.18.1" +name = "bs58" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] [[package]] -name = "byteorder" -version = "1.5.0" +name = "bumpalo" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" [[package]] name = "bytes" @@ -247,9 +276,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "camino" -version = "1.2.1" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" dependencies = [ "serde_core", ] @@ -322,9 +351,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -332,34 +361,34 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", - "terminal_size 0.4.2", + "terminal_size 0.4.4", ] [[package]] name = "clap_derive" -version = "4.5.40" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "cmake" @@ -470,14 +499,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -485,27 +514,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -529,23 +557,22 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "powerfmt", - "serde", + "serde_core", ] [[package]] name = "dice-mfg-msgs" version = "0.3.0" -source = "git+https://github.com/oxidecomputer/dice-util?rev=d7472bfa91aee859c3fe0bdc1dbb1e320285228e#d7472bfa91aee859c3fe0bdc1dbb1e320285228e" +source = "git+https://github.com/oxidecomputer/dice-util?rev=861fe4098abc8d0bba2d26a4da7bec68e21f5ba5#861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" dependencies = [ "const-oid", "corncobs", @@ -553,7 +580,7 @@ dependencies = [ "hubpack", "serde", "serde-big-array", - "thiserror 2.0.17", + "thiserror 2.0.18", "x509-cert", "zerocopy", ] @@ -561,18 +588,20 @@ dependencies = [ [[package]] name = "dice-util-barcode" version = "0.1.0" -source = "git+https://github.com/oxidecomputer/dice-util?rev=d7472bfa91aee859c3fe0bdc1dbb1e320285228e#d7472bfa91aee859c3fe0bdc1dbb1e320285228e" +source = "git+https://github.com/oxidecomputer/dice-util?rev=861fe4098abc8d0bba2d26a4da7bec68e21f5ba5#861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "dice-verifier" version = "0.3.0-pre0" -source = "git+https://github.com/oxidecomputer/dice-util?rev=d7472bfa91aee859c3fe0bdc1dbb1e320285228e#d7472bfa91aee859c3fe0bdc1dbb1e320285228e" +source = "git+https://github.com/oxidecomputer/dice-util?rev=861fe4098abc8d0bba2d26a4da7bec68e21f5ba5#861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" dependencies = [ + "anyhow", "async-trait", "attest-data", + "camino", "const-oid", "ed25519-dalek", "env_logger", @@ -581,11 +610,12 @@ dependencies = [ "libipcc 0.1.0 (git+https://github.com/oxidecomputer/ipcc-rs?rev=7cdf2ab9c8d9e9267a8b366aa780c6c26f9a5ecf)", "log", "p384", + "pki-playground 0.2.0 (git+https://github.com/oxidecomputer/pki-playground?rev=bcd3bf2dfe36468c494eac17463a4e10be366b35)", "rats-corim", "sha3", "slog", "tempfile", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "x509-cert", ] @@ -667,9 +697,9 @@ dependencies = [ [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek", "ed25519", @@ -704,18 +734,19 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" dependencies = [ "log", + "regex", ] [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" dependencies = [ "env_filter", "log", @@ -743,7 +774,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -774,12 +805,6 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "fs_extra" version = "1.3.0" @@ -816,10 +841,21 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + [[package]] name = "gimli" version = "0.31.1" @@ -989,9 +1025,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "is-terminal" @@ -1001,7 +1037,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1060,9 +1096,9 @@ dependencies = [ "base64 0.21.7", "chumsky", "knuffel-derive", - "miette", + "miette 5.10.0", "thiserror 1.0.69", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -1078,6 +1114,33 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "knus" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6a53d1efe403777ea7ad6dcefb498c2c09f53591c361ca175e2adb050bf95e" +dependencies = [ + "base64 0.22.1", + "chumsky", + "knus-derive", + "miette 7.6.0", + "thiserror 2.0.18", + "unicode-width 0.2.2", +] + +[[package]] +name = "knus-derive" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "268277f3967db51921dd2eb97256e533d718584e77b7ab1b0b72d1b6103f5a60" +dependencies = [ + "heck 0.5.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -1131,15 +1194,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "memchr" @@ -1156,16 +1219,35 @@ dependencies = [ "backtrace", "backtrace-ext", "is-terminal", - "miette-derive", + "miette-derive 5.10.0", "once_cell", - "owo-colors", - "supports-color", - "supports-hyperlinks", - "supports-unicode", + "owo-colors 3.5.0", + "supports-color 2.1.0", + "supports-hyperlinks 2.1.0", + "supports-unicode 2.1.0", "terminal_size 0.1.17", - "textwrap", + "textwrap 0.15.2", "thiserror 1.0.69", - "unicode-width", + "unicode-width 0.1.14", +] + +[[package]] +name = "miette" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" +dependencies = [ + "backtrace", + "backtrace-ext", + "cfg-if", + "miette-derive 7.6.0", + "owo-colors 4.3.0", + "supports-color 3.0.2", + "supports-hyperlinks 3.2.0", + "supports-unicode 3.0.0", + "terminal_size 0.4.4", + "textwrap 0.16.2", + "unicode-width 0.1.14", ] [[package]] @@ -1176,7 +1258,18 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", +] + +[[package]] +name = "miette-derive" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", ] [[package]] @@ -1201,11 +1294,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -1218,9 +1310,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-integer" @@ -1279,6 +1371,12 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +[[package]] +name = "owo-colors" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" + [[package]] name = "p384" version = "0.13.1" @@ -1342,7 +1440,37 @@ dependencies = [ "hex", "ipnet", "knuffel", - "miette", + "miette 5.10.0", + "p384", + "pem-rfc7468", + "pkcs8", + "rand", + "rsa", + "sha1", + "sha2", + "sha3", + "signature", + "spki", + "x509-cert", + "zeroize", +] + +[[package]] +name = "pki-playground" +version = "0.2.0" +source = "git+https://github.com/oxidecomputer/pki-playground?rev=bcd3bf2dfe36468c494eac17463a4e10be366b35#bcd3bf2dfe36468c494eac17463a4e10be366b35" +dependencies = [ + "camino", + "clap", + "const-oid", + "der", + "digest", + "ed25519-dalek", + "flagset", + "hex", + "ipnet", + "knus", + "miette 7.6.0", "p384", "pem-rfc7468", "pkcs8", @@ -1415,20 +1543,42 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.118", +] + [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -1439,11 +1589,17 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha", @@ -1472,7 +1628,7 @@ dependencies = [ [[package]] name = "rats-corim" version = "0.1.0" -source = "git+https://github.com/oxidecomputer/rats-corim#bb4a08dd507514f98c54f5fc67eadf14a0705f4e" +source = "git+https://github.com/oxidecomputer/rats-corim#f0d5d5168d3d31487a56df32c676b0c6240bcc6b" dependencies = [ "ciborium", "ciborium-io", @@ -1481,7 +1637,7 @@ dependencies = [ "serde", "serde_with", "strum", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -1512,9 +1668,38 @@ checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", +] + +[[package]] +name = "regex" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", ] +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + [[package]] name = "rfc6979" version = "0.4.0" @@ -1541,9 +1726,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ "const-oid", "digest", @@ -1577,15 +1762,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1729,7 +1914,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -1756,11 +1941,12 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.1" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" dependencies = [ "base64 0.22.1", + "bs58", "chrono", "hex", "indexmap 1.9.3", @@ -1775,14 +1961,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -1873,7 +2059,16 @@ version = "0.1.0" source = "git+https://github.com/oxidecomputer/slog-error-chain?branch=main#15f69041f45774602108e47fb25e705dc23acfb2" dependencies = [ "slog", - "slog-error-chain-derive", + "slog-error-chain-derive 0.1.0 (git+https://github.com/oxidecomputer/slog-error-chain?branch=main)", +] + +[[package]] +name = "slog-error-chain" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/slog-error-chain?rev=15f69041f45774602108e47fb25e705dc23acfb2#15f69041f45774602108e47fb25e705dc23acfb2" +dependencies = [ + "slog", + "slog-error-chain-derive 0.1.0 (git+https://github.com/oxidecomputer/slog-error-chain?rev=15f69041f45774602108e47fb25e705dc23acfb2)", ] [[package]] @@ -1883,7 +2078,17 @@ source = "git+https://github.com/oxidecomputer/slog-error-chain?branch=main#15f6 dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", +] + +[[package]] +name = "slog-error-chain-derive" +version = "0.1.0" +source = "git+https://github.com/oxidecomputer/slog-error-chain?rev=15f69041f45774602108e47fb25e705dc23acfb2#15f69041f45774602108e47fb25e705dc23acfb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", ] [[package]] @@ -1943,6 +2148,7 @@ version = "0.1.0" dependencies = [ "anyhow", "attest-data", + "attest-mock", "camino", "cfg-if", "clap", @@ -1952,7 +2158,7 @@ dependencies = [ "hubpack", "libipcc 0.1.0 (git+https://github.com/oxidecomputer/ipcc-rs?rev=524eb8f125003dff50b9703900c6b323f00f9e1b)", "pem-rfc7468", - "pki-playground", + "pki-playground 0.2.0 (git+https://github.com/oxidecomputer/pki-playground?rev=7600756029ce046a02c6234aa84ce230cc5eaa04)", "rustls", "secrecy", "serde", @@ -1960,7 +2166,7 @@ dependencies = [ "sha3", "slog", "slog-async", - "slog-error-chain", + "slog-error-chain 0.1.0 (git+https://github.com/oxidecomputer/slog-error-chain?branch=main)", "slog-term", "sprockets-tls", "thiserror 1.0.69", @@ -1976,7 +2182,7 @@ name = "sprockets-tls-test-utils" version = "0.1.0" dependencies = [ "camino", - "pki-playground", + "pki-playground 0.2.0 (git+https://github.com/oxidecomputer/pki-playground?rev=7600756029ce046a02c6234aa84ce230cc5eaa04)", "pretty_assertions", ] @@ -2011,7 +2217,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2030,6 +2236,15 @@ dependencies = [ "is_ci", ] +[[package]] +name = "supports-color" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" +dependencies = [ + "is_ci", +] + [[package]] name = "supports-hyperlinks" version = "2.1.0" @@ -2039,6 +2254,12 @@ dependencies = [ "is-terminal", ] +[[package]] +name = "supports-hyperlinks" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e396b6523b11ccb83120b115a0b7366de372751aa6edf19844dfb13a6af97e91" + [[package]] name = "supports-unicode" version = "2.1.0" @@ -2048,6 +2269,12 @@ dependencies = [ "is-terminal", ] +[[package]] +name = "supports-unicode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" + [[package]] name = "syn" version = "1.0.109" @@ -2061,9 +2288,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -2078,14 +2305,14 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -2111,12 +2338,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" dependencies = [ "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2127,7 +2354,17 @@ checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", +] + +[[package]] +name = "textwrap" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" +dependencies = [ + "unicode-linebreak", + "unicode-width 0.2.2", ] [[package]] @@ -2141,11 +2378,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -2156,18 +2393,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2181,35 +2418,49 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tls_codec" version = "0.4.2" @@ -2228,7 +2479,7 @@ checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2255,7 +2506,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2339,6 +2590,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "untrusted" version = "0.9.0" @@ -2394,7 +2651,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", "wasm-bindgen-shared", ] @@ -2416,7 +2673,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2473,7 +2730,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2484,7 +2741,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] @@ -2652,42 +2909,42 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.118", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 7a62645..0e358ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,12 +19,13 @@ panic = "abort" [workspace.dependencies] anyhow = { version = "1", default-features = false } camino = { version = "1.1.7", default-features = false, features = ["serde1"] } -attest-data = { git = "https://github.com/oxidecomputer/dice-util", rev = "d7472bfa91aee859c3fe0bdc1dbb1e320285228e" } +attest-data = { git = "https://github.com/oxidecomputer/dice-util", rev = "861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" } +attest-mock = { git = "https://github.com/oxidecomputer/dice-util", rev = "861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" } clap = { version = "4", default-features = false, features = ["std", "derive", "default", "wrap_help"] } ciborium = "0.2.2" cfg-if = "1.0" -dice-mfg-msgs = { git = "https://github.com/oxidecomputer/dice-util", rev = "d7472bfa91aee859c3fe0bdc1dbb1e320285228e" } -dice-verifier = { git = "https://github.com/oxidecomputer/dice-util", rev = "d7472bfa91aee859c3fe0bdc1dbb1e320285228e" } +dice-mfg-msgs = { git = "https://github.com/oxidecomputer/dice-util", rev = "861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" } +dice-verifier = { git = "https://github.com/oxidecomputer/dice-util", rev = "861fe4098abc8d0bba2d26a4da7bec68e21f5ba5" } ed25519-dalek = { version = "2.1", default-features = false, features = ["digest", "pkcs8"] } libipcc = { git = "https://github.com/oxidecomputer/ipcc-rs", rev = "524eb8f125003dff50b9703900c6b323f00f9e1b" } pem-rfc7468 = { version = "0.7.0"} diff --git a/tls/Cargo.toml b/tls/Cargo.toml index 249950c..8b70c0f 100644 --- a/tls/Cargo.toml +++ b/tls/Cargo.toml @@ -32,11 +32,12 @@ zeroize.workspace = true [build-dependencies] anyhow.workspace = true +attest-mock = { workspace = true, optional = true } camino = { workspace = true, optional = true } pki-playground = { workspace = true, optional = true } [features] -unittest = ["camino", "pki-playground"] +unittest = ["attest-mock", "camino", "pki-playground"] [dev-dependencies] sprockets-tls = { path = ".", features = ["unittest"] } diff --git a/tls/build.rs b/tls/build.rs index 4bd3e8f..5721741 100644 --- a/tls/build.rs +++ b/tls/build.rs @@ -6,6 +6,8 @@ use anyhow::Result; #[cfg(feature = "unittest")] use anyhow::{anyhow, Context}; #[cfg(feature = "unittest")] +use attest_mock::MockData; +#[cfg(feature = "unittest")] use camino::Utf8PathBuf; #[cfg(feature = "unittest")] use pki_playground::{config, OutputFileExistsBehavior}; @@ -15,27 +17,20 @@ use pki_playground::{config, OutputFileExistsBehavior}; #[cfg(target_os = "illumos")] static OXIDE_PLATFORM: &str = "/usr/platform/oxide/lib/amd64/"; -/// Execute one of the `attest-mock` commands to generate attestation -/// artifacts used in testing. #[cfg(feature = "unittest")] -fn attest_gen_cmd(command: &str, input: &str, output: &str) -> Result<()> { - // attest-mock "input" "cmd" > "output" - let mut cmd = std::process::Command::new("attest-mock"); - cmd.arg(input).arg(command); - let cmd_output = - cmd.output().context("executing command \"attest-mock\"")?; - - if cmd_output.status.success() { - std::fs::write(output, cmd_output.stdout).context("write {output}") - } else { - let stderr = String::from_utf8(cmd_output.stderr) - .context("String from attest-mock stderr")?; - println!("stderr: {stderr}"); - - Err(anyhow!("cmd failed: {cmd:?}")) - } +fn mock_data(input: &str, output: &str) -> Result<()> +where + ::Error: std::error::Error + Send + Sync + 'static, +{ + let mock = R::load(input)?; + let log = mock.to_bytes()?; + Ok(std::fs::write(output, &log).with_context(|| { + format!("write mock measurement log to file: {}", output) + })?) } +/// Execute one of the `attest-mock` commands to generate attestation +/// artifacts used in testing. fn main() -> Result<()> { #[cfg(target_os = "illumos")] { @@ -45,8 +40,10 @@ fn main() -> Result<()> { #[cfg(feature = "unittest")] { + use attest_mock::{MockCorim, MockLog}; + // output directory where we put data generated test inputs - let out = Utf8PathBuf::from( + let outdir = Utf8PathBuf::from( std::env::var("OUT_DIR") .context("Get OUT_DIR from the environment")?, ); @@ -57,26 +54,27 @@ fn main() -> Result<()> { anyhow!("Loading config from \"{}\" failed: {e:?}", config_path) })?; - doc.write_key_pairs(out.clone(), OutputFileExistsBehavior::Skip) + doc.write_key_pairs(outdir.clone(), OutputFileExistsBehavior::Skip) .map_err(|e| anyhow!("writing key pairs failed: {e:?}"))?; - doc.write_certificates(out.clone(), OutputFileExistsBehavior::Skip) + doc.write_certificates(outdir.clone(), OutputFileExistsBehavior::Skip) .map_err(|e| anyhow!("writing certificates failed: {e:?}"))?; - doc.write_certificate_lists(out, OutputFileExistsBehavior::Skip) - .map_err(|e| anyhow!("writing cert chains failed: {e:?}"))?; - - let start_dir = std::env::current_dir().context("get current dir")?; - std::env::set_current_dir("test-keys/") - .context("chdir to test keys")?; + doc.write_certificate_lists( + outdir.clone(), + OutputFileExistsBehavior::Skip, + ) + .map_err(|e| anyhow!("writing cert chains failed: {e:?}"))?; - // generate measurement log used by `cargo test` - attest_gen_cmd("log", "log.kdl", "log.bin")?; + // generate the mock measurement log used by `cargo test` + let out = outdir.join("log.bin"); + mock_data::("test-keys/log.kdl", out.as_ref())?; - // generate the corpus of reference measurements used by `cargo test` - attest_gen_cmd("corim", "corim-rot.kdl", "corim-rot.cbor")?; - attest_gen_cmd("corim", "corim-sp.kdl", "corim-sp.cbor")?; + // generate the mock corpus of reference measurements for the RoT + let out = outdir.join("corim-rot.cbor"); + mock_data::("test-keys/corim-rot.kdl", out.as_ref())?; - std::env::set_current_dir(start_dir) - .context("restore current dir to original")?; + // generate the mock corpus of reference measurements for the SP + let out = outdir.join("corim-sp.cbor"); + mock_data::("test-keys/corim-sp.kdl", out.as_ref())?; } Ok(()) diff --git a/tls/src/lib.rs b/tls/src/lib.rs index 3dcfb73..1717eff 100644 --- a/tls/src/lib.rs +++ b/tls/src/lib.rs @@ -343,32 +343,24 @@ mod tests { slog::Logger::root(drain, slog::o!("component" => "sprockets")) } - pub fn pki_keydir() -> Utf8PathBuf { - Utf8PathBuf::from(env!("OUT_DIR")) - } - pub fn mock_datadir() -> Utf8PathBuf { - let mut mock_datadir = Utf8PathBuf::from(env!("CARGO_MANIFEST_DIR")); - mock_datadir.push("test-keys"); - mock_datadir + Utf8PathBuf::from(env!("OUT_DIR")) } fn local_config( n: usize, enforce: MeasurementConnectionPolicy, ) -> keys::SprocketsConfig { - let pki_keydir = pki_keydir(); + let mock_datadir = mock_datadir(); let attest_priv_key = - pki_keydir.join(format!("test-alias-{n}.key.pem")); + mock_datadir.join(format!("test-alias-{n}.key.pem")); let attest_cert_chain = - pki_keydir.join(format!("test-alias-{n}.certlist.pem")); + mock_datadir.join(format!("test-alias-{n}.certlist.pem")); let resolve_priv_key = - pki_keydir.join(format!("test-sprockets-auth-{n}.key.pem")); + mock_datadir.join(format!("test-sprockets-auth-{n}.key.pem")); let resolve_cert_chain = - pki_keydir.join(format!("test-sprockets-auth-{n}.certlist.pem")); - - let mock_datadir = mock_datadir(); + mock_datadir.join(format!("test-sprockets-auth-{n}.certlist.pem")); keys::SprocketsConfig { attest: keys::AttestConfig::Local { @@ -377,7 +369,7 @@ mod tests { log: mock_datadir.join("log.bin"), test_corpus: vec![], }, - roots: vec![pki_keydir.join("test-root-a.cert.pem")], + roots: vec![mock_datadir.join("test-root-a.cert.pem")], resolve: keys::ResolveSetting::Local { priv_key: resolve_priv_key, cert_chain: resolve_cert_chain, @@ -544,7 +536,6 @@ mod tests { #[tokio::test] async fn unattested_client() { let log = logger(); - let pki_keydir = pki_keydir(); let mock_datadir = mock_datadir(); let addr: SocketAddrV6 = SocketAddrV6::from_str("[::1]:46459").unwrap(); @@ -580,9 +571,9 @@ mod tests { }); let client_config = client::Client::new_tls_local_client_config( - pki_keydir.join("test-sprockets-auth-2.key.pem"), - pki_keydir.join("test-sprockets-auth-2.certlist.pem"), - vec![pki_keydir.join("test-root-a.cert.pem")], + mock_datadir.join("test-sprockets-auth-2.key.pem"), + mock_datadir.join("test-sprockets-auth-2.certlist.pem"), + vec![mock_datadir.join("test-root-a.cert.pem")], log, ) .unwrap();