roll: third_party/pigweed/src 8e2d22c..e617596 (125 commits)

e617596:https://pigweed.googlesource.com/pigweed/pigweed/+/e61759609aa18cd49c3bb05f5f21400bf4e28df3 roll: luci
032e5f7:https://pigweed.googlesource.com/pigweed/pigweed/+/032e5f7678a741edfcb9bcd62853f237925ca3fb Revert "roll: toolchain-integration"
d06235b:https://pigweed.googlesource.com/pigweed/pigweed/+/d06235befcee55181defd356f47c48342e28917d third_party/emboss: Use SYSTEM includes in CMake
885df18:https://pigweed.googlesource.com/pigweed/pigweed/+/885df184bf2e8b5cabe2f7409a534e9103aba60c pw_containers: Use IsIntrusiveItem in CheckItemType
b238e91:https://pigweed.googlesource.com/pigweed/pigweed/+/b238e910298a508a17985d6f82f1d2cfa451c178 pw_rp2350: Fix Zephyr build with Bazel 9.3.0
b44c59e:https://pigweed.googlesource.com/pigweed/pigweed/+/b44c59effb21b7e839d93de2cac7e9c05fc9e423 various: Squash warnings with Bazel 9.3.0
b128572:https://pigweed.googlesource.com/pigweed/pigweed/+/b128572f74456f46b2e306b7e3b2099fbad15c71 targets/rp2xxx: Support flashing via debugprobe over usbip
45375e6:https://pigweed.googlesource.com/pigweed/pigweed/+/45375e60f69ffc9f002008607ba33843061a3079 pw_ghish: Add review agent and policy tests
96bd5f9:https://pigweed.googlesource.com/pigweed/pigweed/+/96bd5f991aa21aec0dc6408e87ca137145a66015 pw_persistent_ram: Fix implicit conversion warnings
d175adb:https://pigweed.googlesource.com/pigweed/pigweed/+/d175adb4a4d112fd34bd3171b48b900da6e75f99 pw_buf: Restructure ConstBuf as a wrapper around Buf
a7be18d:https://pigweed.googlesource.com/pigweed/pigweed/+/a7be18d71c1066e82d6590afaa459b71e466750b pw_bluetooth_sapphire: Create unique emulators
34b17a3:https://pigweed.googlesource.com/pigweed/pigweed/+/34b17a3f6588c548156b7c3bb316ccdbbb7c8137 pw_kernel: Replace break_lock with adopt_locked
efa36cc:https://pigweed.googlesource.com/pigweed/pigweed/+/efa36ccd68b335dadeefbd3946461b5b2ff8e91b pw_rpc2: Introduce internal::ServiceInfo<ServiceImpl>
95ede28:https://pigweed.googlesource.com/pigweed/pigweed/+/95ede289f0d1a72bc132e91c6c1cf151655943df pw_rpc2: Merge status and handshake into cpp library
3bfb1b8:https://pigweed.googlesource.com/pigweed/pigweed/+/3bfb1b8fe61d6731caf6e5f53bc9ffc768285f4f pw_bluetooth_sapphire: Own emulator by connection
f406e2f:https://pigweed.googlesource.com/pigweed/pigweed/+/f406e2f737e0ba8397f3ed5a36447b479a7525b8 pw_presubmit: Update lockfile_check to include all lockfiles
ad139a4:https://pigweed.googlesource.com/pigweed/pigweed/+/ad139a433705807773107fdd01b4ed2be9090000 pw_rpc2: Add TestHarness unit testing fixture
dc10059:https://pigweed.googlesource.com/pigweed/pigweed/+/dc1005948933b8ca1ea9abb28d8b2c0bc9de9d0d roll: toolchain-integration
9668db1:https://pigweed.googlesource.com/pigweed/pigweed/+/9668db15a52483ada50a5fd497f11ad9430c0b6d pw_transfer: Fix implicit conversion warnings
93c667d:https://pigweed.googlesource.com/pigweed/pigweed/+/93c667dac04d1a908d26dc3d8c3d507840338d77 pw_chrono: Fix implicit conversion warnings
d18ca0a:https://pigweed.googlesource.com/pigweed/pigweed/+/d18ca0a0bb454d8859ce174962e956b02edad835 pw_bluetooth_sapphire: Guard against removing connecting peers
2da1f46:https://pigweed.googlesource.com/pigweed/pigweed/+/2da1f467ac1bba22f6a24e8f765b4b29bd66e93f pw_snapshot: Enable implicit conversion warnings
a658a8a:https://pigweed.googlesource.com/pigweed/pigweed/+/a658a8ab317021395acc40feda55d9a46c04441b pw_trace: Fix implicit conversion warnings
39f9eb2:https://pigweed.googlesource.com/pigweed/pigweed/+/39f9eb22b41f2c8a5a974219d10b9a45bd12535b pw_ring_buffer: Fix implicit conversion warnings
5d3945e:https://pigweed.googlesource.com/pigweed/pigweed/+/5d3945e5889cc18be5c60fdcfa2d622e2755c73e pw_bluetooth_sapphire: Fix implicit conversion warnings
07627e0:https://pigweed.googlesource.com/pigweed/pigweed/+/07627e036ed56ee0401eb4eb2e056086319979dc pw_containers: Optimize intrusive list removal and uncontained checks
c14c39b:https://pigweed.googlesource.com/pigweed/pigweed/+/c14c39b257b85e3d353dafb60ec3c36c1008f209 pw_bluetooth: Remove unused pw_channel dependencies
ef2d1b1:https://pigweed.googlesource.com/pigweed/pigweed/+/ef2d1b1fa0119c22c6440b0ed1fb1101e593585e pw_libc: Fix implicit conversion warnings
9689157:https://pigweed.googlesource.com/pigweed/pigweed/+/9689157c2c6e227f043906710228d0c097ed417b pw_ghish: Support --body-file - and --body - stdin
13fe299:https://pigweed.googlesource.com/pigweed/pigweed/+/13fe299b23f44db3ab688896b4ab6119b91da7ab pw_async2: Destroy ValueFuture values outside the provider lock
b638de3:https://pigweed.googlesource.com/pigweed/pigweed/+/b638de3c106c6433f01571747a8a503a12eb1f00 pw_bluetooth_sapphire: Validate SynchronousConnectionComplete event view
ffb4561:https://pigweed.googlesource.com/pigweed/pigweed/+/ffb456171b053ad8d3953678171602a28022e5d0 pw_ghish: Scope @owners on merge commits and prefer recent file authors
c669565:https://pigweed.googlesource.com/pigweed/pigweed/+/c669565db6ee7fa9417b243f00d1a84a11b0575b pw_result: Fix implicit conversion warnings
cb1d237:https://pigweed.googlesource.com/pigweed/pigweed/+/cb1d2378243645963fb62855a47facda8ae7d41d pw_ghish: Honor BUILD_WORKING_DIRECTORY when run via Bazel
2f150d4:https://pigweed.googlesource.com/pigweed/pigweed/+/2f150d4c22915ce070753685cdb881d1efdc5917 pw_status, pw_result: Preserve derived status state
57b4f2e:https://pigweed.googlesource.com/pigweed/pigweed/+/57b4f2eff500996a9a2f5a9c1e4b6b75539293e1 pw_perf_test: Fix implicit conversion warnings
905ae7a:https://pigweed.googlesource.com/pigweed/pigweed/+/905ae7a4d5db915d4dff344425967a4e88200c12 pw_toolchain: Fix toolchains for Bazel 9.3.0
4f10eff:https://pigweed.googlesource.com/pigweed/pigweed/+/4f10eff1c3d50270bf3d0b703bf3b2e78494a869 docs: Add Pigweed Go style guide
79a8257:https://pigweed.googlesource.com/pigweed/pigweed/+/79a8257c4317f13c6655cff4cdb882833b0b4706 pw_bluetooth_sapphire: Add missing Fuchsia targets to compile commands
5a5e4e2:https://pigweed.googlesource.com/pigweed/pigweed/+/5a5e4e2b9250d947c1260177388f606787184f66 pw_ide: Traverse Fuchsia package attributes in compile commands aspect
44ab21d:https://pigweed.googlesource.com/pigweed/pigweed/+/44ab21db0d4f5ba8fc9c6ff0bdb3afa0bf34caae pw_ghish/worktree: Batch Gerrit queries in wt list
01d42a7:https://pigweed.googlesource.com/pigweed/pigweed/+/01d42a714f15cd3eaae007a1f28ce04a2ef413e7 pw_rpc2: Strengthen client close and call reader tests
895db44:https://pigweed.googlesource.com/pigweed/pigweed/+/895db445c324adccec1219e6ba8a844ccb7d7483 pw_allocator: Add AbstractPool
00ca930:https://pigweed.googlesource.com/pigweed/pigweed/+/00ca9307860a0b6594eb26e7dc2e2804639bc68b pw_ghish: Add --nightly and --submit-at flags for Gerrit Flows
6bd8dc9:https://pigweed.googlesource.com/pigweed/pigweed/+/6bd8dc94fe918a5296e1949b63a666830f6486d0 pw_varint: Fix 64-bit overflow handling and optimize decoding
05e266e:https://pigweed.googlesource.com/pigweed/pigweed/+/05e266ef6573642ca88bce7fa4db9200dc066210 pw_bluetooth_sapphire: Use ScopedGlobalLogger
ffb0d66:https://pigweed.googlesource.com/pigweed/pigweed/+/ffb0d668c583a81ee3ffe17781d6aec5bdd95e23 docs: Fix C/C++ API reference links
cd222a3:https://pigweed.googlesource.com/pigweed/pigweed/+/cd222a3cf5ca0d458dbb2187487032b64ac12ffb pw_rpc2: Make status enum library public
219a3d8:https://pigweed.googlesource.com/pigweed/pigweed/+/219a3d8b6c2b33073ad053468857106a4bf87da1 pw_transport: Rename //pw_transport/cpp:pw_transport to :socket
a7f09c5:https://pigweed.googlesource.com/pigweed/pigweed/+/a7f09c574f397861d61d79a19b80fea8c6a1686f pw_system: Fix implicit conversion warnings
b9d6e3d:https://pigweed.googlesource.com/pigweed/pigweed/+/b9d6e3d424543843865414c8f6e3f93865f9ed2d pw_stream: Fix implicit conversion warnings
8e1106f:https://pigweed.googlesource.com/pigweed/pigweed/+/8e1106f4335c85501c5cb7e3b58b6d5de4c43959 pw_env_setup: Update PyYAML to 6.0.3
7a74a4d:https://pigweed.googlesource.com/pigweed/pigweed/+/7a74a4d01f62203b4efda1451266d3f2021643fc docs: Enable intersphinx for Python standard library
2f0a5ff:https://pigweed.googlesource.com/pigweed/pigweed/+/2f0a5ff1c311bae0c66427334561ca9356e2eccc pw_rpc2: Make public API visible
53ccf2c:https://pigweed.googlesource.com/pigweed/pigweed/+/53ccf2c2b50266dc9a9968dc1760d0c270afeed3 pw_rpc2: Integrate Doxygen comments; minor docs tweaks
03a00c7:https://pigweed.googlesource.com/pigweed/pigweed/+/03a00c73cdff2ef030063118fee0e966b0c5bf63 pw_rpc2: Add docs landing page
57a886d:https://pigweed.googlesource.com/pigweed/pigweed/+/57a886dc82d457b9530e1f8f7d236d46b8cce940 pw_protobuf_compiler: Lazily import black in proto_repr()
c70464b:https://pigweed.googlesource.com/pigweed/pigweed/+/c70464bf3d7a245de931cf5914511a6fa2fedcc0 pw_bluetooth_sapphire: Keep LE-bonded peers non-temporary
cd71c52:https://pigweed.googlesource.com/pigweed/pigweed/+/cd71c528b1dc83cf87062f1d764954b02b6cfe21 pw_allocator: Add AbstractDeallocator
4b31fa5:https://pigweed.googlesource.com/pigweed/pigweed/+/4b31fa57e0e80e38c9c66451f5306440b2aa9f55 Revert "zephyr: Fix library linkage and generated header dependencies"
bcf4d66:https://pigweed.googlesource.com/pigweed/pigweed/+/bcf4d66ca755b7d7aaacc32878c59cc90ee60c1f pw_ghish: Use modern generic sorting API
cbe78ba:https://pigweed.googlesource.com/pigweed/pigweed/+/cbe78bac565071be1c657271a7fa8f67307494f9 pw_ghish: Dedup dedup functions
0057d5d:https://pigweed.googlesource.com/pigweed/pigweed/+/0057d5d052f1f1dc1332a3e0a8bbbcefda68d0ee pw_multibuf: Fix implicit conversion warnings
3336ccf:https://pigweed.googlesource.com/pigweed/pigweed/+/3336ccfc8b08998e4e08c8d15e60c6f77c95eb45 pw_allocator: Remove unused MaybeSharedPtr
4f99592:https://pigweed.googlesource.com/pigweed/pigweed/+/4f9959224dc78099ca926bc678f3789881b0a527 pw_assert: Fix PW_ASSERT_NOTNULL clang-tidy check
9971ee0:https://pigweed.googlesource.com/pigweed/pigweed/+/9971ee079e86430dc00119f8eaf32f9cef3054f1 pw_bluetooth_proxy: Fix async multithreaded test flakes
7ba0149:https://pigweed.googlesource.com/pigweed/pigweed/+/7ba0149a42f96eec0e548e419b925cce4b0e5177 pw_kvs: Fix swapped AddressList template arguments
6be4bc3:https://pigweed.googlesource.com/pigweed/pigweed/+/6be4bc3e5fc58519ac89fb8651bb740f76fcb117 docs: Update changelog for September 2026
25adde6:https://pigweed.googlesource.com/pigweed/pigweed/+/25adde6888ae4af0048aafd1934593454465d321 pw_bluetooth_proxy: Handle Prefer Active mode in SniffOffloadManager
f9427c1:https://pigweed.googlesource.com/pigweed/pigweed/+/f9427c111825ba93f0459d30b43245bad773364a sniff: downgrade unknown connection warning logs
d4a4e5b:https://pigweed.googlesource.com/pigweed/pigweed/+/d4a4e5b576f23773f18d2b62cfa10dd4630dae27 zephyr: Fix library linkage and generated header dependencies
150c95b:https://pigweed.googlesource.com/pigweed/pigweed/+/150c95b6aadd037dd30d35d2202fc4cbb8cf3fd1 pw_sync: Remove unnecessary C++ flag from FreeRTOS bindgen config
d01b902:https://pigweed.googlesource.com/pigweed/pigweed/+/d01b902f2313780abc6257e375861b0c11a197f9 pw_rpc2: Reject packet types with two close modes
e2be7cf:https://pigweed.googlesource.com/pigweed/pigweed/+/e2be7cf9b29a438cc8a7ada6bab6309956a47011 pw_build: Prune sapphire from host workflows
352fad0:https://pigweed.googlesource.com/pigweed/pigweed/+/352fad0644b88a4f30915bc64cdf6d602d003e58 pw_build: Add GENERATED_SOURCES to CMake sandboxing
d3e3c37:https://pigweed.googlesource.com/pigweed/pigweed/+/d3e3c37d324ad69ac01c69f7ce802e75c600b455 pw_presubmit: Do not require perf test sources in GN
2545663:https://pigweed.googlesource.com/pigweed/pigweed/+/2545663f9e801465f426974bdaede99745df94c3 sphinx: Enable color output
17787d4:https://pigweed.googlesource.com/pigweed/pigweed/+/17787d440fe583fac3d04f176da32be4978a45d7 targets: Fix implicit conversion warnings
8561a7a:https://pigweed.googlesource.com/pigweed/pigweed/+/8561a7a5f42faee7f32644ac5eb644da552ddc16 pw_allocator: Fix UniquePtr::operator==
0501ca6:https://pigweed.googlesource.com/pigweed/pigweed/+/0501ca641bd8c798b7ebae86bee31d80356e2aa9 pw_multibuf: Fix Buf/MultiBuf integration
02e854d:https://pigweed.googlesource.com/pigweed/pigweed/+/02e854d7583453036fe796133576e9a82f99cf9c pw_bluetooth_sapphire: Refactor and reformat peer tests
1856d2e:https://pigweed.googlesource.com/pigweed/pigweed/+/1856d2e5e7d7281bba412a24a7b93554e41ab91c pw_bluetooth_sapphire: Stop inquiry results from updating bonded peers
fabc99b:https://pigweed.googlesource.com/pigweed/pigweed/+/fabc99b4db8384f537734082e11cb1507ea45714 pw_rpc2,pw_async2: Verify futures are pended on the RPC dispatcher
0b28c07:https://pigweed.googlesource.com/pigweed/pigweed/+/0b28c0712d35a26e12aec95628a0637a02652c7f pw_ghish: Fix hotlist edits and quota probing
08718be:https://pigweed.googlesource.com/pigweed/pigweed/+/08718becdd95086e9479d90963717a1b0c459600 pw_rpc2: Replace pw::Status with RpcStatus and ProtocolError
ee5b7a5:https://pigweed.googlesource.com/pigweed/pigweed/+/ee5b7a522470ee17187f3dc0a3f6e0ad619f6596 pw_ide: Fix vscode_test timeout, duplicate install, and UTF-8 logs
797052b:https://pigweed.googlesource.com/pigweed/pigweed/+/797052b526ff175b145345dd9497d57329150706 pw_rpc2: Correct ControlFuture documentation
d2c7bd1:https://pigweed.googlesource.com/pigweed/pigweed/+/d2c7bd1ee71dbd502c77ac27b8967cdbf3c0c49c pw_async_basic: Fix implicit conversion warnings
ee1a3af:https://pigweed.googlesource.com/pigweed/pigweed/+/ee1a3afb9f48aee208091ebaef82962a48e6399b pw_string: Fix implicit conversion warnings
356564f:https://pigweed.googlesource.com/pigweed/pigweed/+/356564f1654a2376f45cd4a5e61c0f39d0a2b099 docs: Always expand explicit api-ref placeholders in toctrees
755ccba:https://pigweed.googlesource.com/pigweed/pigweed/+/755ccba08b2eb5cdbdedf5cb433d433f2f88acc0 pw_malloc_freelist: Fix implicit conversion warnings
7e81e78:https://pigweed.googlesource.com/pigweed/pigweed/+/7e81e78799ffe1b5bdd128ca5c9416f392cafcec pw_async2: Add ValueFuture::MoveFrom for derived futures
0bd3449:https://pigweed.googlesource.com/pigweed/pigweed/+/0bd3449310bc7ffdf90634745f6b64bb8caaf91a pw_protobuf: Fix implicit conversion warnings
7621f57:https://pigweed.googlesource.com/pigweed/pigweed/+/7621f57c7e5936c8012018c490dc1705dbec402f pw_system: Guard MTU in RpcChannelOutputQueue
dd263b9:https://pigweed.googlesource.com/pigweed/pigweed/+/dd263b93d14e3ff58cdcec329de05d9c53b49756 pw_metric: Fix implicit conversion warnings
6c4e8fe:https://pigweed.googlesource.com/pigweed/pigweed/+/6c4e8fe9f9443ea6f3598b50da47dbe2088654ef pw_random: Fix implicit conversion warnings
f72f377:https://pigweed.googlesource.com/pigweed/pigweed/+/f72f37758152aeed3ae83170c3f9abf1e1674793 pw_protobuf_compiler: Enable implicit conversion warnings
07d12a9:https://pigweed.googlesource.com/pigweed/pigweed/+/07d12a9b0ab8397e92a7d8422abd3f41c2466ab8 pw_unit_test: Fix implicit conversion warnings
9ccf743:https://pigweed.googlesource.com/pigweed/pigweed/+/9ccf7439828444ee811cf97790834cb84f7bca63 pw_bloat: Fix implicit conversion warnings
849fea0:https://pigweed.googlesource.com/pigweed/pigweed/+/849fea07866fb8059caa1b7e7184fd0c0d705dfc pw_ghish: Default Buganizer comments to MARKDOWN
1b63ce7:https://pigweed.googlesource.com/pigweed/pigweed/+/1b63ce785368fa44d6103d381a9d1f96a3dd3ddf pw_spi_linux: Fix implicit conversion warnings
647720d:https://pigweed.googlesource.com/pigweed/pigweed/+/647720d7cfc092536fa1b5aaac0508f53a1a5506 pw_thread: Fix implicit conversion warnings
ff5ab20:https://pigweed.googlesource.com/pigweed/pigweed/+/ff5ab200cac446298320c62f9dade3bf53add1fb pw_analog: Fix implicit conversion warnings
a81a480:https://pigweed.googlesource.com/pigweed/pigweed/+/a81a480e9c6c1643d37c6ae9362cf742172c9a3a pw_software_update: Fix implicit conversion warnings
3b96e84:https://pigweed.googlesource.com/pigweed/pigweed/+/3b96e849b07cd8f6bfadf616e025620da9773601 pw_tokenizer: Fix implicit conversion warnings
9a69ba0:https://pigweed.googlesource.com/pigweed/pigweed/+/9a69ba062d4904f03550ef81c1df1ba00e27b399 pw_stream_uart_linux: Fix implicit conversion warnings
414050b:https://pigweed.googlesource.com/pigweed/pigweed/+/414050ba2a04f9e337971ee1664f92bbd0511838 pw_bluetooth_sapphire: Use services in virtual HCI
06cf2cf:https://pigweed.googlesource.com/pigweed/pigweed/+/06cf2cf0cb4d5cf40f1aa46bdb254744f8c3f1ce pw_bluetooth_sapphire: Set L2CAP opened centrally
4a96b36:https://pigweed.googlesource.com/pigweed/pigweed/+/4a96b36dad6bafce2d3daa58c0e278d67a5061fe pw_rpc2, pw_protobuf: Require moving messages with callback fields
62798bb:https://pigweed.googlesource.com/pigweed/pigweed/+/62798bbd36132acea60b8b9444564bc38fd7c5a1 pw_status: Replace PW_STATUS_TYPE with StatusOf
0023e9d:https://pigweed.googlesource.com/pigweed/pigweed/+/0023e9d388ac19267d717702af0ed97886043c56 pw_env_setup: Skip npm install scripts and drop JCenter repo
4a9f452:https://pigweed.googlesource.com/pigweed/pigweed/+/4a9f45211d140f196ddf31f04122bc480ba11d18 pw_assert: Add constexpr PW_ASSERT_NOTNULL macro
eaaee0a:https://pigweed.googlesource.com/pigweed/pigweed/+/eaaee0a0e7922261d9c039ee90d92d79183f7a84 pw_enum: Add PW_ENUM_STATUS for custom status types
c3d76f8:https://pigweed.googlesource.com/pigweed/pigweed/+/c3d76f869748ec31e88cfa3905743e96b8b0027e pw_rpc2: Run call tests on real connection tasks
6fcbaac:https://pigweed.googlesource.com/pigweed/pigweed/+/6fcbaacc2a25c218569e463f9d622bd41d2d27d0 pw_ide: Prevent ProcessPoolExecutor deadlock during Kythe extraction
0dfa004:https://pigweed.googlesource.com/pigweed/pigweed/+/0dfa00448df606be9b62e92e9abb3a683ece2881 pw_buf: Add base_size() accessor to Buf
0b47688:https://pigweed.googlesource.com/pigweed/pigweed/+/0b47688825aa70c4bbe3e0a1fc6ea60bb415551f pw_rpc2: Avoid reentering a connection while destroying it
326b7aa:https://pigweed.googlesource.com/pigweed/pigweed/+/326b7aa90852787d741ea97d7d7b12f4d08e7852 pw_atomic: Redefine asm to __asm__ to fix specific zephyr compilation.
45372fc:https://pigweed.googlesource.com/pigweed/pigweed/+/45372fc081fc9eb1c14bd5ebdad72799df81aed6 pw_rpc2: Don't reassign the connection on handshake
1c624c6:https://pigweed.googlesource.com/pigweed/pigweed/+/1c624c6cb583335f5a750da8845da29f27e84960 pw_rpc2: Share the connection task poll loop
448c2cb:https://pigweed.googlesource.com/pigweed/pigweed/+/448c2cbf5ccc10f9c19127c1d4c8ed091c0d439d pw_cli: Suppress banner for automated tools and AI agents
028dc1b:https://pigweed.googlesource.com/pigweed/pigweed/+/028dc1b855318291f7e0b5b50120bf1434a5ab39 pw_rpc2: Clean up C++ build targets and dependencies
47e5c14:https://pigweed.googlesource.com/pigweed/pigweed/+/47e5c148aac21d443e98a4efe35170aa97373817 pw_bluetooth_proxy: Validate L2CAP config options
66c7f0b:https://pigweed.googlesource.com/pigweed/pigweed/+/66c7f0bc73808c475062eb506781aab89e588de0 pw_assert_tokenized: Check for empty static macro at expansion time
802a7cb:https://pigweed.googlesource.com/pigweed/pigweed/+/802a7cbb62b4cd48d1085541df2e30b899f31d64 pw_rpc2: Set MallocNanoZone=0 on macOS for echo_test

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: 8e2d22c29c2956..e61759609aa18c
Roll-Count: 1
Roller-URL: https://cr-buildbucket.appspot.com/build/8667557188665996705
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I2d85177d4059c945087306a09994a59c7ad662b1
Reviewed-on: https://pigweed-review.googlesource.com/c/open-dice/+/506845
1 file changed
tree: c31dcfd719f484fc8653c6403987d44a4b3eb510
  1. build_overrides/
  2. docs/
  3. dpe-rs/
  4. images/
  5. include/
  6. src/
  7. third_party/
  8. toolchains/
  9. tools/
  10. .clang-format
  11. .gitignore
  12. .gitmodules
  13. .gn
  14. banner.txt
  15. bootstrap.sh
  16. BUILD.gn
  17. BUILDCONFIG.gn
  18. generate_test_values.py
  19. LICENSE
  20. navbar.md
  21. OWNERS
  22. pigweed.json
  23. pyproject.toml
  24. README.md
  25. run_fuzzer.sh
  26. rustfmt.toml
