Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ BuildChainAndVerifyProperties() [2/2]

static unsafe SslPolicyErrors System.Net.CertificateValidation.BuildChainAndVerifyProperties ( X509Chain chain,
X509Certificate2 remoteCertificate,
bool checkCertName,
bool isServer,
string hostName )
inlinestaticpackage

Definition at line 11 of file CertificateValidation.cs.

12 {
13 SslPolicyErrors sslPolicyErrors = SslPolicyErrors.None;
14 bool flag = chain.Build(remoteCertificate);
15 if (!flag && chain.SafeHandle.DangerousGetHandle() == IntPtr.Zero)
16 {
18 }
19 if (checkCertName)
20 {
21 uint num = 0u;
22 global::Interop.Crypt32.SSL_EXTRA_CERT_CHAIN_POLICY_PARA sSL_EXTRA_CERT_CHAIN_POLICY_PARA = default(global::Interop.Crypt32.SSL_EXTRA_CERT_CHAIN_POLICY_PARA);
23 sSL_EXTRA_CERT_CHAIN_POLICY_PARA.cbSize = (uint)sizeof(global::Interop.Crypt32.SSL_EXTRA_CERT_CHAIN_POLICY_PARA);
24 sSL_EXTRA_CERT_CHAIN_POLICY_PARA.dwAuthType = (isServer ? 1u : 2u);
25 sSL_EXTRA_CERT_CHAIN_POLICY_PARA.fdwChecks = 0u;
26 sSL_EXTRA_CERT_CHAIN_POLICY_PARA.pwszServerName = null;
27 global::Interop.Crypt32.SSL_EXTRA_CERT_CHAIN_POLICY_PARA sSL_EXTRA_CERT_CHAIN_POLICY_PARA2 = sSL_EXTRA_CERT_CHAIN_POLICY_PARA;
28 global::Interop.Crypt32.CERT_CHAIN_POLICY_PARA cERT_CHAIN_POLICY_PARA = default(global::Interop.Crypt32.CERT_CHAIN_POLICY_PARA);
29 cERT_CHAIN_POLICY_PARA.cbSize = (uint)sizeof(global::Interop.Crypt32.CERT_CHAIN_POLICY_PARA);
30 cERT_CHAIN_POLICY_PARA.dwFlags = 0u;
31 cERT_CHAIN_POLICY_PARA.pvExtraPolicyPara = &sSL_EXTRA_CERT_CHAIN_POLICY_PARA2;
32 global::Interop.Crypt32.CERT_CHAIN_POLICY_PARA cpp = cERT_CHAIN_POLICY_PARA;
33 fixed (char* pwszServerName = hostName)
34 {
35 sSL_EXTRA_CERT_CHAIN_POLICY_PARA2.pwszServerName = pwszServerName;
36 cpp.dwFlags |= 4031u;
37 SafeX509ChainHandle safeHandle = chain.SafeHandle;
38 num = Verify(safeHandle, ref cpp);
39 if (num == 2148204815u)
40 {
41 sslPolicyErrors |= SslPolicyErrors.RemoteCertificateNameMismatch;
42 }
43 }
44 }
45 if (!flag)
46 {
47 sslPolicyErrors |= SslPolicyErrors.RemoteCertificateChainErrors;
48 }
49 return sslPolicyErrors;
50 }
static unsafe uint Verify(SafeX509ChainHandle chainContext, ref global::Interop.Crypt32.CERT_CHAIN_POLICY_PARA cpp)

References System.Security.Cryptography.X509Certificates.X509Chain.Build(), System.Runtime.InteropServices.SafeHandle.DangerousGetHandle(), System.Runtime.InteropServices.Marshal.GetLastPInvokeError(), System.Security.Cryptography.X509Certificates.X509Chain.SafeHandle, System.Net.CertificateValidation.Verify(), and System.IntPtr.Zero.