Получить байтовый массив сертификата шифрования E CC - PullRequest
0 голосов
/ 03 апреля 2020

Я использую самоподписанный сертификат ECDH_secP384r1 для подписи токена. Вот PowerShell, для которого я создаю сертификат:

$Cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname $Certname -NotAfter $ExpireDate -KeyAlgorithm ECDH_secP384r1

Теперь в моем. net основном приложении я сначала загружаю сертификат:

private readonly string _certificateSubjectName;

public X509Certificate2 GetSigningCertificate()
{

    using (var store = new X509Store(StoreLocation.LocalMachine))
    {
        store.Open(OpenFlags.ReadOnly);
        var certificates = store.Certificates.Find(X509FindType.FindBySubjectName, _certificateSubjectName, false);
        return certificates[0];

    }
}

А также я могу получить ECDsa закрытый ключ как

ECDsa privateKey = signingCertificate.GetECDsaPrivateKey();
ECDsa publicKey = signingCertificate.GetECDsaPublicKey()

Но как мне получить байтовый массив этих ключей?

Для Rsa я мог бы использовать:

public byte[] GetPrivateKey(X509Certificate2 certificate)
{
    RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)certificate.PrivateKey;

    MemoryStream memoryStream = new MemoryStream();
    TextWriter streamWriter = new StreamWriter(memoryStream);
    PemWriter pemWriter = new PemWriter(streamWriter);
    AsymmetricCipherKeyPair keyPair = DotNetUtilities.GetRsaKeyPair(rsa);
    pemWriter.WriteObject(keyPair.Private);
    streamWriter.Flush();
    byte[] byteArray = memoryStream.GetBuffer();
    return byteArray;
}

Но как насчет ECDsa? есть идеи?

...