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

◆ GetPublicKey< T >()

static T Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey< T > ( this X509Certificate2 certificate,
Predicate< X509Certificate2 > matchesConstraints = null )
inlinestatic
Type Constraints
T :AsymmetricAlgorithm 

Definition at line 9 of file CertificateExtensionsCommon.cs.

10 {
11 if (certificate == null)
12 {
13 throw new ArgumentNullException("certificate");
14 }
15 string expectedOidValue = GetExpectedOidValue<T>();
16 PublicKey publicKey = certificate.PublicKey;
17 Oid oid = publicKey.Oid;
18 if (expectedOidValue != oid.Value)
19 {
20 return null;
21 }
22 if (matchesConstraints != null && !matchesConstraints(certificate))
23 {
24 return null;
25 }
26 if (typeof(T) == typeof(RSA) || typeof(T) == typeof(DSA))
27 {
28 byte[] rawData = publicKey.EncodedKeyValue.RawData;
29 byte[] rawData2 = publicKey.EncodedParameters.RawData;
30 return (T)X509Pal.Instance.DecodePublicKey(oid, rawData, rawData2, certificate.Pal);
31 }
32 if (typeof(T) == typeof(ECDsa))
33 {
34 return (T)(AsymmetricAlgorithm)X509Pal.Instance.DecodeECDsaPublicKey(certificate.Pal);
35 }
36 if (typeof(T) == typeof(ECDiffieHellman))
37 {
38 return (T)(AsymmetricAlgorithm)X509Pal.Instance.DecodeECDiffieHellmanPublicKey(certificate.Pal);
39 }
41 }
static string NotSupported_KeyAlgorithm
Definition SR.cs:114
Definition SR.cs:7
PublicKey(Oid oid, AsnEncodedData parameters, AsnEncodedData keyValue)
Definition PublicKey.cs:40

References System.Security.Cryptography.X509Certificates.PublicKey.EncodedKeyValue, System.Security.Cryptography.X509Certificates.PublicKey.EncodedParameters, Internal.Cryptography.Pal.CertificateExtensionsCommon.GetExpectedOidValue< T >(), Internal.Cryptography.Pal.X509Pal.Instance, System.SR.NotSupported_KeyAlgorithm, System.Security.Cryptography.X509Certificates.PublicKey.Oid, System.Security.Cryptography.X509Certificates.X509Certificate2.Pal, System.Security.Cryptography.X509Certificates.X509Certificate2.PublicKey, System.Security.Cryptography.AsnEncodedData.RawData, and System.Security.Cryptography.Oid.Value.