README.md

Open Profile for DICE

This repository contains the specification for the Open Profile for DICE along with production-quality code. This profile is a specialization of the Hardware Requirements for a Device Identifier Composition Engine and DICE Layering Architecture specifications published by the Trusted Computing Group (TCG). For readers already familiar with those specs, notable distinctives of this profile include:

  • Separate CDIs for attestation and sealing use cases
  • Categorized inputs, including values related to verified boot
  • Certified UDS values
  • X.509 or CBOR certificates

Mailing List

You can find us (and join us!) at https://groups.google.com/g/open-profile-for-dice. We're happy to answer questions and discuss proposed changes or features.

Specification

The specification can be found here. It is versioned using a major.minor scheme. Compatibility is maintained across minor versions but not necessarily across major versions.

Code

Production quality, portable C code is included. The main code is in dice.h and dice.c. Cryptographic and certificate generation operations are injected via a set of callbacks. Multiple implementations of these operations are provided, all equally acceptable. Integrators should choose just one of these, or write their own.

Tests are included for all code and the build files in this repository can be used to build and run these tests.

Disclaimer: This is not an officially supported Google product.

Thirdparty Dependencies

Different implementations use different third party libraries. The third_party directory contains build files and git submodules for each of these. The submodules must be initialized once after cloning the repo, using git submodule update --init, and updated after pulling commits that roll the submodules using git submodule update.

