Untitled
unknown
csharp
2 years ago
1.6 kB
7
Indexable
public async Task<X509Certificate2> GetCertificateAsync() { KeyVaultCertificateWithPolicy certificate = await mCertificateClient.GetCertificateAsync(mCertificateName); // Return a certificate with only the public key if the private key is not exportable. if (certificate.Policy?.Exportable != true) { return new X509Certificate2(certificate.Cer); } // Parse the secret ID and version to retrieve the private key. string[] segments = certificate.SecretId.AbsolutePath.Split('/', StringSplitOptions.RemoveEmptyEntries); if (segments.Length != 3) { throw new InvalidOperationException($"Number of segments is incorrect: {segments.Length}, URI: {certificate.SecretId}"); } string secretName = segments[1]; string secretVersion = segments[2]; KeyVaultSecret secret = await mSecretClient.GetSecretAsync(secretName, secretVersion); // For PEM, you'll need to extract the base64-encoded message body. // .NET 5.0 preview introduces the System.Security.Cryptography.PemEncoding class to make this easier. if ("application/x-pkcs12".Equals(secret.Properties.ContentType, StringComparison.InvariantCultureIgnoreCase)) { byte[] pfx = Convert.FromBase64String(secret.Value); return new X509Certificate2(pfx); } throw new NotSupportedException($"Only PKCS#12 is supported. Found Content-Type: {secret.Properties.ContentType}"); }
Editor is loading...