From baacfd1819b8d1bb082260baf7bf824083b29cae Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Thu, 13 Aug 2026 16:53:36 +1000 Subject: [PATCH 1/7] Test Sigstore/Tuf 1.0.0-alpha packages Bump Sigstore and Tuf to 1.0.0-alpha.100.1.dd7cd33 to validate the tightened verification implementation before the packages are mirrored to the dnceng feeds. Temporarily points at nuget.org to acquire the alpha packages. This requires three changes because simply adding the source is not sufficient: - Add the nuget.org package source. - Add a packageSourceMapping entry. Source mapping is enabled repo-wide, so an unmapped source is never consulted. The exact-name Sigstore/Tuf patterns beat the "*" patterns on the dnceng feeds via longest-prefix-match, so only these two packages come from nuget.org. - Add to disabledPackageSources. User/machine-level NuGet configs commonly disable nuget.org, and the existing in does not affect that section. DO NOT MERGE: external feeds break the internal build pipeline. Revert the NuGet.config changes once Sigstore/Tuf are mirrored to dotnet-public. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- Directory.Packages.props | 4 ++-- NuGet.config | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 433bec6d99b..4709fd1294f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -148,8 +148,8 @@ - - + + diff --git a/NuGet.config b/NuGet.config index 68f1e3a83e4..be31c48aef4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -21,6 +21,11 @@ + + @@ -44,8 +49,20 @@ + + + + + + + From 6c4a06479d691a16fbc5f76b55c3a4cbe33dbd99 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 14 Aug 2026 09:13:44 +1000 Subject: [PATCH 2/7] Disable NuGet audit to unblock CI on the temporary nuget.org feed CI failed at restore on every job with NU1902/NU1903 for packages that have nothing to do with this change: Microsoft.OpenApi 3.5.3, SSH.NET 2024.2.0, MessagePack 2.5.198, SharpCompress 0.30.1 and Snappier 1.0.0. None are Sigstore or Tuf, none are in Directory.Packages.props, and all are pre-existing transitive dependencies untouched by this branch. Root cause is a side effect of adding nuget.org, not the alpha packages. NuGet audit is on by default, but it silently no-ops unless a configured source advertises a VulnerabilityInfo resource. The dnceng feeds expose none; nuget.org exposes VulnerabilityInfo/6.7.0. Adding nuget.org gave the restore a vulnerability database for the first time, so audit started flagging long-standing transitive packages, and TreatWarningsAsErrors promoted those warnings into restore-breaking errors repo-wide. Verified both directions locally on Aspire.Milvus.Client.Tests, a project with no Sigstore/Tuf reference: with NuGetAudit=true it reproduces the CI error exactly (NU1903 SSH.NET, GHSA-q939-rpr3-3284), and with the property below it restores cleanly. Aspire.Cli builds with 0 warnings and the full Aspire.Cli.Tests suite passes 4919/4919, including the SdkDumpCommandTests case that previously tripped on Microsoft.OpenApi. Revert this together with the nuget.org source in NuGet.config once the packages are mirrored to dotnet-public. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- Directory.Build.props | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Directory.Build.props b/Directory.Build.props index c0af8b06bf8..3f9c07b7a45 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -17,6 +17,13 @@ https://github.com/microsoft/aspire false true + + false true true true From 687569896bbc8fcf034340391e1bd642747d7829 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 14 Aug 2026 12:15:01 +1000 Subject: [PATCH 3/7] Bump Sigstore/Tuf to 1.0.0-beta.101.1.dd7cd33 Moves from the alpha to the newly published beta. Dependency shape is unchanged (BouncyCastle.Cryptography 2.7.0), and the CLI builds with no API breaks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 8acf51ce1fc..92c266684cd 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -148,8 +148,8 @@ - - + + From 80b2022bcb5f9e91790078dd4e4bc874f4fb09a6 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 14 Aug 2026 13:01:49 +1000 Subject: [PATCH 4/7] Bump Sigstore/Tuf to stable 1.0.0 Dependency shape is unchanged from the prereleases (BouncyCastle.Cryptography 2.7.0), and the CLI builds with no API breaks. The temporary NuGet.config and NuGetAudit changes are still required: dnceng dotnet-public still only carries up to 0.5.0 and does not upstream-fetch 1.0.0. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 92c266684cd..38906a9726a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -148,8 +148,8 @@ - - + + From 380438e4d06398c03b9266f01a3ff41266ee440b Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Thu, 20 Aug 2026 16:20:03 +1000 Subject: [PATCH 5/7] Remove temporary nuget.org feed and NuGet audit workarounds Sigstore and Tuf 1.0.0 cleared CFS quarantine and are now available from the dnceng dotnet-public feed, so the temporary scaffolding added to test them ahead of mirroring is no longer needed. This removes: - the nuget.org package source and its Sigstore/Tuf source mapping - the in that un-disabled nuget.org - NuGetAudit=false, which was only required because nuget.org was the sole configured source exposing a VulnerabilityInfo resource, which activated audit repo-wide and tripped TreatWarningsAsErrors Verified after reverting, with Sigstore/Tuf 1.0.0 purged from both the global packages folder and the HTTP cache, that restore resolves both packages from dotnet-public and that no NU190x diagnostics are emitted. NuGet.config and Directory.Build.props are now identical to main; this branch reduces to the Sigstore/Tuf version bump alone. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- Directory.Build.props | 7 ------- NuGet.config | 17 ----------------- 2 files changed, 24 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 3f9c07b7a45..c0af8b06bf8 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -17,13 +17,6 @@ https://github.com/microsoft/aspire false true - - false true true true diff --git a/NuGet.config b/NuGet.config index be31c48aef4..68f1e3a83e4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -21,11 +21,6 @@ - - @@ -49,20 +44,8 @@ - - - - - - - From 61aa027a70ca64e42808a6ffefdb5acc36d0fa0f Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Thu, 20 Aug 2026 16:35:10 +1000 Subject: [PATCH 6/7] Sign BouncyCastle.Cryptography instead of NSec.Cryptography Sigstore 1.0.0 swapped its cryptographic backend from NSec.Cryptography to BouncyCastle.Cryptography, so the transitive third-party binary that flows into Aspire.Cli changed. Update eng/Signing.props to match. Without an entry the Arcade SDK signs the third-party assembly with the Microsoft certificate and the internal build fails with SIGN004. This is the same failure #14915 fixed when Sigstore/Tuf were first introduced, which is why NSec.Cryptography had an entry at all. The NSec entry is removed rather than kept: no project in the repository resolves NSec.Cryptography any more, verified across all 432 restored project.assets.json files. Note that BouncyCastle.Cryptography was already present in the graph via test-only dependencies, but Aspire.Cli is the first shipping project to take it, which is what makes the signing entry newly necessary. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- eng/Signing.props | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/eng/Signing.props b/eng/Signing.props index f31dc899365..e30f5f148dd 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -61,7 +61,14 @@ - + + From cf88f5095b66f4376d271973f8333ddab02ec02b Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Thu, 20 Aug 2026 16:37:42 +1000 Subject: [PATCH 7/7] Drop explanatory comment from BouncyCastle signing entry The surrounding FileSignInfo entries carry no comments, so the added block was inconsistent with the file. The rationale is recorded in the commit message of 61aa027 and on PR #19335 instead. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4bd5a7f6-724d-4043-acb5-4b792184658b --- eng/Signing.props | 7 ------- 1 file changed, 7 deletions(-) diff --git a/eng/Signing.props b/eng/Signing.props index e30f5f148dd..49ce80a6e73 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -61,13 +61,6 @@ -