From 9f9b90cb9753e76ba18cfd26acf21ace5f75b30a Mon Sep 17 00:00:00 2001 From: DHR60 Date: Sat, 17 Jan 2026 16:22:26 +0800 Subject: [PATCH] Add hysteria2 uri cert sha pinning support (#8657) --- v2rayN/ServiceLib/Handler/Fmt/Hysteria2Fmt.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/v2rayN/ServiceLib/Handler/Fmt/Hysteria2Fmt.cs b/v2rayN/ServiceLib/Handler/Fmt/Hysteria2Fmt.cs index c8d6a71a..d92bd0c8 100644 --- a/v2rayN/ServiceLib/Handler/Fmt/Hysteria2Fmt.cs +++ b/v2rayN/ServiceLib/Handler/Fmt/Hysteria2Fmt.cs @@ -25,6 +25,10 @@ public class Hysteria2Fmt : BaseFmt ResolveUriQuery(query, ref item); item.Path = GetQueryDecoded(query, "obfs-password"); item.Ports = GetQueryDecoded(query, "mport"); + if (item.CertSha.IsNullOrEmpty()) + { + item.CertSha = GetQueryDecoded(query, "pinSHA256"); + } return item; } @@ -55,6 +59,16 @@ public class Hysteria2Fmt : BaseFmt { dicQuery.Add("mport", Utils.UrlEncode(item.Ports.Replace(':', '-'))); } + if (!item.CertSha.IsNullOrEmpty()) + { + var sha = item.CertSha; + var idx = sha.IndexOf('~'); + if (idx > 0) + { + sha = sha[..idx]; + } + dicQuery.Add("pinSHA256", Utils.UrlEncode(sha)); + } return ToUri(EConfigType.Hysteria2, item.Address, item.Port, item.Id, dicQuery, remark); }