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

◆ DecodeECPublicKey< TAlgorithm >()

static TAlgorithm Internal.Cryptography.Pal.X509Pal.DecodeECPublicKey< TAlgorithm > ( CertificatePal certificatePal,
Func< CngKey, TAlgorithm > factory,
Action< TAlgorithm, ECParameters > import,
CryptImportPublicKeyInfoFlags importFlags = CryptImportPublicKeyInfoFlags::NONE )
inlinestaticprivate
Type Constraints
TAlgorithm :AsymmetricAlgorithm 
TAlgorithm :new() 

Definition at line 252 of file X509Pal.cs.

252 : AsymmetricAlgorithm, new()
253 {
254 TAlgorithm val;
255 using (Microsoft.Win32.SafeHandles.SafeBCryptKeyHandle safeBCryptKeyHandle = ImportPublicKeyInfo(certificatePal.CertContext, importFlags))
256 {
257 string curveName = GetCurveName(safeBCryptKeyHandle);
258 if (curveName == null)
259 {
260 CngKeyBlobFormat cngKeyBlobFormat = ((!HasExplicitParameters(safeBCryptKeyHandle)) ? CngKeyBlobFormat.EccPublicBlob : CngKeyBlobFormat.EccFullPublicBlob);
261 byte[] keyBlob = ExportKeyBlob(safeBCryptKeyHandle, cngKeyBlobFormat);
262 using CngKey arg = CngKey.Import(keyBlob, cngKeyBlobFormat);
263 val = factory(arg);
264 }
265 else
266 {
268 byte[] keyBlob = ExportKeyBlob(safeBCryptKeyHandle, cngKeyBlobFormat);
269 ECParameters ecParams = default(ECParameters);
270 ExportNamedCurveParameters(ref ecParams, keyBlob, includePrivateParameters: false);
271 ecParams.Curve = ECCurve.CreateFromFriendlyName(curveName);
272 val = new TAlgorithm();
273 import(val, ecParams);
274 }
275 }
276 return val;
277 }
static unsafe void ExportNamedCurveParameters(ref ECParameters ecParams, byte[] ecBlob, bool includePrivateParameters)
Definition X509Pal.cs:319
static byte[] ExportKeyBlob(Microsoft.Win32.SafeHandles.SafeBCryptKeyHandle bCryptKeyHandle, CngKeyBlobFormat blobFormat)
Definition X509Pal.cs:300
static string GetCurveName(Microsoft.Win32.SafeHandles.SafeBCryptKeyHandle bcryptHandle)
Definition X509Pal.cs:426
static bool HasExplicitParameters(Microsoft.Win32.SafeHandles.SafeBCryptKeyHandle bcryptHandle)
Definition X509Pal.cs:416
static unsafe Microsoft.Win32.SafeHandles.SafeBCryptKeyHandle ImportPublicKeyInfo(SafeCertContextHandle certContext, CryptImportPublicKeyInfoFlags importFlags)
Definition X509Pal.cs:279
static CngKey Import(ReadOnlySpan< byte > keyBlob, CngKeyBlobFormat format)
Definition CngKey.cs:525
static ECCurve CreateFromFriendlyName(string oidFriendlyName)
Definition ECCurve.cs:135

References Internal.Cryptography.Pal.CertificatePal.CertContext, System.Security.Cryptography.ECCurve.CreateFromFriendlyName(), System.Security.Cryptography.CngKeyBlobFormat.EccFullPublicBlob, System.Security.Cryptography.CngKeyBlobFormat.EccPublicBlob, Internal.Cryptography.Pal.X509Pal.ExportKeyBlob(), Internal.Cryptography.Pal.X509Pal.ExportNamedCurveParameters(), Internal.Cryptography.Pal.X509Pal.GetCurveName(), Internal.Cryptography.Pal.X509Pal.HasExplicitParameters(), System.Security.Cryptography.CngKey.Import(), and Internal.Cryptography.Pal.X509Pal.ImportPublicKeyInfo().