我们的应用程序使用改编自 KeyBasedFileProcessor.cs 的东西解密 pgp 加密的文件,类似于这个。通常,这可以正常工作,但我们遇到了某些文件的问题。有问题的代码如下:
if (message is PgpLiteralData)
{
PgpLiteralData ld = (PgpLiteralData)message;
Stream fOut = File.Create(ld.FileName);
Stream unc = ld.GetInputStream();
Streams.PipeAll(unc, fOut);
fOut.Close();
}
else if (message is PgpOnePassSignatureList)
{
throw new PgpException("encrypted message contains a signed message - not literal data.");
}
else
{
// the code goes here and throw this exception, when I debug, message is of type PgpMarker
throw new PgpException("message is not a simple encrypted file - type unknown.");
}
在这部分,我相信代码需要 PgpLiteralData。但是我们得到了 PgpMarker,这会导致抛出异常。为什么会有 PgpMarker?如何找到 PgpLiteralData 代替?