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

◆ Create() [3/3]

static SslStreamCertificateContext System.Net.Security.SslStreamCertificateContext.Create ( X509Certificate2 target,
X509Certificate2Collection? additionalCertificates,
bool offline = false,
SslCertificateTrust? trust = null )
inlinestatic

Definition at line 20 of file SslStreamCertificateContext.cs.

21 {
22 if (!target.HasPrivateKey)
23 {
24 throw new NotSupportedException(System.SR.net_ssl_io_no_server_cert);
25 }
27 using (X509Chain x509Chain = new X509Chain())
28 {
29 if (additionalCertificates != null)
30 {
31 foreach (X509Certificate2 additionalCertificate in additionalCertificates)
32 {
33 x509Chain.ChainPolicy.ExtraStore.Add((X509Certificate)additionalCertificate);
34 }
35 }
36 x509Chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
37 x509Chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
38 x509Chain.ChainPolicy.DisableCertificateDownloads = offline;
39 if (!x509Chain.Build(target) && System.Net.NetEventSource.Log.IsEnabled())
40 {
41 System.Net.NetEventSource.Error(null, $"Failed to build chain for {target.Subject}", "Create");
42 }
43 int num = x509Chain.ChainElements.Count - 1;
44 if (num >= 0)
45 {
46 if (num > 0 && x509Chain.ChainElements.Count > 1)
47 {
48 array = new X509Certificate2[num];
49 for (int i = 0; i < num; i++)
50 {
51 array[i] = x509Chain.ChainElements[i + 1].Certificate;
52 }
53 }
54 x509Chain.ChainElements[0].Certificate.Dispose();
55 for (int j = num + 1; j < x509Chain.ChainElements.Count; j++)
56 {
57 x509Chain.ChainElements[j].Certificate.Dispose();
58 }
59 }
60 }
61 return new SslStreamCertificateContext(target, array, trust);
62 }
static readonly System.Net.NetEventSource Log
static void Error(object thisOrContextObject, FormattableString formattableString, [CallerMemberName] string memberName=null)
SslStreamCertificateContext(X509Certificate2 target, X509Certificate2[] intermediates, SslCertificateTrust trust)
static string net_ssl_io_no_server_cert
Definition SR.cs:52
Definition SR.cs:7

References System.Net.Security.SslStreamCertificateContext.SslStreamCertificateContext(), System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Add(), System.array, System.Security.Cryptography.X509Certificates.X509Chain.Build(), System.Security.Cryptography.X509Certificates.X509Chain.ChainElements, System.Security.Cryptography.X509Certificates.X509Chain.ChainPolicy, System.Security.Cryptography.X509Certificates.X509ChainElementCollection.Count, System.Net.NetEventSource.Error(), System.Security.Cryptography.X509Certificates.X509ChainPolicy.ExtraStore, System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey, System.Net.NetEventSource.Log, and System.SR.net_ssl_io_no_server_cert.