Files
FastGateway/FastGateway.sln
T
tokenandClaude Opus 4.8 7f129e91b6 vendor Certes 源码并移除 Newtonsoft.Json/BouncyCastle 以支持 AOT
将 fszlin/certes 3.0.4 源码内置到 src/Certes 独立类库项目,
FastGateway 由 PackageReference 改为 ProjectReference。

- 无任何外部包依赖,开启 IsAotCompatible/IsTrimmable
- Newtonsoft.Json → System.Text.Json + 源生成 CertesJsonContext,
  消除全部匿名对象,保留 JWK RFC 7638 属性顺序
- Portable.BouncyCastle → System.Security.Cryptography
  (ECDsa/RSA/CertificateRequest/X509Certificate2),
  FromPem 兼容读取旧 SEC1/PKCS1 账户密钥
- 证书链直接使用 ACME 返回的 issuers,移除本地 PKIX 构建与内嵌根证书
- resx 资源类改为常量类,移除过时的异常序列化

Certes 单独构建 0 警告 0 错误;NativeAOT publish 通过;
CertService.cs 无需改动。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 09:24:28 +08:00

93 lines
5.8 KiB
Plaintext

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36401.2
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E6D6D101-A6DE-421E-AD34-131020A67A29}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastGateway", "src\FastGateway\FastGateway.csproj", "{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "src\Core\Core.csproj", "{FCAB92E4-1181-4A15-91E8-F43794CEE00F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B1D815BF-870B-4342-8AB8-6B057DBFF3E7}"
ProjectSection(SolutionItems) = preProject
Directory.Build.props = Directory.Build.props
docker-compose.yml = docker-compose.yml
.github\workflows\docker-image.yml = .github\workflows\docker-image.yml
.github\workflows\release.yml = .github\workflows\release.yml
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TunnelClient", "src\TunnelClient\TunnelClient.csproj", "{960263FE-32B9-448B-AF82-81C44D25090C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Certes", "src\Certes\Certes.csproj", "{A6D3C652-9825-4D51-88AF-1F91E61348E4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|x64.ActiveCfg = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|x64.Build.0 = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|x86.ActiveCfg = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Debug|x86.Build.0 = Debug|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|Any CPU.Build.0 = Release|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|x64.ActiveCfg = Release|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|x64.Build.0 = Release|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|x86.ActiveCfg = Release|Any CPU
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E}.Release|x86.Build.0 = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|x64.ActiveCfg = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|x64.Build.0 = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|x86.ActiveCfg = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Debug|x86.Build.0 = Debug|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|Any CPU.Build.0 = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|x64.ActiveCfg = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|x64.Build.0 = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|x86.ActiveCfg = Release|Any CPU
{FCAB92E4-1181-4A15-91E8-F43794CEE00F}.Release|x86.Build.0 = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|x64.ActiveCfg = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|x64.Build.0 = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|x86.ActiveCfg = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Debug|x86.Build.0 = Debug|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|Any CPU.Build.0 = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|x64.ActiveCfg = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|x64.Build.0 = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|x86.ActiveCfg = Release|Any CPU
{960263FE-32B9-448B-AF82-81C44D25090C}.Release|x86.Build.0 = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|x64.ActiveCfg = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|x64.Build.0 = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|x86.ActiveCfg = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Debug|x86.Build.0 = Debug|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|Any CPU.Build.0 = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|x64.ActiveCfg = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|x64.Build.0 = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|x86.ActiveCfg = Release|Any CPU
{A6D3C652-9825-4D51-88AF-1F91E61348E4}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E5E66176-C630-41D1-B9D2-BCFDF7CB594E} = {E6D6D101-A6DE-421E-AD34-131020A67A29}
{FCAB92E4-1181-4A15-91E8-F43794CEE00F} = {E6D6D101-A6DE-421E-AD34-131020A67A29}
{960263FE-32B9-448B-AF82-81C44D25090C} = {E6D6D101-A6DE-421E-AD34-131020A67A29}
{A6D3C652-9825-4D51-88AF-1F91E61348E4} = {E6D6D101-A6DE-421E-AD34-131020A67A29}
EndGlobalSection
EndGlobal