Descriptografia de cartão inteligente CMS

estou a usarCastelo inflável para gerenciar a função Criptografar do meu projeto. Eu consegui usarCMS para criptografar e descriptografar onde ambas as chaves estão armazenadas no meu sistema de arquivos (um.cert e um.p12)

Estas são as duas funções que estou usando:

private static byte[] CmsEncrypt(byte[] message)
{
    var envelopGenerator = new CmsEnvelopedDataGenerator();
    var certificateStream = new FileStream("Test.cer", FileMode.Open, FileAccess.Read);
    var cert = new X509CertificateParser().ReadCertificate(certificateStream);
    envelopGenerator.AddKeyTransRecipient(cert);
    return
        envelopGenerator.Generate(new CmsProcessableByteArray(message), CmsEnvelopedGenerator.DesEde3Cbc)
            .GetEncoded();
}

private static byte[] CmsDecrypt(byte[] encrypted, AsymmetricKeyParameter key, X509Certificate cert)
{
    return new CmsEnvelopedData(encrypted).GetRecipientInfos().GetFirstRecipient(new RecipientID()
    {
        SerialNumber = cert.SerialNumber,
        Issuer = cert.IssuerDN
    }).GetContent(key);
}

Agora tenho que dar um passo à frente. A chave privada deve estar em um cartão inteligente, mas não consigo descobrir realmente o uso doCMS Neste cenário.

Posso inicializar o cartão e descriptografar uma mensagem simples (usando o padrãopkcs11, Encontrei um bom invólucro para c #), mas não consigo encontrar nenhuma pista de como fazerCMS descriptografia com cartão inteligente.

questionAnswers(1)

yourAnswerToTheQuestion