Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
CertificateExtensionsCommon.cs
Go to the documentation of this file.
1
using
System
;
2
using
System.Security.Cryptography
;
3
using
System.Security.Cryptography.X509Certificates
;
4
5
namespace
Internal.Cryptography.Pal
;
6
7
internal
static
class
CertificateExtensionsCommon
8
{
9
public
static
T
GetPublicKey<T>
(
this
X509Certificate2
certificate, Predicate<X509Certificate2> matchesConstraints =
null
) where T :
AsymmetricAlgorithm
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
}
40
throw
new
NotSupportedException
(
System
.
SR
.
NotSupported_KeyAlgorithm
);
41
}
42
43
public
static
T
GetPrivateKey<T>
(
this
X509Certificate2
certificate, Predicate<X509Certificate2> matchesConstraints =
null
) where T :
AsymmetricAlgorithm
44
{
45
if
(certificate ==
null
)
46
{
47
throw
new
ArgumentNullException
(
"certificate"
);
48
}
49
string
expectedOidValue =
GetExpectedOidValue<T>
();
50
if
(!certificate.
HasPrivateKey
|| expectedOidValue != certificate.
PublicKey
.
Oid
.
Value
)
51
{
52
return
null
;
53
}
54
if
(matchesConstraints !=
null
&& !matchesConstraints(certificate))
55
{
56
return
null
;
57
}
58
if
(typeof(T) == typeof(
RSA
))
59
{
60
return
(T)(
AsymmetricAlgorithm
)certificate.
Pal
.GetRSAPrivateKey();
61
}
62
if
(typeof(T) == typeof(
ECDsa
))
63
{
64
return
(T)(
AsymmetricAlgorithm
)certificate.
Pal
.GetECDsaPrivateKey();
65
}
66
if
(typeof(T) == typeof(
DSA
))
67
{
68
return
(T)(
AsymmetricAlgorithm
)certificate.
Pal
.GetDSAPrivateKey();
69
}
70
if
(typeof(T) == typeof(
ECDiffieHellman
))
71
{
72
return
(T)(
AsymmetricAlgorithm
)certificate.
Pal
.GetECDiffieHellmanPrivateKey();
73
}
74
throw
new
NotSupportedException
(
System
.
SR
.
NotSupported_KeyAlgorithm
);
75
}
76
77
private
static
string
GetExpectedOidValue<T>
() where T :
AsymmetricAlgorithm
78
{
79
if
(typeof(T) == typeof(
RSA
))
80
{
81
return
"1.2.840.113549.1.1.1"
;
82
}
83
if
(typeof(T) == typeof(
ECDsa
) || typeof(T) == typeof(
ECDiffieHellman
))
84
{
85
return
"1.2.840.10045.2.1"
;
86
}
87
if
(typeof(T) == typeof(
DSA
))
88
{
89
return
"1.2.840.10040.4.1"
;
90
}
91
throw
new
NotSupportedException
(
System
.
SR
.
NotSupported_KeyAlgorithm
);
92
}
93
}
Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey< T >
static T GetPublicKey< T >(this X509Certificate2 certificate, Predicate< X509Certificate2 > matchesConstraints=null)
Definition
CertificateExtensionsCommon.cs:9
Internal.Cryptography.Pal.CertificateExtensionsCommon.GetExpectedOidValue< T >
static string GetExpectedOidValue< T >()
Definition
CertificateExtensionsCommon.cs:77
Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey< T >
static T GetPrivateKey< T >(this X509Certificate2 certificate, Predicate< X509Certificate2 > matchesConstraints=null)
Definition
CertificateExtensionsCommon.cs:43
Internal.Cryptography.Pal.CertificateExtensionsCommon
Definition
CertificateExtensionsCommon.cs:8
Internal.Cryptography.Pal.X509Pal.Instance
static IX509Pal Instance
Definition
X509Pal.cs:14
Internal.Cryptography.Pal.X509Pal
Definition
X509Pal.cs:13
System.ArgumentNullException
Definition
ArgumentNullException.cs:10
System.NotSupportedException
Definition
NotSupportedException.cs:9
System.SR.NotSupported_KeyAlgorithm
static string NotSupported_KeyAlgorithm
Definition
SR.cs:114
System.SR
Definition
SR.cs:7
System.Security.Cryptography.AsnEncodedData.RawData
byte[] RawData
Definition
AsnEncodedData.cs:25
System.Security.Cryptography.AsymmetricAlgorithm
Definition
AsymmetricAlgorithm.cs:6
System.Security.Cryptography.DSA
Definition
DSA.cs:13
System.Security.Cryptography.ECDiffieHellman
Definition
ECDiffieHellman.cs:10
System.Security.Cryptography.ECDsa
Definition
ECDsa.cs:12
System.Security.Cryptography.Oid.Value
string? Value
Definition
Oid.cs:16
System.Security.Cryptography.Oid
Definition
Oid.cs:6
System.Security.Cryptography.RSA
Definition
RSA.cs:15
System.Security.Cryptography.X509Certificates.PublicKey.Oid
Oid Oid
Definition
PublicKey.cs:38
System.Security.Cryptography.X509Certificates.PublicKey.EncodedParameters
AsnEncodedData EncodedParameters
Definition
PublicKey.cs:18
System.Security.Cryptography.X509Certificates.PublicKey.EncodedKeyValue
AsnEncodedData EncodedKeyValue
Definition
PublicKey.cs:16
System.Security.Cryptography.X509Certificates.PublicKey
Definition
PublicKey.cs:11
System.Security.Cryptography.X509Certificates.X509Certificate2.HasPrivateKey
bool HasPrivateKey
Definition
X509Certificate2.cs:95
System.Security.Cryptography.X509Certificates.X509Certificate2.PublicKey
PublicKey PublicKey
Definition
X509Certificate2.cs:158
System.Security.Cryptography.X509Certificates.X509Certificate2.Pal
new ICertificatePal Pal
Definition
X509Certificate2.cs:36
System.Security.Cryptography.X509Certificates.X509Certificate2
Definition
X509Certificate2.cs:13
Internal.Cryptography.Pal
Definition
CERT_BASIC_CONSTRAINTS2_INFO.cs:1
System.Security.Cryptography.X509Certificates
Definition
CertificateAsn.cs:4
System.Security.Cryptography
Definition
CryptoPool.cs:3
System
Definition
BlockingCollection.cs:8
source
System.Security.Cryptography.X509Certificates
Internal.Cryptography.Pal
CertificateExtensionsCommon.cs
Generated by
1.10.0