Building and Running Tests

Quick setup

To setup the build environment the first time:

$ git submodule update --init --recursive
$ source bootstrap.sh
$ gn gen out

To build and run tests:

$ ninja -C out

More details

The easiest way, and currently the only supported way, to build and run tests is from a Pigweed environment on Linux. Pigweed does support other host platforms so it shouldn't be too hard to get this running on Windows for example, but we use Linux.

There are two scripts to help set this up:

  • bootstrap.sh will initialize submodules, bootstrap a Pigweed environment, and generate build files. This can take some time and may download on the order of 1GB of dependencies so the normal workflow is to just do this once.

  • activate.sh quickly reactivates an environment that has been previously bootstrapped.

These scripts must be sourced into the current session: source activate.sh.

In the environment, from the base directory of the dice-profile checkout, run ninja -C out to build everything and run all tests. You can also run pw watch which will build, run tests, and continue to watch for changes.

This will build and run tests on the host using the clang toolchain. Pigweed makes it easy to configure other targets and toolchains. See toolchains/BUILD.gn and the Pigweed documentation.

Porting

The code is designed to be portable and should work with a variety of modern toolchains and in a variety of environments. The main code in dice.h and dice.c is C99; it uses uint8_t, size_t, and memcpy from the C standard library. The various ops implementations are as portable as their dependencies (often not C99 but still very portable). Notably, this code uses designated initializers for readability. This is a feature available in C since C99 but missing from C++ until C++20 where it appears in a stricter form.

