Infrastructure for SPDM Requester and Responder This sets up the SPDM requester and responder service. * Add references to spdm-lib, currently targeting developmental 9elements repo and branch. * Add entries for the spdm requester and responder services to the build infrastructure. * Add scaffolding for the services
diff --git a/Cargo.lock b/Cargo.lock index 59b3811..e3cfac7 100644 --- a/Cargo.lock +++ b/Cargo.lock
@@ -59,6 +59,12 @@ checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" [[package]] +name = "bitfield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + +[[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -102,7 +108,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal", - "bitfield", + "bitfield 0.13.2", "embedded-hal 0.2.7", "volatile-register", ] @@ -494,7 +500,10 @@ name = "openprot-mctp-client" version = "0.1.0" dependencies = [ + "mctp", + "mctp-lib", "openprot-mctp-api", + "openprot-mctp-server", ] [[package]] @@ -561,6 +570,22 @@ version = "0.1.0" [[package]] +name = "openprot-spdm-requester" +version = "0.1.0" +dependencies = [ + "heapless 0.9.1", + "spdm-lib", +] + +[[package]] +name = "openprot-spdm-responder" +version = "0.1.0" +dependencies = [ + "heapless 0.9.1", + "spdm-lib", +] + +[[package]] name = "p256" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -754,6 +779,15 @@ ] [[package]] +name = "spdm-lib" +version = "0.1.0" +source = "git+https://github.com/9elements/spdm-lib.git?branch=buildup#dcd0f23f1431b0a7cab21704b1c8584d911a8e2e" +dependencies = [ + "bitfield 0.14.0", + "zerocopy", +] + +[[package]] name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml index 62b29db..16f3fbd 100644 --- a/Cargo.toml +++ b/Cargo.toml
@@ -18,6 +18,8 @@ "services/mctp/server", "services/mctp/transport-i2c", "services/mctp/client", + "services/spdm/requester", + "services/spdm/responder", "services/telemetry", "services/storage", ]
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 74e4d04..bc6396a 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock
@@ -2586,8 +2586,8 @@ "recordedFileInputs": { "@@//third_party/crates_io/Cargo.lock": "7b0c74ed1c866c9bc1a67b6809dac1b18014ad3907c0feab15b46bd4f8bc7d47", "@@//third_party/crates_io/Cargo.toml": "9a5623aec342fc0a155822290970b5051ffa281843a4f66c54ebc4fe91647c8f", - "@@//third_party/crates_io/crates_no_std/Cargo.lock": "eacd7bc9b61147cce59771f0e2ec4f26cebb2b90f6be159dc1e90e48f46840ab", - "@@//third_party/crates_io/crates_no_std/Cargo.toml": "81bd2cc092b645636d0b25759b40af18c2c094105133e6a8abc88953e77d0e7f", + "@@//third_party/crates_io/crates_no_std/Cargo.lock": "50daf391f33a7406ce68a886bfc82197cf015756dc31c8028410e9a5b8dddf8f", + "@@//third_party/crates_io/crates_no_std/Cargo.toml": "ef148db3bca047edbdeb478525313070ce933d4fe6e24262345ce2771a178a89", "@@pigweed+//third_party/crates_io/crates_no_std/Cargo.lock": "d38da5fa5f942b59a8017730285afe69aaf6f741b6171f361d66202de3473bc2", "@@pigweed+//third_party/crates_io/crates_no_std/Cargo.toml": "00e4a621a4a49d1b269bb2e688d8b5bbabb8700eb7b583ccaa20c36a60aebf98", "@@pigweed+//third_party/crates_io/crates_std/Cargo.lock": "13ffbc71abd52f9c79d69ce7101aca75faddaefb314ab8b112a623ab0ea81540", @@ -4235,9 +4235,9 @@ "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", "attributes": { "contents": { - "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"aes-0.8.4\",\n actual = \"@oot_crates_no_std__aes-0.8.4//:aes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes\",\n actual = \"@oot_crates_no_std__aes-0.8.4//:aes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes-gcm-0.10.3\",\n actual = \"@oot_crates_no_std__aes-gcm-0.10.3//:aes_gcm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes-gcm\",\n actual = \"@oot_crates_no_std__aes-gcm-0.10.3//:aes_gcm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aspeed-ddk-0.1.0\",\n actual = \"@oot_crates_no_std__aspeed-ddk-0.1.0//:aspeed_ddk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aspeed-ddk\",\n actual = \"@oot_crates_no_std__aspeed-ddk-0.1.0//:aspeed_ddk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ast1060-pac-0.1.0\",\n actual = \"@oot_crates_no_std__ast1060-pac-0.1.0//:ast1060_pac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ast1060-pac\",\n actual = \"@oot_crates_no_std__ast1060-pac-0.1.0//:ast1060_pac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cipher-0.4.4\",\n actual = \"@oot_crates_no_std__cipher-0.4.4//:cipher\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cipher\",\n actual = \"@oot_crates_no_std__cipher-0.4.4//:cipher\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-0.7.7\",\n actual = \"@oot_crates_no_std__cortex-m-0.7.7//:cortex_m\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m\",\n actual = \"@oot_crates_no_std__cortex-m-0.7.7//:cortex_m\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-rt-0.7.5\",\n actual = \"@oot_crates_no_std__cortex-m-rt-0.7.5//:cortex_m_rt\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-rt\",\n actual = \"@oot_crates_no_std__cortex-m-rt-0.7.5//:cortex_m_rt\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-semihosting-0.5.0\",\n actual = \"@oot_crates_no_std__cortex-m-semihosting-0.5.0//:cortex_m_semihosting\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-semihosting\",\n actual = \"@oot_crates_no_std__cortex-m-semihosting-0.5.0//:cortex_m_semihosting\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctr-0.9.2\",\n actual = \"@oot_crates_no_std__ctr-0.9.2//:ctr\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctr\",\n actual = \"@oot_crates_no_std__ctr-0.9.2//:ctr\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ecdsa-0.16.9\",\n actual = \"@oot_crates_no_std__ecdsa-0.16.9//:ecdsa\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ecdsa\",\n actual = \"@oot_crates_no_std__ecdsa-0.16.9//:ecdsa\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-hal-1.0.0\",\n actual = \"@oot_crates_no_std__embedded-hal-1.0.0//:embedded_hal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-hal\",\n actual = \"@oot_crates_no_std__embedded-hal-1.0.0//:embedded_hal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-io-0.6.1\",\n actual = \"@oot_crates_no_std__embedded-io-0.6.1//:embedded_io\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-io\",\n actual = \"@oot_crates_no_std__embedded-io-0.6.1//:embedded_io\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"fugit-0.3.9\",\n actual = \"@oot_crates_no_std__fugit-0.3.9//:fugit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"fugit\",\n actual = \"@oot_crates_no_std__fugit-0.3.9//:fugit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"heapless-0.8.0\",\n actual = \"@oot_crates_no_std__heapless-0.8.0//:heapless\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"heapless\",\n actual = \"@oot_crates_no_std__heapless-0.8.0//:heapless\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hex-literal-0.4.1\",\n actual = \"@oot_crates_no_std__hex-literal-0.4.1//:hex_literal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hex-literal\",\n actual = \"@oot_crates_no_std__hex-literal-0.4.1//:hex_literal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hmac-0.12.1\",\n actual = \"@oot_crates_no_std__hmac-0.12.1//:hmac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hmac\",\n actual = \"@oot_crates_no_std__hmac-0.12.1//:hmac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-0.2.0\",\n actual = \"@oot_crates_no_std__mctp-0.2.0//:mctp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp\",\n actual = \"@oot_crates_no_std__mctp-0.2.0//:mctp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-lib-0.1.0\",\n actual = \"@oot_crates_no_std__mctp-lib-0.1.0//:mctp_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-lib\",\n actual = \"@oot_crates_no_std__mctp-lib-0.1.0//:mctp_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nb-1.1.0\",\n actual = \"@oot_crates_no_std__nb-1.1.0//:nb\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nb\",\n actual = \"@oot_crates_no_std__nb-1.1.0//:nb\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"openprot-hal-blocking-0.1.0\",\n actual = \"@oot_crates_no_std__openprot-hal-blocking-0.1.0//:openprot_hal_blocking\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"openprot-hal-blocking\",\n actual = \"@oot_crates_no_std__openprot-hal-blocking-0.1.0//:openprot_hal_blocking\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p256-0.13.2\",\n actual = \"@oot_crates_no_std__p256-0.13.2//:p256\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p256\",\n actual = \"@oot_crates_no_std__p256-0.13.2//:p256\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p384-0.13.1\",\n actual = \"@oot_crates_no_std__p384-0.13.1//:p384\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p384\",\n actual = \"@oot_crates_no_std__p384-0.13.1//:p384\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proposed-traits-0.1.0\",\n actual = \"@oot_crates_no_std__proposed-traits-0.1.0//:proposed_traits\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proposed-traits\",\n actual = \"@oot_crates_no_std__proposed-traits-0.1.0//:proposed_traits\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2-0.10.9\",\n actual = \"@oot_crates_no_std__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2\",\n actual = \"@oot_crates_no_std__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zerocopy-0.8.40\",\n actual = \"@oot_crates_no_std__zerocopy-0.8.40//:zerocopy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zerocopy\",\n actual = \"@oot_crates_no_std__zerocopy-0.8.40//:zerocopy\",\n tags = [\"manual\"],\n)\n", + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"aes-0.8.4\",\n actual = \"@oot_crates_no_std__aes-0.8.4//:aes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes\",\n actual = \"@oot_crates_no_std__aes-0.8.4//:aes\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes-gcm-0.10.3\",\n actual = \"@oot_crates_no_std__aes-gcm-0.10.3//:aes_gcm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aes-gcm\",\n actual = \"@oot_crates_no_std__aes-gcm-0.10.3//:aes_gcm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aspeed-ddk-0.1.0\",\n actual = \"@oot_crates_no_std__aspeed-ddk-0.1.0//:aspeed_ddk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aspeed-ddk\",\n actual = \"@oot_crates_no_std__aspeed-ddk-0.1.0//:aspeed_ddk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ast1060-pac-0.1.0\",\n actual = \"@oot_crates_no_std__ast1060-pac-0.1.0//:ast1060_pac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ast1060-pac\",\n actual = \"@oot_crates_no_std__ast1060-pac-0.1.0//:ast1060_pac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cipher-0.4.4\",\n actual = \"@oot_crates_no_std__cipher-0.4.4//:cipher\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cipher\",\n actual = \"@oot_crates_no_std__cipher-0.4.4//:cipher\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-0.7.7\",\n actual = \"@oot_crates_no_std__cortex-m-0.7.7//:cortex_m\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m\",\n actual = \"@oot_crates_no_std__cortex-m-0.7.7//:cortex_m\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-rt-0.7.5\",\n actual = \"@oot_crates_no_std__cortex-m-rt-0.7.5//:cortex_m_rt\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-rt\",\n actual = \"@oot_crates_no_std__cortex-m-rt-0.7.5//:cortex_m_rt\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-semihosting-0.5.0\",\n actual = \"@oot_crates_no_std__cortex-m-semihosting-0.5.0//:cortex_m_semihosting\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cortex-m-semihosting\",\n actual = \"@oot_crates_no_std__cortex-m-semihosting-0.5.0//:cortex_m_semihosting\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctr-0.9.2\",\n actual = \"@oot_crates_no_std__ctr-0.9.2//:ctr\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ctr\",\n actual = \"@oot_crates_no_std__ctr-0.9.2//:ctr\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ecdsa-0.16.9\",\n actual = \"@oot_crates_no_std__ecdsa-0.16.9//:ecdsa\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ecdsa\",\n actual = \"@oot_crates_no_std__ecdsa-0.16.9//:ecdsa\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-hal-1.0.0\",\n actual = \"@oot_crates_no_std__embedded-hal-1.0.0//:embedded_hal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-hal\",\n actual = \"@oot_crates_no_std__embedded-hal-1.0.0//:embedded_hal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-io-0.6.1\",\n actual = \"@oot_crates_no_std__embedded-io-0.6.1//:embedded_io\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"embedded-io\",\n actual = \"@oot_crates_no_std__embedded-io-0.6.1//:embedded_io\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"fugit-0.3.9\",\n actual = \"@oot_crates_no_std__fugit-0.3.9//:fugit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"fugit\",\n actual = \"@oot_crates_no_std__fugit-0.3.9//:fugit\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"heapless-0.8.0\",\n actual = \"@oot_crates_no_std__heapless-0.8.0//:heapless\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"heapless\",\n actual = \"@oot_crates_no_std__heapless-0.8.0//:heapless\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hex-literal-0.4.1\",\n actual = \"@oot_crates_no_std__hex-literal-0.4.1//:hex_literal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hex-literal\",\n actual = \"@oot_crates_no_std__hex-literal-0.4.1//:hex_literal\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hmac-0.12.1\",\n actual = \"@oot_crates_no_std__hmac-0.12.1//:hmac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"hmac\",\n actual = \"@oot_crates_no_std__hmac-0.12.1//:hmac\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-0.2.0\",\n actual = \"@oot_crates_no_std__mctp-0.2.0//:mctp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp\",\n actual = \"@oot_crates_no_std__mctp-0.2.0//:mctp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-lib-0.1.0\",\n actual = \"@oot_crates_no_std__mctp-lib-0.1.0//:mctp_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"mctp-lib\",\n actual = \"@oot_crates_no_std__mctp-lib-0.1.0//:mctp_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nb-1.1.0\",\n actual = \"@oot_crates_no_std__nb-1.1.0//:nb\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"nb\",\n actual = \"@oot_crates_no_std__nb-1.1.0//:nb\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"openprot-hal-blocking-0.1.0\",\n actual = \"@oot_crates_no_std__openprot-hal-blocking-0.1.0//:openprot_hal_blocking\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"openprot-hal-blocking\",\n actual = \"@oot_crates_no_std__openprot-hal-blocking-0.1.0//:openprot_hal_blocking\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p256-0.13.2\",\n actual = \"@oot_crates_no_std__p256-0.13.2//:p256\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p256\",\n actual = \"@oot_crates_no_std__p256-0.13.2//:p256\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p384-0.13.1\",\n actual = \"@oot_crates_no_std__p384-0.13.1//:p384\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"p384\",\n actual = \"@oot_crates_no_std__p384-0.13.1//:p384\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proposed-traits-0.1.0\",\n actual = \"@oot_crates_no_std__proposed-traits-0.1.0//:proposed_traits\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"proposed-traits\",\n actual = \"@oot_crates_no_std__proposed-traits-0.1.0//:proposed_traits\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2-0.10.9\",\n actual = \"@oot_crates_no_std__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2\",\n actual = \"@oot_crates_no_std__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"spdm-lib-0.1.0\",\n actual = \"@oot_crates_no_std__spdm-lib-0.1.0//:spdm_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"spdm-lib\",\n actual = \"@oot_crates_no_std__spdm-lib-0.1.0//:spdm_lib\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zerocopy-0.8.40\",\n actual = \"@oot_crates_no_std__zerocopy-0.8.40//:zerocopy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zerocopy\",\n actual = \"@oot_crates_no_std__zerocopy-0.8.40//:zerocopy\",\n tags = [\"manual\"],\n)\n", "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", - "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n _COMMON_CONDITION: {\n \"aes\": Label(\"@oot_crates_no_std//:aes-0.8.4\"),\n \"aes-gcm\": Label(\"@oot_crates_no_std//:aes-gcm-0.10.3\"),\n \"aspeed-ddk\": Label(\"@oot_crates_no_std//:aspeed-ddk-0.1.0\"),\n \"ast1060-pac\": Label(\"@oot_crates_no_std//:ast1060-pac-0.1.0\"),\n \"cipher\": Label(\"@oot_crates_no_std//:cipher-0.4.4\"),\n \"cortex-m\": Label(\"@oot_crates_no_std//:cortex-m-0.7.7\"),\n \"cortex-m-rt\": Label(\"@oot_crates_no_std//:cortex-m-rt-0.7.5\"),\n \"cortex-m-semihosting\": Label(\"@oot_crates_no_std//:cortex-m-semihosting-0.5.0\"),\n \"ctr\": Label(\"@oot_crates_no_std//:ctr-0.9.2\"),\n \"ecdsa\": Label(\"@oot_crates_no_std//:ecdsa-0.16.9\"),\n \"embedded-hal\": Label(\"@oot_crates_no_std//:embedded-hal-1.0.0\"),\n \"embedded-io\": Label(\"@oot_crates_no_std//:embedded-io-0.6.1\"),\n \"fugit\": Label(\"@oot_crates_no_std//:fugit-0.3.9\"),\n \"heapless\": Label(\"@oot_crates_no_std//:heapless-0.8.0\"),\n \"hex-literal\": Label(\"@oot_crates_no_std//:hex-literal-0.4.1\"),\n \"hmac\": Label(\"@oot_crates_no_std//:hmac-0.12.1\"),\n \"mctp\": Label(\"@oot_crates_no_std//:mctp-0.2.0\"),\n \"mctp-lib\": Label(\"@oot_crates_no_std//:mctp-lib-0.1.0\"),\n \"nb\": Label(\"@oot_crates_no_std//:nb-1.1.0\"),\n \"openprot-hal-blocking\": Label(\"@oot_crates_no_std//:openprot-hal-blocking-0.1.0\"),\n \"p256\": Label(\"@oot_crates_no_std//:p256-0.13.2\"),\n \"p384\": Label(\"@oot_crates_no_std//:p384-0.13.1\"),\n \"proposed-traits\": Label(\"@oot_crates_no_std//:proposed-traits-0.1.0\"),\n \"sha2\": Label(\"@oot_crates_no_std//:sha2-0.10.9\"),\n \"zerocopy\": Label(\"@oot_crates_no_std//:zerocopy-0.8.40\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-linux-android\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_vendor = \\\"apple\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(target_arch = \\\"loongarch64\\\", target_os = \\\"linux\\\"))\": [],\n \"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-apple-darwin\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"riscv32imc-unknown-none-elf\": [\"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\"],\n \"thumbv6m-none-eabi\": [\"@rules_rust//rust/platform:thumbv6m-none-eabi\"],\n \"thumbv7em-none-eabi\": [\"@rules_rust//rust/platform:thumbv7em-none-eabi\"],\n \"thumbv7m-none-eabi\": [\"@rules_rust//rust/platform:thumbv7m-none-eabi\"],\n \"thumbv8m.main-none-eabi\": [\"@rules_rust//rust/platform:thumbv8m.main-none-eabi\"],\n \"x86_64-apple-darwin\": [\"@rules_rust//rust/platform:x86_64-apple-darwin\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aead-0.5.2\",\n sha256 = \"d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aead/0.5.2/download\"],\n strip_prefix = \"aead-0.5.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aead-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aes-0.8.4\",\n sha256 = \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes/0.8.4/download\"],\n strip_prefix = \"aes-0.8.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aes-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aes-gcm-0.10.3\",\n sha256 = \"831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes-gcm/0.10.3/download\"],\n strip_prefix = \"aes-gcm-0.10.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aes-gcm-0.10.3.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__aspeed-ddk-0.1.0\",\n commit = \"e93e85b0fff8a448a86c6a81bbbf1818ea6094e6\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/aspeed-rust.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aspeed-ddk-0.1.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__ast1060-pac-0.1.0\",\n commit = \"564cd385f0b160b4a5ce435b930d28b87799bc96\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/ast1060-pac.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ast1060-pac-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__async-trait-0.1.89\",\n sha256 = \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-trait/0.1.89/download\"],\n strip_prefix = \"async-trait-0.1.89\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.async-trait-0.1.89.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bare-metal-0.2.5\",\n sha256 = \"5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bare-metal/0.2.5/download\"],\n strip_prefix = \"bare-metal-0.2.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bare-metal-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__base16ct-0.2.0\",\n sha256 = \"4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base16ct/0.2.0/download\"],\n strip_prefix = \"base16ct-0.2.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.base16ct-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bitfield-0.13.2\",\n sha256 = \"46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitfield/0.13.2/download\"],\n strip_prefix = \"bitfield-0.13.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bitfield-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bitflags-2.11.0\",\n sha256 = \"843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.0/download\"],\n strip_prefix = \"bitflags-2.11.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bitflags-2.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__block-buffer-0.10.4\",\n sha256 = \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-buffer/0.10.4/download\"],\n strip_prefix = \"block-buffer-0.10.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.block-buffer-0.10.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__byteorder-1.5.0\",\n sha256 = \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder/1.5.0/download\"],\n strip_prefix = \"byteorder-1.5.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.byteorder-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cfg-if-1.0.4\",\n sha256 = \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.4/download\"],\n strip_prefix = \"cfg-if-1.0.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cfg-if-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cipher-0.4.4\",\n sha256 = \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cipher/0.4.4/download\"],\n strip_prefix = \"cipher-0.4.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cipher-0.4.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__const-oid-0.9.6\",\n sha256 = \"c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/const-oid/0.9.6/download\"],\n strip_prefix = \"const-oid-0.9.6\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.const-oid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-0.7.7\",\n sha256 = \"8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m/0.7.7/download\"],\n strip_prefix = \"cortex-m-0.7.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-0.7.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-rt-0.7.5\",\n sha256 = \"801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-rt/0.7.5/download\"],\n strip_prefix = \"cortex-m-rt-0.7.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-rt-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-rt-macros-0.7.5\",\n sha256 = \"e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-rt-macros/0.7.5/download\"],\n strip_prefix = \"cortex-m-rt-macros-0.7.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-rt-macros-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-semihosting-0.5.0\",\n sha256 = \"c23234600452033cc77e4b761e740e02d2c4168e11dbf36ab14a0f58973592b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-semihosting/0.5.0/download\"],\n strip_prefix = \"cortex-m-semihosting-0.5.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-semihosting-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cpufeatures-0.2.17\",\n sha256 = \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cpufeatures/0.2.17/download\"],\n strip_prefix = \"cpufeatures-0.2.17\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cpufeatures-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crc-3.4.0\",\n sha256 = \"5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc/3.4.0/download\"],\n strip_prefix = \"crc-3.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crc-3.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crc-catalog-2.4.0\",\n sha256 = \"19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc-catalog/2.4.0/download\"],\n strip_prefix = \"crc-catalog-2.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crc-catalog-2.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crypto-bigint-0.5.5\",\n sha256 = \"0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-bigint/0.5.5/download\"],\n strip_prefix = \"crypto-bigint-0.5.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crypto-bigint-0.5.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crypto-common-0.1.7\",\n sha256 = \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-common/0.1.7/download\"],\n strip_prefix = \"crypto-common-0.1.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crypto-common-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ctr-0.9.2\",\n sha256 = \"0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ctr/0.9.2/download\"],\n strip_prefix = \"ctr-0.9.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ctr-0.9.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__der-0.7.10\",\n sha256 = \"e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/der/0.7.10/download\"],\n strip_prefix = \"der-0.7.10\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.der-0.7.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__digest-0.10.7\",\n sha256 = \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/digest/0.10.7/download\"],\n strip_prefix = \"digest-0.10.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.digest-0.10.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ecdsa-0.16.9\",\n sha256 = \"ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ecdsa/0.16.9/download\"],\n strip_prefix = \"ecdsa-0.16.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ecdsa-0.16.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__elliptic-curve-0.13.8\",\n sha256 = \"b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/elliptic-curve/0.13.8/download\"],\n strip_prefix = \"elliptic-curve-0.13.8\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.elliptic-curve-0.13.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-crc-macros-1.0.0\",\n sha256 = \"4f1c75747a43b086df1a87fb2a889590bc0725e0abf54bba6d0c4bf7bd9e762c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-crc-macros/1.0.0/download\"],\n strip_prefix = \"embedded-crc-macros-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-crc-macros-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-hal-0.2.7\",\n sha256 = \"35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-hal/0.2.7/download\"],\n strip_prefix = \"embedded-hal-0.2.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-hal-1.0.0\",\n sha256 = \"361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-hal/1.0.0/download\"],\n strip_prefix = \"embedded-hal-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-1.0.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__embedded-hal-1.0.0-alpha.1\",\n commit = \"599d44fdc7e709cb9ae6580ec11c0b7f7f102981\",\n init_submodules = True,\n remote = \"https://github.com/rust-embedded/embedded-hal.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-1.0.0-alpha.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-io-0.6.1\",\n sha256 = \"edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io/0.6.1/download\"],\n strip_prefix = \"embedded-io-0.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-io-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-io-async-0.6.1\",\n sha256 = \"3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io-async/0.6.1/download\"],\n strip_prefix = \"embedded-io-async-0.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-io-async-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-storage-0.3.1\",\n sha256 = \"a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-storage/0.3.1/download\"],\n strip_prefix = \"embedded-storage-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-storage-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ff-0.13.1\",\n sha256 = \"c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ff/0.13.1/download\"],\n strip_prefix = \"ff-0.13.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ff-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__fugit-0.3.9\",\n sha256 = \"4e639847d312d9a82d2e75b0edcc1e934efcc64e6cb7aa94f0b1fbec0bc231d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fugit/0.3.9/download\"],\n strip_prefix = \"fugit-0.3.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.fugit-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__gcd-2.3.0\",\n sha256 = \"1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gcd/2.3.0/download\"],\n strip_prefix = \"gcd-2.3.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.gcd-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__generic-array-0.14.7\",\n sha256 = \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/generic-array/0.14.7/download\"],\n strip_prefix = \"generic-array-0.14.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.generic-array-0.14.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ghash-0.5.1\",\n sha256 = \"f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ghash/0.5.1/download\"],\n strip_prefix = \"ghash-0.5.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ghash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__group-0.13.0\",\n sha256 = \"f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/group/0.13.0/download\"],\n strip_prefix = \"group-0.13.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.group-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hash32-0.3.1\",\n sha256 = \"47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hash32/0.3.1/download\"],\n strip_prefix = \"hash32-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hash32-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__heapless-0.8.0\",\n sha256 = \"0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heapless/0.8.0/download\"],\n strip_prefix = \"heapless-0.8.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.heapless-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hex-literal-0.4.1\",\n sha256 = \"6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hex-literal/0.4.1/download\"],\n strip_prefix = \"hex-literal-0.4.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hex-literal-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hmac-0.12.1\",\n sha256 = \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hmac/0.12.1/download\"],\n strip_prefix = \"hmac-0.12.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hmac-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__inout-0.1.4\",\n sha256 = \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inout/0.1.4/download\"],\n strip_prefix = \"inout-0.1.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.inout-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__libc-0.2.182\",\n sha256 = \"6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.182/download\"],\n strip_prefix = \"libc-0.2.182\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.libc-0.2.182.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__log-0.4.29\",\n sha256 = \"5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.29/download\"],\n strip_prefix = \"log-0.4.29\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.log-0.4.29.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-0.2.0\",\n commit = \"fafe92f6fcadf6e57683b91757fad9933ddd223d\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/mctp-rs.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-0.2.0.bazel\"),\n strip_prefix = \"mctp\",\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-estack-0.1.0\",\n commit = \"fafe92f6fcadf6e57683b91757fad9933ddd223d\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/mctp-rs.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-estack-0.1.0.bazel\"),\n strip_prefix = \"mctp-estack\",\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-lib-0.1.0\",\n commit = \"9c53adaeb7ae544cbeab4654530a50d158e33fe5\",\n init_submodules = True,\n remote = \"https://github.com/9elements/mctp-lib.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-lib-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__nb-0.1.3\",\n sha256 = \"801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nb/0.1.3/download\"],\n strip_prefix = \"nb-0.1.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.nb-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__nb-1.1.0\",\n sha256 = \"8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nb/1.1.0/download\"],\n strip_prefix = \"nb-1.1.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.nb-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__opaque-debug-0.3.1\",\n sha256 = \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opaque-debug/0.3.1/download\"],\n strip_prefix = \"opaque-debug-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.opaque-debug-0.3.1.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__openprot-hal-blocking-0.1.0\",\n commit = \"c6cd23a56f3cc7945b062ea1bcdabf3af0dba82d\",\n init_submodules = True,\n remote = \"https://github.com/rusty1968/openprot.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.openprot-hal-blocking-0.1.0.bazel\"),\n strip_prefix = \"hal/blocking\",\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__p256-0.13.2\",\n sha256 = \"c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/p256/0.13.2/download\"],\n strip_prefix = \"p256-0.13.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.p256-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__p384-0.13.1\",\n sha256 = \"fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/p384/0.13.1/download\"],\n strip_prefix = \"p384-0.13.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.p384-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__panic-halt-1.0.0\",\n sha256 = \"a513e167849a384b7f9b746e517604398518590a9142f4846a32e3c2a4de7b11\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/panic-halt/1.0.0/download\"],\n strip_prefix = \"panic-halt-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.panic-halt-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__paste-1.0.15\",\n sha256 = \"57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/paste/1.0.15/download\"],\n strip_prefix = \"paste-1.0.15\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.paste-1.0.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__polyval-0.6.2\",\n sha256 = \"9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/polyval/0.6.2/download\"],\n strip_prefix = \"polyval-0.6.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.polyval-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__primeorder-0.13.6\",\n sha256 = \"353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/primeorder/0.13.6/download\"],\n strip_prefix = \"primeorder-0.13.6\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.primeorder-0.13.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__proposed-traits-0.1.0\",\n commit = \"85641310df5a5276c67f81621b104322cff0286c\",\n init_submodules = True,\n remote = \"https://github.com/rusty1968/proposed_traits.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.proposed-traits-0.1.0.bazel\"),\n strip_prefix = \"proposed-traits\",\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__quote-1.0.45\",\n sha256 = \"41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.45/download\"],\n strip_prefix = \"quote-1.0.45\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.quote-1.0.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rand_core-0.6.4\",\n sha256 = \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.6.4/download\"],\n strip_prefix = \"rand_core-0.6.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rand_core-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rand_core-0.9.5\",\n sha256 = \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.9.5/download\"],\n strip_prefix = \"rand_core-0.9.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rand_core-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rfc6979-0.4.0\",\n sha256 = \"f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rfc6979/0.4.0/download\"],\n strip_prefix = \"rfc6979-0.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rfc6979-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rustc_version-0.2.3\",\n sha256 = \"138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.2.3/download\"],\n strip_prefix = \"rustc_version-0.2.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rustc_version-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__sec1-0.7.3\",\n sha256 = \"d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sec1/0.7.3/download\"],\n strip_prefix = \"sec1-0.7.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.sec1-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__semver-0.9.0\",\n sha256 = \"1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/0.9.0/download\"],\n strip_prefix = \"semver-0.9.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.semver-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__semver-parser-0.7.0\",\n sha256 = \"388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver-parser/0.7.0/download\"],\n strip_prefix = \"semver-parser-0.7.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.semver-parser-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__sha2-0.10.9\",\n sha256 = \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sha2/0.10.9/download\"],\n strip_prefix = \"sha2-0.10.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.sha2-0.10.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__signature-2.2.0\",\n sha256 = \"77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signature/2.2.0/download\"],\n strip_prefix = \"signature-2.2.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.signature-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__smbus-pec-1.0.1\",\n sha256 = \"ca0763a680cd5d72b28f7bfc8a054c117d8841380a6ad4f72f05bd2a34217d3e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smbus-pec/1.0.1/download\"],\n strip_prefix = \"smbus-pec-1.0.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.smbus-pec-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__subtle-2.6.1\",\n sha256 = \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/subtle/2.6.1/download\"],\n strip_prefix = \"subtle-2.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.subtle-2.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__typenum-1.19.0\",\n sha256 = \"562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/typenum/1.19.0/download\"],\n strip_prefix = \"typenum-1.19.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.typenum-1.19.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__universal-hash-0.5.1\",\n sha256 = \"fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/universal-hash/0.5.1/download\"],\n strip_prefix = \"universal-hash-0.5.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.universal-hash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__uuid-1.22.0\",\n sha256 = \"a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/uuid/1.22.0/download\"],\n strip_prefix = \"uuid-1.22.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.uuid-1.22.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__vcell-0.1.3\",\n sha256 = \"77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vcell/0.1.3/download\"],\n strip_prefix = \"vcell-0.1.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.vcell-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__version_check-0.9.5\",\n sha256 = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/version_check/0.9.5/download\"],\n strip_prefix = \"version_check-0.9.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.version_check-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__void-1.0.2\",\n sha256 = \"6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/void/1.0.2/download\"],\n strip_prefix = \"void-1.0.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.void-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__volatile-register-0.2.2\",\n sha256 = \"de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/volatile-register/0.2.2/download\"],\n strip_prefix = \"volatile-register-0.2.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.volatile-register-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zerocopy-0.8.40\",\n sha256 = \"a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy/0.8.40/download\"],\n strip_prefix = \"zerocopy-0.8.40\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zerocopy-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zerocopy-derive-0.8.40\",\n sha256 = \"f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy-derive/0.8.40/download\"],\n strip_prefix = \"zerocopy-derive-0.8.40\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zerocopy-derive-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zeroize-1.8.2\",\n sha256 = \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize/1.8.2/download\"],\n strip_prefix = \"zeroize-1.8.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zeroize-1.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zeroize_derive-1.4.3\",\n sha256 = \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize_derive/1.4.3/download\"],\n strip_prefix = \"zeroize_derive-1.4.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zeroize_derive-1.4.3.bazel\"),\n )\n\n return [\n struct(repo=\"oot_crates_no_std__aes-0.8.4\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__aes-gcm-0.10.3\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__aspeed-ddk-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ast1060-pac-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cipher-0.4.4\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-0.7.7\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-rt-0.7.5\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-semihosting-0.5.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ctr-0.9.2\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ecdsa-0.16.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__embedded-hal-1.0.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__embedded-io-0.6.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__fugit-0.3.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__heapless-0.8.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__hex-literal-0.4.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__hmac-0.12.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__mctp-0.2.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__mctp-lib-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__nb-1.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__openprot-hal-blocking-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__p256-0.13.2\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__p384-0.13.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__proposed-traits-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__sha2-0.10.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__zerocopy-0.8.40\", is_dev_dep = False),\n ]\n" + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n _COMMON_CONDITION: {\n \"aes\": Label(\"@oot_crates_no_std//:aes-0.8.4\"),\n \"aes-gcm\": Label(\"@oot_crates_no_std//:aes-gcm-0.10.3\"),\n \"aspeed-ddk\": Label(\"@oot_crates_no_std//:aspeed-ddk-0.1.0\"),\n \"ast1060-pac\": Label(\"@oot_crates_no_std//:ast1060-pac-0.1.0\"),\n \"cipher\": Label(\"@oot_crates_no_std//:cipher-0.4.4\"),\n \"cortex-m\": Label(\"@oot_crates_no_std//:cortex-m-0.7.7\"),\n \"cortex-m-rt\": Label(\"@oot_crates_no_std//:cortex-m-rt-0.7.5\"),\n \"cortex-m-semihosting\": Label(\"@oot_crates_no_std//:cortex-m-semihosting-0.5.0\"),\n \"ctr\": Label(\"@oot_crates_no_std//:ctr-0.9.2\"),\n \"ecdsa\": Label(\"@oot_crates_no_std//:ecdsa-0.16.9\"),\n \"embedded-hal\": Label(\"@oot_crates_no_std//:embedded-hal-1.0.0\"),\n \"embedded-io\": Label(\"@oot_crates_no_std//:embedded-io-0.6.1\"),\n \"fugit\": Label(\"@oot_crates_no_std//:fugit-0.3.9\"),\n \"heapless\": Label(\"@oot_crates_no_std//:heapless-0.8.0\"),\n \"hex-literal\": Label(\"@oot_crates_no_std//:hex-literal-0.4.1\"),\n \"hmac\": Label(\"@oot_crates_no_std//:hmac-0.12.1\"),\n \"mctp\": Label(\"@oot_crates_no_std//:mctp-0.2.0\"),\n \"mctp-lib\": Label(\"@oot_crates_no_std//:mctp-lib-0.1.0\"),\n \"nb\": Label(\"@oot_crates_no_std//:nb-1.1.0\"),\n \"openprot-hal-blocking\": Label(\"@oot_crates_no_std//:openprot-hal-blocking-0.1.0\"),\n \"p256\": Label(\"@oot_crates_no_std//:p256-0.13.2\"),\n \"p384\": Label(\"@oot_crates_no_std//:p384-0.13.1\"),\n \"proposed-traits\": Label(\"@oot_crates_no_std//:proposed-traits-0.1.0\"),\n \"sha2\": Label(\"@oot_crates_no_std//:sha2-0.10.9\"),\n \"spdm-lib\": Label(\"@oot_crates_no_std//:spdm-lib-0.1.0\"),\n \"zerocopy\": Label(\"@oot_crates_no_std//:zerocopy-0.8.40\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"third_party/crates_io/crates_no_std\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-linux-android\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_vendor = \\\"apple\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(target_arch = \\\"loongarch64\\\", target_os = \\\"linux\\\"))\": [],\n \"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-apple-darwin\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n \"riscv32imc-unknown-none-elf\": [\"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\"],\n \"thumbv6m-none-eabi\": [\"@rules_rust//rust/platform:thumbv6m-none-eabi\"],\n \"thumbv7em-none-eabi\": [\"@rules_rust//rust/platform:thumbv7em-none-eabi\"],\n \"thumbv7m-none-eabi\": [\"@rules_rust//rust/platform:thumbv7m-none-eabi\"],\n \"thumbv8m.main-none-eabi\": [\"@rules_rust//rust/platform:thumbv8m.main-none-eabi\"],\n \"x86_64-apple-darwin\": [\"@rules_rust//rust/platform:x86_64-apple-darwin\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aead-0.5.2\",\n sha256 = \"d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aead/0.5.2/download\"],\n strip_prefix = \"aead-0.5.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aead-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aes-0.8.4\",\n sha256 = \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes/0.8.4/download\"],\n strip_prefix = \"aes-0.8.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aes-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__aes-gcm-0.10.3\",\n sha256 = \"831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes-gcm/0.10.3/download\"],\n strip_prefix = \"aes-gcm-0.10.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aes-gcm-0.10.3.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__aspeed-ddk-0.1.0\",\n commit = \"e93e85b0fff8a448a86c6a81bbbf1818ea6094e6\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/aspeed-rust.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.aspeed-ddk-0.1.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__ast1060-pac-0.1.0\",\n commit = \"564cd385f0b160b4a5ce435b930d28b87799bc96\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/ast1060-pac.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ast1060-pac-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__async-trait-0.1.89\",\n sha256 = \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-trait/0.1.89/download\"],\n strip_prefix = \"async-trait-0.1.89\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.async-trait-0.1.89.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bare-metal-0.2.5\",\n sha256 = \"5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bare-metal/0.2.5/download\"],\n strip_prefix = \"bare-metal-0.2.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bare-metal-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__base16ct-0.2.0\",\n sha256 = \"4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base16ct/0.2.0/download\"],\n strip_prefix = \"base16ct-0.2.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.base16ct-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bitfield-0.13.2\",\n sha256 = \"46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitfield/0.13.2/download\"],\n strip_prefix = \"bitfield-0.13.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bitfield-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bitfield-0.14.0\",\n sha256 = \"2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitfield/0.14.0/download\"],\n strip_prefix = \"bitfield-0.14.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bitfield-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__bitflags-2.11.0\",\n sha256 = \"843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.0/download\"],\n strip_prefix = \"bitflags-2.11.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.bitflags-2.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__block-buffer-0.10.4\",\n sha256 = \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-buffer/0.10.4/download\"],\n strip_prefix = \"block-buffer-0.10.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.block-buffer-0.10.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__byteorder-1.5.0\",\n sha256 = \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder/1.5.0/download\"],\n strip_prefix = \"byteorder-1.5.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.byteorder-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cfg-if-1.0.4\",\n sha256 = \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.4/download\"],\n strip_prefix = \"cfg-if-1.0.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cfg-if-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cipher-0.4.4\",\n sha256 = \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cipher/0.4.4/download\"],\n strip_prefix = \"cipher-0.4.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cipher-0.4.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__const-oid-0.9.6\",\n sha256 = \"c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/const-oid/0.9.6/download\"],\n strip_prefix = \"const-oid-0.9.6\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.const-oid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-0.7.7\",\n sha256 = \"8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m/0.7.7/download\"],\n strip_prefix = \"cortex-m-0.7.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-0.7.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-rt-0.7.5\",\n sha256 = \"801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-rt/0.7.5/download\"],\n strip_prefix = \"cortex-m-rt-0.7.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-rt-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-rt-macros-0.7.5\",\n sha256 = \"e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-rt-macros/0.7.5/download\"],\n strip_prefix = \"cortex-m-rt-macros-0.7.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-rt-macros-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cortex-m-semihosting-0.5.0\",\n sha256 = \"c23234600452033cc77e4b761e740e02d2c4168e11dbf36ab14a0f58973592b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cortex-m-semihosting/0.5.0/download\"],\n strip_prefix = \"cortex-m-semihosting-0.5.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cortex-m-semihosting-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__cpufeatures-0.2.17\",\n sha256 = \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cpufeatures/0.2.17/download\"],\n strip_prefix = \"cpufeatures-0.2.17\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.cpufeatures-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crc-3.4.0\",\n sha256 = \"5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc/3.4.0/download\"],\n strip_prefix = \"crc-3.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crc-3.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crc-catalog-2.4.0\",\n sha256 = \"19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc-catalog/2.4.0/download\"],\n strip_prefix = \"crc-catalog-2.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crc-catalog-2.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crypto-bigint-0.5.5\",\n sha256 = \"0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-bigint/0.5.5/download\"],\n strip_prefix = \"crypto-bigint-0.5.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crypto-bigint-0.5.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__crypto-common-0.1.7\",\n sha256 = \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-common/0.1.7/download\"],\n strip_prefix = \"crypto-common-0.1.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.crypto-common-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ctr-0.9.2\",\n sha256 = \"0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ctr/0.9.2/download\"],\n strip_prefix = \"ctr-0.9.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ctr-0.9.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__der-0.7.10\",\n sha256 = \"e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/der/0.7.10/download\"],\n strip_prefix = \"der-0.7.10\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.der-0.7.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__digest-0.10.7\",\n sha256 = \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/digest/0.10.7/download\"],\n strip_prefix = \"digest-0.10.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.digest-0.10.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ecdsa-0.16.9\",\n sha256 = \"ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ecdsa/0.16.9/download\"],\n strip_prefix = \"ecdsa-0.16.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ecdsa-0.16.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__elliptic-curve-0.13.8\",\n sha256 = \"b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/elliptic-curve/0.13.8/download\"],\n strip_prefix = \"elliptic-curve-0.13.8\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.elliptic-curve-0.13.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-crc-macros-1.0.0\",\n sha256 = \"4f1c75747a43b086df1a87fb2a889590bc0725e0abf54bba6d0c4bf7bd9e762c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-crc-macros/1.0.0/download\"],\n strip_prefix = \"embedded-crc-macros-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-crc-macros-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-hal-0.2.7\",\n sha256 = \"35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-hal/0.2.7/download\"],\n strip_prefix = \"embedded-hal-0.2.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-hal-1.0.0\",\n sha256 = \"361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-hal/1.0.0/download\"],\n strip_prefix = \"embedded-hal-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-1.0.0.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__embedded-hal-1.0.0-alpha.1\",\n commit = \"599d44fdc7e709cb9ae6580ec11c0b7f7f102981\",\n init_submodules = True,\n remote = \"https://github.com/rust-embedded/embedded-hal.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-hal-1.0.0-alpha.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-io-0.6.1\",\n sha256 = \"edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io/0.6.1/download\"],\n strip_prefix = \"embedded-io-0.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-io-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-io-async-0.6.1\",\n sha256 = \"3ff09972d4073aa8c299395be75161d582e7629cd663171d62af73c8d50dba3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-io-async/0.6.1/download\"],\n strip_prefix = \"embedded-io-async-0.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-io-async-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__embedded-storage-0.3.1\",\n sha256 = \"a21dea9854beb860f3062d10228ce9b976da520a73474aed3171ec276bc0c032\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/embedded-storage/0.3.1/download\"],\n strip_prefix = \"embedded-storage-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.embedded-storage-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ff-0.13.1\",\n sha256 = \"c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ff/0.13.1/download\"],\n strip_prefix = \"ff-0.13.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ff-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__fugit-0.3.9\",\n sha256 = \"4e639847d312d9a82d2e75b0edcc1e934efcc64e6cb7aa94f0b1fbec0bc231d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fugit/0.3.9/download\"],\n strip_prefix = \"fugit-0.3.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.fugit-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__gcd-2.3.0\",\n sha256 = \"1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gcd/2.3.0/download\"],\n strip_prefix = \"gcd-2.3.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.gcd-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__generic-array-0.14.7\",\n sha256 = \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/generic-array/0.14.7/download\"],\n strip_prefix = \"generic-array-0.14.7\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.generic-array-0.14.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__ghash-0.5.1\",\n sha256 = \"f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ghash/0.5.1/download\"],\n strip_prefix = \"ghash-0.5.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.ghash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__group-0.13.0\",\n sha256 = \"f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/group/0.13.0/download\"],\n strip_prefix = \"group-0.13.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.group-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hash32-0.3.1\",\n sha256 = \"47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hash32/0.3.1/download\"],\n strip_prefix = \"hash32-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hash32-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__heapless-0.8.0\",\n sha256 = \"0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heapless/0.8.0/download\"],\n strip_prefix = \"heapless-0.8.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.heapless-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hex-literal-0.4.1\",\n sha256 = \"6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hex-literal/0.4.1/download\"],\n strip_prefix = \"hex-literal-0.4.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hex-literal-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__hmac-0.12.1\",\n sha256 = \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hmac/0.12.1/download\"],\n strip_prefix = \"hmac-0.12.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.hmac-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__inout-0.1.4\",\n sha256 = \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inout/0.1.4/download\"],\n strip_prefix = \"inout-0.1.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.inout-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__libc-0.2.182\",\n sha256 = \"6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.182/download\"],\n strip_prefix = \"libc-0.2.182\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.libc-0.2.182.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__log-0.4.29\",\n sha256 = \"5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.29/download\"],\n strip_prefix = \"log-0.4.29\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.log-0.4.29.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-0.2.0\",\n commit = \"fafe92f6fcadf6e57683b91757fad9933ddd223d\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/mctp-rs.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-0.2.0.bazel\"),\n strip_prefix = \"mctp\",\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-estack-0.1.0\",\n commit = \"fafe92f6fcadf6e57683b91757fad9933ddd223d\",\n init_submodules = True,\n remote = \"https://github.com/OpenPRoT/mctp-rs.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-estack-0.1.0.bazel\"),\n strip_prefix = \"mctp-estack\",\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__mctp-lib-0.1.0\",\n commit = \"9c53adaeb7ae544cbeab4654530a50d158e33fe5\",\n init_submodules = True,\n remote = \"https://github.com/9elements/mctp-lib.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.mctp-lib-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__nb-0.1.3\",\n sha256 = \"801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nb/0.1.3/download\"],\n strip_prefix = \"nb-0.1.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.nb-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__nb-1.1.0\",\n sha256 = \"8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nb/1.1.0/download\"],\n strip_prefix = \"nb-1.1.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.nb-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__opaque-debug-0.3.1\",\n sha256 = \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opaque-debug/0.3.1/download\"],\n strip_prefix = \"opaque-debug-0.3.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.opaque-debug-0.3.1.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__openprot-hal-blocking-0.1.0\",\n commit = \"c6cd23a56f3cc7945b062ea1bcdabf3af0dba82d\",\n init_submodules = True,\n remote = \"https://github.com/rusty1968/openprot.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.openprot-hal-blocking-0.1.0.bazel\"),\n strip_prefix = \"hal/blocking\",\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__p256-0.13.2\",\n sha256 = \"c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/p256/0.13.2/download\"],\n strip_prefix = \"p256-0.13.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.p256-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__p384-0.13.1\",\n sha256 = \"fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/p384/0.13.1/download\"],\n strip_prefix = \"p384-0.13.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.p384-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__panic-halt-1.0.0\",\n sha256 = \"a513e167849a384b7f9b746e517604398518590a9142f4846a32e3c2a4de7b11\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/panic-halt/1.0.0/download\"],\n strip_prefix = \"panic-halt-1.0.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.panic-halt-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__paste-1.0.15\",\n sha256 = \"57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/paste/1.0.15/download\"],\n strip_prefix = \"paste-1.0.15\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.paste-1.0.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__polyval-0.6.2\",\n sha256 = \"9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/polyval/0.6.2/download\"],\n strip_prefix = \"polyval-0.6.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.polyval-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__primeorder-0.13.6\",\n sha256 = \"353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/primeorder/0.13.6/download\"],\n strip_prefix = \"primeorder-0.13.6\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.primeorder-0.13.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__proposed-traits-0.1.0\",\n commit = \"85641310df5a5276c67f81621b104322cff0286c\",\n init_submodules = True,\n remote = \"https://github.com/rusty1968/proposed_traits.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.proposed-traits-0.1.0.bazel\"),\n strip_prefix = \"proposed-traits\",\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__quote-1.0.45\",\n sha256 = \"41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.45/download\"],\n strip_prefix = \"quote-1.0.45\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.quote-1.0.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rand_core-0.6.4\",\n sha256 = \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.6.4/download\"],\n strip_prefix = \"rand_core-0.6.4\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rand_core-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rand_core-0.9.5\",\n sha256 = \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.9.5/download\"],\n strip_prefix = \"rand_core-0.9.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rand_core-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rfc6979-0.4.0\",\n sha256 = \"f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rfc6979/0.4.0/download\"],\n strip_prefix = \"rfc6979-0.4.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rfc6979-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__rustc_version-0.2.3\",\n sha256 = \"138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.2.3/download\"],\n strip_prefix = \"rustc_version-0.2.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.rustc_version-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__sec1-0.7.3\",\n sha256 = \"d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sec1/0.7.3/download\"],\n strip_prefix = \"sec1-0.7.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.sec1-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__semver-0.9.0\",\n sha256 = \"1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/0.9.0/download\"],\n strip_prefix = \"semver-0.9.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.semver-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__semver-parser-0.7.0\",\n sha256 = \"388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver-parser/0.7.0/download\"],\n strip_prefix = \"semver-parser-0.7.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.semver-parser-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__sha2-0.10.9\",\n sha256 = \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sha2/0.10.9/download\"],\n strip_prefix = \"sha2-0.10.9\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.sha2-0.10.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__signature-2.2.0\",\n sha256 = \"77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signature/2.2.0/download\"],\n strip_prefix = \"signature-2.2.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.signature-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__smbus-pec-1.0.1\",\n sha256 = \"ca0763a680cd5d72b28f7bfc8a054c117d8841380a6ad4f72f05bd2a34217d3e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smbus-pec/1.0.1/download\"],\n strip_prefix = \"smbus-pec-1.0.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.smbus-pec-1.0.1.bazel\"),\n )\n\n maybe(\n new_git_repository,\n name = \"oot_crates_no_std__spdm-lib-0.1.0\",\n commit = \"dcd0f23f1431b0a7cab21704b1c8584d911a8e2e\",\n init_submodules = True,\n remote = \"https://github.com/9elements/spdm-lib.git\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.spdm-lib-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__subtle-2.6.1\",\n sha256 = \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/subtle/2.6.1/download\"],\n strip_prefix = \"subtle-2.6.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.subtle-2.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__typenum-1.19.0\",\n sha256 = \"562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/typenum/1.19.0/download\"],\n strip_prefix = \"typenum-1.19.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.typenum-1.19.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__universal-hash-0.5.1\",\n sha256 = \"fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/universal-hash/0.5.1/download\"],\n strip_prefix = \"universal-hash-0.5.1\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.universal-hash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__uuid-1.22.0\",\n sha256 = \"a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/uuid/1.22.0/download\"],\n strip_prefix = \"uuid-1.22.0\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.uuid-1.22.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__vcell-0.1.3\",\n sha256 = \"77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vcell/0.1.3/download\"],\n strip_prefix = \"vcell-0.1.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.vcell-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__version_check-0.9.5\",\n sha256 = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/version_check/0.9.5/download\"],\n strip_prefix = \"version_check-0.9.5\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.version_check-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__void-1.0.2\",\n sha256 = \"6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/void/1.0.2/download\"],\n strip_prefix = \"void-1.0.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.void-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__volatile-register-0.2.2\",\n sha256 = \"de437e2a6208b014ab52972a27e59b33fa2920d3e00fe05026167a1c509d19cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/volatile-register/0.2.2/download\"],\n strip_prefix = \"volatile-register-0.2.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.volatile-register-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zerocopy-0.8.40\",\n sha256 = \"a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy/0.8.40/download\"],\n strip_prefix = \"zerocopy-0.8.40\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zerocopy-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zerocopy-derive-0.8.40\",\n sha256 = \"f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy-derive/0.8.40/download\"],\n strip_prefix = \"zerocopy-derive-0.8.40\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zerocopy-derive-0.8.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zeroize-1.8.2\",\n sha256 = \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize/1.8.2/download\"],\n strip_prefix = \"zeroize-1.8.2\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zeroize-1.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"oot_crates_no_std__zeroize_derive-1.4.3\",\n sha256 = \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize_derive/1.4.3/download\"],\n strip_prefix = \"zeroize_derive-1.4.3\",\n build_file = Label(\"@oot_crates_no_std//oot_crates_no_std:BUILD.zeroize_derive-1.4.3.bazel\"),\n )\n\n return [\n struct(repo=\"oot_crates_no_std__aes-0.8.4\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__aes-gcm-0.10.3\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__aspeed-ddk-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ast1060-pac-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cipher-0.4.4\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-0.7.7\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-rt-0.7.5\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__cortex-m-semihosting-0.5.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ctr-0.9.2\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__ecdsa-0.16.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__embedded-hal-1.0.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__embedded-io-0.6.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__fugit-0.3.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__heapless-0.8.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__hex-literal-0.4.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__hmac-0.12.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__mctp-0.2.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__mctp-lib-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__nb-1.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__openprot-hal-blocking-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__p256-0.13.2\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__p384-0.13.1\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__proposed-traits-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__sha2-0.10.9\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__spdm-lib-0.1.0\", is_dev_dep = False),\n struct(repo=\"oot_crates_no_std__zerocopy-0.8.40\", is_dev_dep = False),\n ]\n" } } }, @@ -4381,6 +4381,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitfield\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitfield\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\": [],\n \"@rules_rust//rust/platform:thumbv6m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7em-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv8m.main-none-eabi\": [],\n \"@rules_rust//rust/platform:x86_64-apple-darwin\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.2\",\n)\n" } }, + "oot_crates_no_std__bitfield-0.14.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitfield/0.14.0/download" + ], + "strip_prefix": "bitfield-0.14.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitfield\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitfield\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\": [],\n \"@rules_rust//rust/platform:thumbv6m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7em-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv8m.main-none-eabi\": [],\n \"@rules_rust//rust/platform:x86_64-apple-darwin\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" + } + }, "oot_crates_no_std__bitflags-2.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -5425,6 +5441,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"smbus_pec\",\n deps = [\n \"@oot_crates_no_std__embedded-crc-macros-1.0.0//:embedded_crc_macros\",\n \"@oot_crates_no_std__smbus-pec-1.0.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"lookup-table\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=smbus-pec\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\": [],\n \"@rules_rust//rust/platform:thumbv6m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7em-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv8m.main-none-eabi\": [],\n \"@rules_rust//rust/platform:x86_64-apple-darwin\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"lookup-table\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@oot_crates_no_std__embedded-crc-macros-1.0.0//:embedded_crc_macros\",\n ],\n edition = \"2018\",\n pkg_name = \"smbus-pec\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=smbus-pec\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "oot_crates_no_std__spdm-lib-0.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:git.bzl%git_repository", + "attributes": { + "init_submodules": true, + "patch_args": [], + "patch_tool": "", + "patches": [], + "shallow_since": "", + "remote": "https://github.com/9elements/spdm-lib.git", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'opentitan_pigweed'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"spdm_lib\",\n deps = [\n \"@oot_crates_no_std__bitfield-0.14.0//:bitfield\",\n \"@oot_crates_no_std__zerocopy-0.8.40//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=spdm-lib\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:riscv32imc-unknown-none-elf\": [],\n \"@rules_rust//rust/platform:thumbv6m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7em-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv7m-none-eabi\": [],\n \"@rules_rust//rust/platform:thumbv8m.main-none-eabi\": [],\n \"@rules_rust//rust/platform:x86_64-apple-darwin\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n", + "strip_prefix": "", + "commit": "dcd0f23f1431b0a7cab21704b1c8584d911a8e2e" + } + }, "oot_crates_no_std__stable_deref_trait-1.2.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": {
diff --git a/services/spdm/requester/BUILD.bazel b/services/spdm/requester/BUILD.bazel new file mode 100644 index 0000000..21f9159 --- /dev/null +++ b/services/spdm/requester/BUILD.bazel
@@ -0,0 +1,20 @@ +# Licensed under the Apache-2.0 license + +load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") + +rust_library( + name = "spdm_requester_lib", + srcs = glob(["src/**/*.rs"]), + crate_name = "openprot_spdm_requester", + edition = "2024", + visibility = ["//visibility:public"], + deps = [ + "@rust_crates//:heapless", + "@rust_crates//:spdm-lib", + ], +) + +rust_test( + name = "spdm_requester_test", + crate = ":spdm_requester_lib", +)
diff --git a/services/spdm/requester/Cargo.toml b/services/spdm/requester/Cargo.toml new file mode 100644 index 0000000..753b13d --- /dev/null +++ b/services/spdm/requester/Cargo.toml
@@ -0,0 +1,12 @@ +# Licensed under the Apache-2.0 license + +[package] +name = "openprot-spdm-requester" +version = "0.1.0" +edition = "2021" +description = "SPDM requester implementation for OpenPRoT" +license = "Apache-2.0" + +[dependencies] +spdm-lib = { git = "https://github.com/9elements/spdm-lib.git", branch = "buildup" } +heapless = { workspace = true }
diff --git a/services/spdm/requester/README.md b/services/spdm/requester/README.md new file mode 100644 index 0000000..0cca5d2 --- /dev/null +++ b/services/spdm/requester/README.md
@@ -0,0 +1,29 @@ +# openprot-spdm-requester + +SPDM requester (client) implementation for OpenPRoT. + +## Overview + +This crate provides the SPDM requester role, which initiates attestation operations with SPDM responders. The requester sends requests to retrieve: +- Version information +- Device capabilities +- Cryptographic algorithms +- Certificates and measurements +- Challenge-response attestation + +## Status + +This crate is in early development. Basic infrastructure is in place, but SPDM protocol operations are not yet implemented. + +## Dependencies + +- `spdm-lib` — SPDM protocol library from 9elements +- `heapless` — `no_std` collections + +## Future Work + +- Implement SPDM 1.2+ request builders +- Add GET_VERSION, GET_CAPABILITIES support +- Implement CHALLENGE and GET_MEASUREMENTS +- Add certificate chain validation +- Integrate with MCTP transport layer
diff --git a/services/spdm/requester/src/lib.rs b/services/spdm/requester/src/lib.rs new file mode 100644 index 0000000..7b6bf73 --- /dev/null +++ b/services/spdm/requester/src/lib.rs
@@ -0,0 +1,67 @@ +// Licensed under the Apache-2.0 license + +//! SPDM Requester Service +//! +//! This service implements the SPDM requester (client) role, which initiates +//! attestation and measurement operations with SPDM responders. +//! +//! ## Overview +//! +//! The SPDM requester sends requests to responders to: +//! - Get version information +//! - Negotiate capabilities and algorithms +//! - Challenge the responder for attestation +//! - Retrieve measurements and certificates +//! +//! ## Architecture +//! +//! ```text +//! ┌─────────────────────────┐ +//! │ Application │ +//! │ (attestation manager) │ +//! └───────────┬─────────────┘ +//! │ +//! ▼ +//! ┌─────────────────────────┐ +//! │ SPDM Requester │◄── This crate +//! │ (request builder) │ +//! └───────────┬─────────────┘ +//! │ SPDM messages +//! ▼ +//! ┌─────────────────────────┐ +//! │ MCTP Transport │ +//! └─────────────────────────┘ +//! ``` + +#![no_std] +#![warn(missing_docs)] + +/// SPDM requester state and configuration. +#[derive(Debug)] +pub struct SpdmRequester { + /// Remote endpoint ID for MCTP transport. + pub remote_eid: u8, +} + +impl SpdmRequester { + /// Create a new SPDM requester targeting the given endpoint. + pub fn new(remote_eid: u8) -> Self { + Self { remote_eid } + } + + /// Get the remote endpoint ID. + pub fn remote_eid(&self) -> u8 { + self.remote_eid + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_requester_creation() { + let requester = SpdmRequester::new(42); + assert_eq!(requester.remote_eid(), 42); + } +}
diff --git a/services/spdm/responder/BUILD.bazel b/services/spdm/responder/BUILD.bazel new file mode 100644 index 0000000..9dd4e83 --- /dev/null +++ b/services/spdm/responder/BUILD.bazel
@@ -0,0 +1,20 @@ +# Licensed under the Apache-2.0 license + +load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") + +rust_library( + name = "spdm_responder_lib", + srcs = glob(["src/**/*.rs"]), + crate_name = "openprot_spdm_responder", + edition = "2024", + visibility = ["//visibility:public"], + deps = [ + "@rust_crates//:heapless", + "@rust_crates//:spdm-lib", + ], +) + +rust_test( + name = "spdm_responder_test", + crate = ":spdm_responder_lib", +)
diff --git a/services/spdm/responder/Cargo.toml b/services/spdm/responder/Cargo.toml new file mode 100644 index 0000000..a06a73b --- /dev/null +++ b/services/spdm/responder/Cargo.toml
@@ -0,0 +1,12 @@ +# Licensed under the Apache-2.0 license + +[package] +name = "openprot-spdm-responder" +version = "0.1.0" +edition = "2021" +description = "SPDM responder implementation for OpenPRoT" +license = "Apache-2.0" + +[dependencies] +spdm-lib = { git = "https://github.com/9elements/spdm-lib.git", branch = "buildup" } +heapless = { workspace = true }
diff --git a/services/spdm/responder/README.md b/services/spdm/responder/README.md new file mode 100644 index 0000000..0f3b3c9 --- /dev/null +++ b/services/spdm/responder/README.md
@@ -0,0 +1,31 @@ +# openprot-spdm-responder + +SPDM responder (server) implementation for OpenPRoT. + +## Overview + +This crate provides the SPDM responder role, which handles attestation requests from SPDM requesters. The responder processes requests and provides: +- Version and capability negotiation +- Certificate chain provisioning +- Device measurements +- Challenge-response attestation +- CSR generation and certificate updates + +## Status + +This crate is in early development. Basic infrastructure is in place, but SPDM protocol operations are not yet implemented. + +## Dependencies + +- `spdm-lib` — SPDM protocol library from 9elements +- `heapless` — `no_std` collections + +## Future Work + +- Implement SPDM 1.2+ response handlers +- Add GET_VERSION, GET_CAPABILITIES handlers +- Implement CHALLENGE response with signature +- Add GET_MEASUREMENTS handler +- Integrate with certificate storage +- Integrate with MCTP transport layer +- Add crypto service integration for signing operations
diff --git a/services/spdm/responder/src/lib.rs b/services/spdm/responder/src/lib.rs new file mode 100644 index 0000000..d0fa403 --- /dev/null +++ b/services/spdm/responder/src/lib.rs
@@ -0,0 +1,68 @@ +// Licensed under the Apache-2.0 license + +//! SPDM Responder Service +//! +//! This service implements the SPDM responder (server) role, which responds +//! to attestation and measurement requests from SPDM requesters. +//! +//! ## Overview +//! +//! The SPDM responder receives requests and provides: +//! - Version and capability information +//! - Certificate chains for authentication +//! - Device measurements +//! - Challenge-response attestation +//! +//! ## Architecture +//! +//! ```text +//! ┌─────────────────────────┐ +//! │ MCTP Transport │ +//! │ (incoming messages) │ +//! └───────────┬─────────────┘ +//! │ SPDM requests +//! ▼ +//! ┌─────────────────────────┐ +//! │ SPDM Responder │◄── This crate +//! │ (request handler) │ +//! └───────────┬─────────────┘ +//! │ +//! ▼ +//! ┌─────────────────────────┐ +//! │ Crypto Service │ +//! │ Storage Service │ +//! └─────────────────────────┘ +//! ``` + +#![no_std] +#![warn(missing_docs)] + +/// SPDM responder state and configuration. +#[derive(Debug)] +pub struct SpdmResponder { + /// Local endpoint ID for MCTP transport. + pub local_eid: u8, +} + +impl SpdmResponder { + /// Create a new SPDM responder with the given local endpoint ID. + pub fn new(local_eid: u8) -> Self { + Self { local_eid } + } + + /// Get the local endpoint ID. + pub fn local_eid(&self) -> u8 { + self.local_eid + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_responder_creation() { + let responder = SpdmResponder::new(8); + assert_eq!(responder.local_eid(), 8); + } +}
diff --git a/third_party/crates_io/crates_no_std/Cargo.lock b/third_party/crates_io/crates_no_std/Cargo.lock index 6dd6afa..d15efcd 100644 --- a/third_party/crates_io/crates_no_std/Cargo.lock +++ b/third_party/crates_io/crates_no_std/Cargo.lock
@@ -112,6 +112,12 @@ checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" [[package]] +name = "bitfield" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + +[[package]] name = "bitflags" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -161,7 +167,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" dependencies = [ "bare-metal", - "bitfield", + "bitfield 0.13.2", "embedded-hal 0.2.7", "volatile-register", ] @@ -232,6 +238,7 @@ "p384", "proposed-traits", "sha2", + "spdm-lib", "zerocopy", ] @@ -736,6 +743,15 @@ ] [[package]] +name = "spdm-lib" +version = "0.1.0" +source = "git+https://github.com/9elements/spdm-lib.git?branch=buildup#dcd0f23f1431b0a7cab21704b1c8584d911a8e2e" +dependencies = [ + "bitfield 0.14.0", + "zerocopy", +] + +[[package]] name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/third_party/crates_io/crates_no_std/Cargo.toml b/third_party/crates_io/crates_no_std/Cargo.toml index f2b34fa..0965724 100644 --- a/third_party/crates_io/crates_no_std/Cargo.toml +++ b/third_party/crates_io/crates_no_std/Cargo.toml
@@ -43,6 +43,9 @@ mctp = { git = "https://github.com/OpenPRoT/mctp-rs.git", branch = "sync-features", default-features = false } mctp-lib = { git = "https://github.com/9elements/mctp-lib.git", branch = "buildup" } +# SPDM crates +spdm-lib = { git = "https://github.com/9elements/spdm-lib.git", branch = "buildup" } + # ECDSA crates ecdsa = { version = "0.16", default-features = false, features = ["signing", "verifying"] } p256 = { version = "0.13", default-features = false, features = ["ecdsa"] }
diff --git a/third_party/crates_io/rust_crates/alias_hub.BUILD b/third_party/crates_io/rust_crates/alias_hub.BUILD index 5c8c603..92904fd 100644 --- a/third_party/crates_io/rust_crates/alias_hub.BUILD +++ b/third_party/crates_io/rust_crates/alias_hub.BUILD
@@ -58,6 +58,12 @@ ) alias( + name = "spdm-lib", + actual = "@oot_crates_no_std//:spdm-lib", + visibility = ["//visibility:public"], +) + +alias( name = "heapless", actual = "@oot_crates_no_std//:heapless", visibility = ["//visibility:public"],