Как установить приватный ключ для CmsSigner в .net 4.8

Я хотел писать Sign метод, но я пишу в .net framework поэтому CmsSigner класс не имеет проперти PrivateKey. как мне устоновить ключ

public byte[] Sign(byte[] messageBytes, string certPemFile, string keyPemFile, bool includeCertificate = false)
{
    // Загружаем сертификат из файла PEM
    var cert = LoadCertificateFromPemFile(certPemFile);

    // Загружаем ключ из файла PEM
    var key = LoadKeyFromPemFile(keyPemFile);

    // Создаем объект CmsSigner, используя сертификат и ключ
    var signer = new CmsSigner(cert);
    signer.PrivateKey = key;




    // Создаем объект ContentInfo, используя сообщение
    var contentInfo = new ContentInfo(messageBytes);

    // Создаем объект SignedCms, используя ContentInfo
    var cms = new SignedCms(contentInfo);

    // Вычисляем подпись, используя CmsSigner
    cms.ComputeSignature(signer);

    // Удаляем сертификат из подписи, если не нужно его включать
    if (includeCertificate is false)
        cms.RemoveCertificate(cert);

    // Возвращаем байты подписи
    return cms.Encode();
}

public static X509Certificate2 LoadCertificateFromPemFile(string certPemFile)
{
    // Читаем содержимое файла PEM
    var certPem = File.ReadAllText(certPemFile);

    // Создаем объект PemReader, используя содержимое файла PEM
    var pemReader = new PemReader(new StringReader(certPem));

    // Читаем объект X509Certificate из PemReader
    var certObject = pemReader.ReadObject();

    // Преобразуем объект X509Certificate в объект X509Certificate2
    var cert = new X509Certificate2(DotNetUtilities.ToX509Certificate(certObject as Org.BouncyCastle.X509.X509Certificate));

    // Возвращаем объект X509Certificate2
    return cert;
}

public static AsymmetricAlgorithm LoadKeyFromPemFile(string keyPemFile)
{
    // Читаем содержимое файла PEM
    var keyPem = File.ReadAllText(keyPemFile);

    // Создаем объект PemReader, используя содержимое файла PEM
    var pemReader = new PemReader(new StringReader(keyPem));

    // Читаем объект AsymmetricKeyParameter из PemReader
    var keyObject = pemReader.ReadObject();

    // Преобразуем объект AsymmetricKeyParameter в объект AsymmetricAlgorithm
    var key = DotNetUtilities.ToRSA(keyObject as RsaPrivateCrtKeyParameters);

    // Возвращаем объект AsymmetricAlgorithm
    return key;
}

Ответы (0 шт):