从字符串验证X509Certificate2使用流畅验证

时间:2013-06-24 17:17:31

标签: c# validation fluent-nhibernate saml x509certificate2

我有这个班级

SAMLConfigurationValidator(): AbstractValidator<SAMLConfiguration>
{
  public SAMLConfigurationValidator()
  {
       //some rules....

      //My desired Code

      RuleFor(x => x.Certificate)
              .IsValid().WithMessage("Not a valid certificate");


  }

}

本质上,这需要获取一个字符串(x.Certificate),创建X509Certificate2的实例,然后使用.Verify()或.ChainPolicy方法来确保用户输入的字符串证书是有效的证书。

我对加密很新,我搜索过的大多数案例或示例似乎都在进行更多的用例验证。在这里,我只想检查“用户”输入的证书是否是有效证书。

解决方案:

public class ValidateCertificate 
  {
    public ValidateCertificate() { }


    static X509Certificate2 GenerateCertificate(string cert)
    {
      try
      {
        byte[] rawData = Convert.FromBase64String(cert);
        return new X509Certificate2(rawData);
      }
      catch 
      {
        return null;
      }

    }

    public bool Validate(string certificate)
    {
      var cert = GenerateCertificate(certificate);
      if (cert != null)
        return cert.Verify();
      return false;
    }
  }

你可以打电话

RuleFor(x => validateCertificate.Validate(x.Certificate))
        .Equal(true)
        .WithMessage("Not a valid Certificate.")
        .WithName("Certificate");

1 个答案:

答案 0 :(得分:0)

我已经回答了这个问题,并在原来的问题中做了标记。事实证明,X509Certificate2有一个内置的验证,可以方便验证。

相关问题