2017-03-07 88 views
0

我正在使用MimeKit来验证SMIME multipart签名消息是由特定实体签名的。我有这个实体的公共证书。在MultipartSigned对象上调用Verify(context)时,证书正被导入到服务器证书列表中。我想要的是如果证书没有找到这个错误。否则,如果恶意用户签署了文件,它会通过,更糟糕的是,我最终会安装他的证书。Mimekit在验证时安装证书

我的推理在这里有缺陷吗?

这是我正在使用的代码。

var signed =(MultipartSigned)MimeEntity.Load(ParserOptions.Default,@"C:\mysignedfile.txt"); 

using (var context = new WindowsSecureMimeContext(StoreLocation.LocalMachine)) 
{ 
    foreach (var signature in signed.Verify(context))// This install the certificate! 
    { 
     try 
     { 
      bool valid = signature.Verify(); 
     } 
     catch (DigitalSignatureVerifyException) 
     { 
      throw; 
      // There was an error verifying the signature. 
     }      
    } 
} 

回答

0

在您的证书存储中拥有证书并不意味着它是可信的,它只是意味着它是已知的。

就是这样。

这允许您以后将其标记为可信并且还允许您的系统检查撤销。

+0

同意。我最终添加了额外的代码来检查证书是否可信。谢谢。 – Klaws86