mirror of
https://github.com/2dust/v2rayN.git
synced 2026-10-19 19:55:00 +03:00
Add Cert SHA-256 pinning support (#8613)
This commit is contained in:
@@ -168,7 +168,9 @@ public class ActionPrecheckManager
|
||||
if (item.StreamSecurity == Global.StreamSecurity)
|
||||
{
|
||||
// check certificate validity
|
||||
if ((!item.Cert.IsNullOrEmpty()) && (CertPemManager.ParsePemChain(item.Cert).Count == 0))
|
||||
if (!item.Cert.IsNullOrEmpty()
|
||||
&& (CertPemManager.ParsePemChain(item.Cert).Count == 0)
|
||||
&& !item.CertSha.IsNullOrEmpty())
|
||||
{
|
||||
errors.Add(string.Format(ResUI.InvalidProperty, "TLS Certificate"));
|
||||
}
|
||||
|
||||
@@ -416,4 +416,22 @@ public class CertPemManager
|
||||
|
||||
return string.Concat(pemList);
|
||||
}
|
||||
|
||||
public static string GetCertSha256Thumbprint(string pemCert, bool includeColon = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
var cert = X509Certificate2.CreateFromPem(pemCert);
|
||||
var thumbprint = cert.GetCertHashString(HashAlgorithmName.SHA256);
|
||||
if (includeColon)
|
||||
{
|
||||
return string.Join(":", thumbprint.Chunk(2).Select(c => new string(c)));
|
||||
}
|
||||
return thumbprint;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user