Um CryptoStream pode ser retornado e ainda ter tudo descartado corretamente?
Se eu tiver umCryptoStream
que eu quero passar de volta para o usuário, a abordagem ingênua seria
public Stream GetDecryptedFileStream(string inputFile, byte[] key, byte[] iv)
{
var fsCrypt = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read);
var rmCrypto = new RijndaelManaged();
var transform = rmCrypto.CreateDecryptor(key, iv);
var cs = new CryptoStream(fsCrypt, transform, CryptoStreamMode.Read);
return cs;
}
Eu sei que quando descartar oCryptoStream
o subjacenteFileStream
também será descartado. O problema que estou enfrentando é o que devo fazer comrmCrypto
etransform
? RijndaelManaged
eICryptoTransform
são classes descartáveis, mas o descarte do fluxo não descarta esses dois objetos.
Qual é a maneira correta de lidar com essa situação?