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.