Style

The Google C++ Style Guide is used. A .clang-format file is provided for convenience.

Incorporating

To incorporate the code into another project, there are a few options:

  • Copy only the necessary code. For example:

    1. Take the main code as is: include/dice/dice.h, src/dice.c

    2. Choose an implementation for crypto and certificate generation or choose to write your own. If you choose the boringssl implementation, for example, take include/dice/utils.h, include/dice/boringssl_ops.h, src/utils.c, and src/boringssl_ops.c. Taking a look at the library targets in BUILD.gn may be helpful.

  • Add this repository as a git submodule and integrate into the project build, optionally using the gn library targets provided.

  • Integrate into a project already using Pigweed using the gn build files provided.

Size Reports

The build reports code size using Bloaty McBloatface via the pw_bloat Pigweed module. There are two reports generated:

  • Library sizes - This report includes just the library code in this repository. It shows the baseline DICE code with no ops selected, and it shows the delta introduced by choosing various ops implementations. This report does not include the size of the third party dependencies.

  • Executable sizes - This report includes sizes for the library code in this repository plus all dependencies linked into a simple main function which makes a single DICE call with all-zero input. It shows the baseline DICE code with no ops (and therefore no dependencies other than libc), and it shows the delta introduced by choosing various ops implementations. This report does include the size of the third party dependencies. Note that rows specialized from ‘Boringssl Ops’ use that as a baseline for sizing.

The reports will be in the build output, but you can also find the reports in .txt files in the build output. For example, cat out/host_optimized/gen/*.txt | less will display all reports.

Thread Safety

This code does not itself use mutable global variables, or any other type of shared data structure so there is no thread-safety concerns. However, additional care is needed to ensure dependencies are configured to be thread-safe. For example, the current boringssl configuration defines OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED, and that would need to be changed before running in a threaded environment.

Clearing Sensitive Data

This code makes a reasonable effort to clear memory holding sensitive data. This may help with a broader strategy to clear sensitive data but it is not sufficient on its own. Here are a few things to consider.

  • The caller of this code is responsible for buffers they own (of course).
  • The ops implementations need to clear any copies they make of sensitive data. Both boringssl and mbedtls attempt to zeroize but this may need additional care to integrate correctly. For example, boringssl skips optimization prevention when OPENSSL_NO_ASM is defined (and it is currently defined).
  • Sensitive data may remain in cache.
  • Sensitive data may have been swapped out.
  • Sensitive data may be included in a crash dump.